響應式瀑布流程式碼例項
分享一段程式碼例項,它實現了響應式瀑布流效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css" media="screen"> #wrap li { list-style: none; margin: 10px; border: 2px solid gray; position: absolute; font-size: 100px; text-align: center; width: 200px; transition: all .5s; } </style> </head> <body> <ul id="wrap"></ul> <script type="text/javascript"> var wrap = document.querySelector("#wrap"); //生成隨機高度 function rand(min, max) { return parseInt(Math.random() * (max - min) + min); } var colsArr = []; //定義一個陣列 存放每一列的高度 //得到當前視窗下的總列數 function getCols() { colsArr = []; var wWidth = document.body.clientWidth; //得到總列數 var cols = parseInt(wWidth / (200 + 10)); for (var i = 0; i < cols; i++) { colsArr.push(0); } } getCols(); //建立一個LI 追加到父元素中 function createLi(index) { var li = document.createElement("li"); var num = rand(100, 200); li.style.height = num + "px"; li.style.lineHeight = num + "px"; li.innerHTML = index; wrap.appendChild(li); setPos(li); } //計算LI所在的實際位置 function setPos(li) { //初始下標為0 var minIndex = 0; var minHeight = colsArr[minIndex]; //colsArr = [0,0,0,] for (var i = 0; i < colsArr.length; i++) { if (minHeight > colsArr[i]) { minIndex = i; minHeight = colsArr[i]; } } li.style.top = minHeight + "px"; li.style.left = minIndex * (200 + 10) + "px"; colsArr[minIndex] += li.clientHeight; } var count = 1; function _run(num) { num ? num : num = 20; for (var i = 0; i < num; i++) { createLi(count++); } } _run(); //監聽滾動事件 window.onscroll = function () { //得到滾動距離 var sHeight = document.documentElement.scrollTop || document.body.scrollTop; //得到總的高度 含滾動長的距離 var aHeight = document.body.scrollHeight; //得到頁面的視口高度 var cHeight = document.documentElement.clientHeight || document.body.clientHeight; console.log(sHeight, aHeight, cHeight); //如果視口高度 + 滾動距離 超過了 總高度 則追加下X條 if (cHeight + sHeight >= aHeight) { _run(30); } } window.onresize = function () { getCols(); var lis = document.querySelectorAll("li"); for (var i = 0; i < lis.length; i++) { setPos(lis[i]); } } </script> </body> </html>
相關文章
- jQuery瀑布流佈局程式碼例項jQuery
- jquery隨機瀑布流簡單程式碼例項jQuery隨機
- 響應式佈局程式碼例項
- 響應式佈局簡單程式碼例項
- 響應式導航選單程式碼例項
- css3實現的瀑布流佈局程式碼例項CSSS3
- js下拉滾動條瀑布流載入資料程式碼例項JS
- CSS 例項系列 - 05 - Photo Album 瀑布流相簿CSS
- js DSL流暢介面(使用鏈式呼叫)例項程式碼JS
- hasOwnProperty()函式程式碼例項函式
- localStorage應用程式碼例項
- @media響應式程式碼片段
- 瀑布流佈局實現程式碼詳解
- 機器學習 - 似然函式:概念、應用與程式碼例項機器學習函式
- Vue 原始碼解析(例項化前) - 響應式資料的實現原理Vue原始碼
- Vue 原始碼解析(例項化前) – 響應式資料的實現原理Vue原始碼
- opacity應用程式碼例項
- 學習之響應式Web設計---一個例項Web
- jQuery css()函式使用程式碼例項jQueryCSS函式
- js冪函式程式碼例項分享JS函式
- onfocus和onblur應用程式碼例項
- iframe高度自適應程式碼例項
- <iframe>高度自適應程式碼例項
- Object.defineProperty()應用程式碼例項Object
- css樣式初始化程式碼例項CSS
- 匹配中文正規表示式程式碼例項
- jQuery鏈式呼叫簡單例項程式碼jQuery單例
- js confirm()函式用法程式碼例項JS函式
- jquery的filter()函式用法程式碼例項jQueryFilter函式
- 樣式初始化程式碼例項分享
- 蜂巢式導航選單程式碼例項
- javascript函式節流程式碼例項分享JavaScript函式
- 原生ajax()函式封裝程式碼例項函式封裝
- 響應式程式設計與響應式系統程式設計
- 文字框高度自適應例項程式碼
- css3 calc()應用程式碼例項CSSS3
- js實現開啟應用程式程式碼例項JS
- js呼叫執行exe應用程式程式碼例項JS