html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>瀑布流布局JS</title> <link rel="stylesheet" href="index.css"> <script src="../http_code.jquery.com_jquery-2.0.0.js"></script> </head> <body> <div id="main"> <div class="box"> <div class="pic"> <img src="images/0.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/1.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/2.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/3.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/4.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/5.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/6.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/7.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/8.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/9.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/10.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/11.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/12.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/13.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/14.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/15.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/16.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/17.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/18.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/19.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/20.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/21.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/22.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/23.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/24.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/25.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/26.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/27.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/28.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/29.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/30.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/31.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/32.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/90.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/33.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/34.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/35.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/36.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/37.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/38.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/39.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/40.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/41.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/42.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/43.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/44.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/45.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/56.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/47.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/48.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/49.jpg" alt=""> </div> </div> <div class="box"> <div class="pic"> <img src="images/50.jpg" alt=""> </div> </div> </div> <script src="app.js"></script> </body> </html>
css代码
*{ margin:0; padding: 0; } #main{ position: relative; } .box{ padding: 15px 0 0 15px; float: left; } .pic{ padding: 10px; border: 1px solid #cccccc; border-radius: 5px; box-shadow: 0 0 5px #cccccc; } .pic img{ width: 165px; height: auto; }
js 代码
/** * Created by mac on 16/8/19. */ window.onload=function () { waterfall('main','box'); }; function waterfall(parent,box) { //取出main下的class为box取出来 var oParent=document.getElementById('main'); var oBoxs=getByClass(oParent,box); // console.log(oBoxs.length) //计算整个页面的显示列数 页面宽/box宽 var oBoxW=oBoxs[0].offsetWidth; var cols=Math.floor(document.documentElement.clientWidth/oBoxW); oParent.style.cssText='width:'+oBoxW*cols+'px:margin:0 auto'; var hArr=[]; for(var i=0;i<oBoxs.length;i++){ if(i<cols){ hArr.push(oBoxs[i].offsetHeight); }else{ var minH=Math.min.apply(null,hArr); // console.log(minH) var index= getMinhIndex(hArr,minH); oBoxs[i].style.position='absolute'; oBoxs[i].style.top=minH+'px'; oBoxs[i].style.left=oBoxW*index+'px'; hArr[index]+=oBoxs[i].offsetHeight; } } } //根据class获取元素 function getByClass(parent,clsName) { var boxArr=new Array();//存储class为box的元素 var oElements=parent.getElementsByTagName('*'); for(var i=0;i<oElements.length;i++){ if(oElements[i].className==clsName){ boxArr.push(oElements[i]); } } return boxArr; } function getMinhIndex(arr,val) { for(var i in arr){ if(arr[i]==val){ return i; } } }