本文主要为大家详细介绍了js实现瀑布流布局效果展示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
html部分
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>瀑布流布局</title> <script src="wallpoll.js"></script> <link rel="stylesheet" href="wallpoll.css" rel="external nofollow" > </head> <body> <p id="main"> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> <p class="box"> <p class="pic"> @@##@@ </p> </p> </p> </body> </html>
css部分
*{ padding:0px; margin:0px; } .main{ position:relative; } .box{ padding:15px 0 0 10px; float:left; } .pic{ padding:10px; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 0 5px #ccc; /*float:left;*/ } img{ width:170px; height:auto; }
JS部分
window.onload=function(){ waterfall('main','box'); var dataInt={"data":[{"src":"0.jpg"},{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"}]} window.onscroll=function(){ if(checkScrollSlide){ for(var i=0;i<dataInt.data.length;i++){ var oparent=document.getElementById("main"); var box=document.createElement("p"); box.className="box"; oparent.appendChild(box); var pic=document.createElement("p"); pic.className="pic"; box.appendChild(pic); var img=document.createElement("img"); img.src="wallpoll/"+dataInt.data[i].src; pic.appendChild(img); } } waterfall('main','box'); } } function waterfall(parent,child){ var oparent=document.getElementById(parent); var boxs=oparent.getElementsByClassName(child); var boxw=boxs[0].offsetWidth; var cols=Math.floor(document.documentElement.clientWidth/boxw); oparent.style.cssText="width:"+cols*boxw+"px;margin:0 auto"; var harr=new Array(); for(var i=0;i<boxs.length;i++){ if(i<cols){ harr.push(boxs[i].offsetHeight); }else{ var minH=Math.min.apply(null,harr); var index=getMinhIndex(harr,minH); boxs[i].style.position="absolute"; boxs[i].style.top=minH+"px"; boxs[i].style.left=boxs[index].offsetLeft+"px"; harr[index]+=boxs[i].offsetHeight; } } } function getMinhIndex(arr,val){ for(var i in arr){ if(arr[i]===val){ return i; } } } function checkScrollSlide(){ var oparent=document.getElementById("main"); var boxs=oparent.getElementsByClassName("box"); var lastBox=boxs[boxs.length-1]; var height=lastBox.offsetTop+Math.floor(lastBox.offsetHeight/2); var scrollHeigth=document.documentElement.scrollTop || document.body.scrollTop; // console.log(scrollHeigth); var seeHeigth=document.documentElement.clientHeigth || document.body.clientHeigth; return seeHeigth+scrollHeigth>height?true:false; }
相关推荐:
以上就是JS实现瀑布流布局实例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号