日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

js實現瀑布流布局(無限加載)

瀏覽:172日期:2024-04-03 13:55:40

本文實例為大家分享了js實現瀑布流布局的具體代碼,供大家參考,具體內容如下

1.實現瀑布流布局思路

準備好數據之后

. 綁定滾動事件. 判斷頁面是否到底(滾動的距離+可是區域的高度 == 最后一個元素的top). 加載新數據,渲染新頁面.重新執行瀑布流效果

2.代碼(更換圖片路徑之后可直接運行)

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title>Document</title> <style> .cont{margin: 0 auto;background: #ccc;position: relative;} .cont::after{content: '';display: block;clear: both;} .box{float: left;padding: 6px;} .imgbox{border: solid 1px black;padding: 6px;border-radius: 6px;} .imgbox img{width: 200px;display: block;} </style> <script src='http://m.b3g6.com/bcjs/data/data.js'></script> <script> // W1. 準備數據 // W2. 綁定滾動事件 // W3. 判斷頁面是否到底(滾動的距離+可是區域的高度 == 最后一個元素的top) // W4. 加載新數據,渲染新頁面 // W5. 重新執行瀑布流效果 onload = function(){ new Waterfall; } class Waterfall{ constructor(){ // 1.選擇元素 this.box = document.querySelectorAll('.box'); this.cont = document.querySelector('.cont'); this.clientH = document.documentElement.clientHeight; this.heightArr = []; // 2.補全布局 this.init(); this.addEvent(); } addEvent(){ var that = this; onscroll = function(){ var scrollT = document.documentElement.scrollTop; if(that.clientH + scrollT > that.scrollH-300){ that.render() } } } render(){ for(var i=0;i<data.length;i++){ var img = document.createElement('img') img.src = data[i].src; var imgbox = document.createElement('div') imgbox.className = 'imgbox'; var box = document.createElement('div') box.className = 'box'; imgbox.appendChild(img); box.appendChild(imgbox); this.cont.appendChild(box); } // 初始化所有 this.box = document.querySelectorAll('.box'); this.heightArr = []; // 重新渲染瀑布流結構 this.firstLine(); this.otherLine(); } init(){ // 計算一行最多能放幾個,再計算最大寬度 this.clientW = document.documentElement.clientWidth; this.boxW = this.box[0].offsetWidth; this.maxNum = parseInt(this.clientW / this.boxW) this.cont.style.width = this.boxW * this.maxNum + 'px'; // 3. 區分第一行 this.firstLine() // 4. 區分其他行 this.otherLine(); } firstLine(){ // 5. 獲取所有元素的高度,存起來 for(var i=0;i<this.maxNum;i++){ this.heightArr.push(this.box[i].offsetHeight); } } otherLine(){ for(var i=this.maxNum;i<this.box.length;i++){ // 6. 拿到第一行所有的高度 // console.log(this.heightArr) // 計算最小值和最小值的索引 // var min = getMin(this.heightArr); // var min = Math.min.apply(null,this.heightArr); var min = Math.min(...this.heightArr); var minIndex = this.heightArr.indexOf(min); // console.log(minIndex); // 7. 設置元素的定位 this.box[i].style.position = 'absolute'; // 8. 設置元素的top和left this.box[i].style.top = min + 'px'; this.box[i].style.left = minIndex * this.boxW + 'px'; // 9. 修改最小值 this.heightArr[minIndex] += this.box[i].offsetHeight; } this.scrollH = document.documentElement.scrollHeight; } } function getMin(arr){ // 先對數組進行截取(為了深拷貝) // 然后對截取出的新數組排序 // 找第0位 // 返回出去 return arr.slice(0).sort((a,b)=>a-b)[0]; } </script></head><body> <div class='cont'> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/10.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/10.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://m.b3g6.com/imgs/10.jpg' alt=''> </div> </div> </div></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产在线观看www| 亚洲我射av| 亚洲自啪免费| 久久国产毛片| 色综合www| av在线资源| 久久久天天操| 免费观看不卡av| 亚洲黄色在线| 老鸭窝亚洲一区二区三区| 亚洲国产日韩欧美在线| 欧美~级网站不卡| 国产不卡精品在线| 高清av一区| 欧产日产国产精品视频| 正在播放日韩精品| 激情偷拍久久| 爽好多水快深点欧美视频| 亚洲精品美女| 亚洲一级淫片| 91精品国产自产精品男人的天堂 | 伊人成人在线视频| 欧美日韩国产高清| 亚洲精品亚洲人成在线观看| 国产欧美综合一区二区三区| 久久狠狠亚洲综合| 成人小电影网站| 亚洲一区网站| 日韩激情精品| 成人免费电影网址| 青青草国产精品亚洲专区无| 久久男人av| 亚洲综合三区| 国产精品二区影院| 午夜精品影院| 久久久91麻豆精品国产一区| 伊人久久大香线蕉av不卡| 欧美专区18| 黑森林国产精品av| 91精品啪在线观看国产爱臀| 日韩久久一区二区三区| 日本欧美一区| 国产精品视区| 国产成人1区| 国产亚洲欧美日韩精品一区二区三区| 国产乱码午夜在线视频| 日韩av中文字幕一区二区| 波多野结衣久久精品| 青青草视频一区| 美女精品网站| 影视先锋久久| 四虎884aa成人精品最新| 卡一卡二国产精品| 日本va欧美va精品发布| 亚洲一区av| 亚洲女同av| 久久麻豆视频| 亚洲开心激情| 成人午夜国产| 欧产日产国产精品视频| 久久精品资源| 欧美极品中文字幕| 国产精品宾馆| 国产无遮挡裸体免费久久| 亚洲精品极品| 亚洲三级观看| 日精品一区二区三区| 日韩精品水蜜桃| 色婷婷亚洲mv天堂mv在影片| 欧美黄色一区二区| 国产精品一区2区3区| 国产女人18毛片水真多18精品| 亚洲精品欧美| 欧美日韩a区| 国产精品自拍区| 欧美激情五月| av免费不卡国产观看| 在线天堂资源www在线污| 日韩综合精品| 欧美91视频| 水蜜桃久久夜色精品一区的特点 | 亚洲在线免费| 日韩一区二区三免费高清在线观看 | 精品视频在线观看网站| 国产精品99一区二区三区| 青青久久av| 免播放器亚洲一区| 欧美精品97| 国产一在线精品一区在线观看| 午夜在线精品偷拍| bbw在线视频| 日本久久精品| 噜噜噜久久亚洲精品国产品小说| 青草av.久久免费一区| 日韩中文字幕在线一区| 国产精品尤物| 亚洲高清毛片| 国产欧美日韩| 欧美丝袜一区| 国产乱人伦丫前精品视频| 国内亚洲精品| 国产精品一区二区av日韩在线| 亚洲91精品| 日本不卡高清视频| 88xx成人免费观看视频库| 丝袜脚交一区二区| 日韩视频网站在线观看| 亚洲小说春色综合另类电影| 日本欧美在线| 国产亚洲永久域名| 精品五月天堂| 亚洲精品激情| 精品中文一区| 国产一区二区三区日韩精品| 美美哒免费高清在线观看视频一区二区 | 免费看久久久| 精品一区二区三区中文字幕| 亚洲乱码久久| 美女亚洲一区| 成人精品天堂一区二区三区| 久久影视三级福利片| 亚洲1区在线观看| 一区二区自拍| 欧美日中文字幕| 亚洲爱爱视频| 蜜臀国产一区| 激情综合婷婷| 美女视频免费精品| 国产精品.xx视频.xxtv| 亚洲精品黄色| 日韩欧美高清一区二区三区| 免费观看在线色综合| 亚洲人成亚洲精品| 国产欧美日韩综合一区在线播放| 日本a口亚洲| 国产激情精品一区二区三区| 欧美私人啪啪vps| 国产精品午夜av| 高清一区二区三区av| 高潮一区二区| 国产毛片久久| 日韩免费精品| 精品国产美女a久久9999| 美国三级日本三级久久99| 久久av一区| 国产亚洲一级| 免费在线看一区| 日韩精品一二三四| 综合亚洲色图| 视频一区日韩精品| 美女精品在线观看| 91精品高清| 欧洲激情综合| 亚洲欧美视频| 久久成人一区| 色综合视频一区二区三区日韩 | 青青久久av| 欧美日韩一二三四| 一区二区三区视频免费观看| 精品日韩视频| 日韩午夜高潮| 亚洲v天堂v手机在线| 日本午夜精品视频在线观看| 欧美日韩网址| 欧美国产亚洲精品| 精品国产乱码久久久久久樱花 | 免费观看久久av| 免费成人在线影院| 日韩成人一级| 国产精品亚洲片在线播放| 高清久久精品| 九一精品国产| 国产伦乱精品| 久久久夜夜夜| 不卡视频在线| 日韩国产欧美一区二区三区| 精品久久久中文字幕| 2023国产精品久久久精品双| 国产乱子精品一区二区在线观看| 久久精品在线| 91成人在线网站| 91九色精品| 久久一区视频| 亚洲欧美日韩视频二区| 国产精品激情| 一区二区三区国产在线| 国产精品夜夜夜| 免费在线视频一区| 99久久精品费精品国产| 国产日产一区| 婷婷成人基地| 亚洲深夜视频| 嫩草伊人久久精品少妇av杨幂| 亚洲视频播放| 九一成人免费视频| 日本在线高清| 日韩精品亚洲aⅴ在线影院| 国产精品毛片一区二区三区| 成人国产精品久久| 视频精品一区二区|