最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年09月10日 15:33:56   作者:噢,我明白了  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)瀑布流布局,無限加載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

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

. 綁定滾動(dòng)事件
. 判斷頁面是否到底(滾動(dòng)的距離+可是區(qū)域的高度 == 最后一個(gè)元素的top)
. 加載新數(shù)據(jù),渲染新頁面
.重新執(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="data/data.js"></script>
 <script>
 // W1. 準(zhǔn)備數(shù)據(jù)
 // W2. 綁定滾動(dòng)事件
  // W3. 判斷頁面是否到底(滾動(dòng)的距離+可是區(qū)域的高度 == 最后一個(gè)元素的top)
  // W4. 加載新數(shù)據(jù),渲染新頁面
  // 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. 獲取所有元素的高度,存起來
  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="../imgs/4.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/2.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/3.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/5.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/1.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/6.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/7.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/8.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/9.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/10.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/4.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/2.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/3.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/5.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/1.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/6.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/7.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/8.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/9.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/10.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/4.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/2.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/3.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/5.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/1.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/6.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/7.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/8.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/9.jpg" alt="">
  </div>
 </div>
 <div class="box">
  <div class="imgbox">
  <img src="../imgs/10.jpg" alt="">
  </div>
 </div>
 </div>
</body>
</html>

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

相關(guān)文章

  • JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法示例【不上傳圖片】

    JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法示例【不上傳圖片】

    這篇文章主要介紹了JS實(shí)現(xiàn)的圖片預(yù)覽插件與用法,基于自定義插件uploadPreview.js實(shí)現(xiàn)圖片的預(yù)覽功能,不需要進(jìn)行圖片的上傳,非常簡(jiǎn)便實(shí)用,需要的朋友可以參考下
    2016-11-11
  • 兼容IE與Firefox的js 復(fù)制代碼

    兼容IE與Firefox的js 復(fù)制代碼

    這是一段點(diǎn)擊復(fù)制的代碼,現(xiàn)在我的頁面里不僅有1個(gè)鏈接需要用到這段代碼。請(qǐng)哪位好心人指教一下應(yīng)該怎么用ID對(duì)應(yīng)的方式來改寫這段js,使它實(shí)現(xiàn)一個(gè)點(diǎn)擊復(fù)制對(duì)應(yīng)1個(gè)相應(yīng)內(nèi)容
    2009-12-12
  • JavaScript中的scrollTop詳解(滾動(dòng)到頂部)

    JavaScript中的scrollTop詳解(滾動(dòng)到頂部)

    scrollTop是JavaScript中一個(gè)非常有用且重要的方法,它用于獲取或設(shè)置元素的垂直滾動(dòng)條位置,這篇文章主要給大家介紹了關(guān)于JavaScript中scrollTop詳解(滾動(dòng)到頂部)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • DWR3 訪問WEB元素的兩種方法實(shí)例詳解

    DWR3 訪問WEB元素的兩種方法實(shí)例詳解

    這篇文章主要介紹了DWR3 訪問WEB元素的兩種方法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Knockoutjs 學(xué)習(xí)系列(一)ko初體驗(yàn)

    Knockoutjs 學(xué)習(xí)系列(一)ko初體驗(yàn)

    本篇主要簡(jiǎn)單介紹了knockoutjs中最重要的概念:可觀察對(duì)象(數(shù)組)。非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友快來圍觀吧
    2016-06-06
  • 基于bootstrap風(fēng)格的彈框插件

    基于bootstrap風(fēng)格的彈框插件

    這篇文章主要為大家詳細(xì)介紹了基于bootstrap風(fēng)格的彈框插件,適用于確認(rèn)框、提示框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS鼠標(biāo)事件大全 推薦收藏

    JS鼠標(biāo)事件大全 推薦收藏

    JS鼠標(biāo)事件大全 推薦收藏,整理的比較細(xì),推薦大家看下。
    2011-11-11
  • 微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    這篇文章主要介紹了微信小程序淘寶首頁雙排圖片布局排版代碼,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 使用JS正則表達(dá)式 替換括號(hào),尖括號(hào)等

    使用JS正則表達(dá)式 替換括號(hào),尖括號(hào)等

    下面小編就為大家?guī)硪黄褂肑S正則表達(dá)式 替換括號(hào),尖括號(hào)等。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • 微信小程序?qū)崙?zhàn)之網(wǎng)易云音樂歌曲詳情頁實(shí)現(xiàn)代碼

    微信小程序?qū)崙?zhàn)之網(wǎng)易云音樂歌曲詳情頁實(shí)現(xiàn)代碼

    本文給大家介紹了微信小程序?qū)W習(xí)記錄之網(wǎng)易云音樂歌曲詳情頁代碼實(shí)現(xiàn),代碼分為html、css和js部分,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

万荣县| 吴江市| 揭阳市| 疏勒县| 赣州市| 类乌齐县| 卓尼县| 繁峙县| 安岳县| 宜丰县| 鄯善县| 增城市| 阿城市| 靖州| 姜堰市| 阿克| 黄梅县| 湘潭县| 晋中市| 肇庆市| 图们市| 华坪县| 迁安市| 修水县| 潢川县| 潼南县| 中西区| 荔波县| 江华| 日土县| 平乐县| 和政县| 屏山县| 怀宁县| 赤峰市| 图们市| 海林市| 时尚| 红安县| 芦山县| 宁国市|