今天学习了一个瀑布流加载效果,很多网站都有瀑布流效果,瀑布流就是很多产品显示在网页上,宽相同,高度不同,表现为多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。
原理是:
1.设定一行中的列数;
2.取第一行中每一个div的高度并把每一个高度放进一个数组中;
3.算出数组中最小高度的index值;
4.把第二行的第一个div放到最小高度的div的下方并把重新算出的高度值放进数组中,重新计算最小高度的index值;
5.以此类推实现多栏布局的瀑布流效果;
6.如果最后一张div的高度已滚动出现在底部时创建新的div添加到最后一张的后面,不断循环以达到加载效果;接下来代码实现。
<div id="main"> <div class="box"> <div class="Pic"> <img src="/UploadFiles/2021-04-02/0.jpg">*{padding: 0;margin: 0;} #main{ width: 1000px; margin: 0 auto; position: relative; } .box{ display: inline-block; float: left; padding: 10px 0 0 10px; } .Pic{ border: 1px #ccc solid; padding: 10px; border-radius: 8px; } .Pic img{ width: 162px; }js代码:
<script> window.onload=function(){ waterFall('main','box'); var dataInt={ "data":[{"src":"0.jpg"},{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"}] }; /*滚动条滚动时触发的事件*/ window.onscroll=function(){ if(checkIsSlide()){ //结果返回是true则执行 var omain=document.getElementById('main'); /*添加div到页面上*/ for(var l=0;l<dataInt.data.length;l++){ var box=document.createElement('div'); box.className="box"; omain.appendChild(box); var pic=document.createElement('div'); pic.className='Pic'; box.appendChild(pic); var oimg=document.createElement('img'); oimg.src="/UploadFiles/2021-04-02/">以上所述是小编给大家介绍的利用JS实现简单的瀑布流加载图片效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!