国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

js實(shí)現(xiàn)瀑布流布局(無(wú)限加載)

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

本文實(shí)例為大家分享了js實(shí)現(xiàn)瀑布流布局的具體代碼,供大家參考,具體內(nèi)容如下

1.實(shí)現(xiàn)瀑布流布局思路

準(zhǔn)備好數(shù)據(jù)之后

. 綁定滾動(dòng)事件. 判斷頁(yè)面是否到底(滾動(dòng)的距離+可是區(qū)域的高度 == 最后一個(gè)元素的top). 加載新數(shù)據(jù),渲染新頁(yè)面.重新執(zhí)行瀑布流效果

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

<!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://www.cgvv.com.cn/bcjs/data/data.js'></script> <script> // W1. 準(zhǔn)備數(shù)據(jù) // W2. 綁定滾動(dòng)事件 // W3. 判斷頁(yè)面是否到底(滾動(dòng)的距離+可是區(qū)域的高度 == 最后一個(gè)元素的top) // W4. 加載新數(shù)據(jù),渲染新頁(yè)面 // W5. 重新執(zhí)行瀑布流效果 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.補(bǔ)全布局 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 = []; // 重新渲染瀑布流結(jié)構(gòu) this.firstLine(); this.otherLine(); } init(){ // 計(jì)算一行最多能放幾個(gè),再計(jì)算最大寬度 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. 區(qū)分第一行 this.firstLine() // 4. 區(qū)分其他行 this.otherLine(); } firstLine(){ // 5. 獲取所有元素的高度,存起來(lái) 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) // 計(jì)算最小值和最小值的索引 // 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. 設(shè)置元素的定位 this.box[i].style.position = 'absolute'; // 8. 設(shè)置元素的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){ // 先對(duì)數(shù)組進(jìn)行截取(為了深拷貝) // 然后對(duì)截取出的新數(shù)組排序 // 找第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://www.cgvv.com.cn/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/10.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/10.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/4.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/2.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/3.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/5.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/1.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/6.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/7.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/8.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/9.jpg' alt=''> </div> </div> <div class='box'> <div class='imgbox'> <img src='http://www.cgvv.com.cn/imgs/10.jpg' alt=''> </div> </div> </div></body></html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 九一国产精品视频 | 一级性片| 日韩国产欧美在线观看一区二区 | 国产亚洲区 | 日韩视频在线观看一区二区 | 日本黄网站高清色大全 | 久久综合亚洲一区二区三区 | 三级网站在线 | 久久国产精品久久久久久 | 亚洲国产欧美精品 | 伊人久色 | 久久国产精品二国产精品 | 亚洲精品国产男人的天堂 | 韩日一级毛片 | 国产成人久久精品二区三区牛 | 精品一区二区三区四区在线 | 8050网午夜一级毛片免费不卡 | 国产乱淫a∨片免费视频 | 一级毛片免费观看视频 | 亚洲国产欧美在线人成aaa | 九九精品激情在线视频 | 国产韩国精品一区二区三区久久 | 男人天堂男人天堂 | 97视频免费上传播放 | 精品久久久久久久久免费影院 | 亚欧国产| 国产亚洲欧美精品久久久 | 国产五区 | avtt加勒比手机版天堂网 | 国产91免费| 欧美丝袜xxxxx在线播放 | 日韩在线播放中文字幕 | 影音先锋色先锋女同另类 | 日韩精品一区二区三区视频 | 午夜欧美成人久久久久久 | 免费看裸色 | 亚洲精品一区二区三区在 | 成年人免费在线观看网站 | 玖玖精品视频在线观看 | 男女视频免费观看 | 加勒比一本一道在线 |