js实现瀑布流

js实现瀑布流

html


  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4.     <meta charset="UTF-8">
  5.     <link href="css/style.css" rel="stylesheet">
  6.     <title>瀑布流</title>
  7. </head>
  8. <body>
  9. <div id="container">
  10.     <div class="box">
  11.         <div class="box_img">
  12.             <img src="images/1.jpg">
  13.         </div>
  14.     </div>
  15.     <div class="box">
  16.         <div class="box_img">
  17.             <img src="images/2.jpg">
  18.         </div>
  19.     </div>
  20.     <div class="box">
  21.         <div class="box_img">
  22.             <img src="images/3.jpg">
  23.         </div>
  24.     </div>
  25.     <div class="box">
  26.         <div class="box_img">
  27.             <img src="images/4.jpg">
  28.         </div>
  29.     </div>
  30.     <div class="box">
  31.         <div class="box_img">
  32.             <img src="images/5.jpg">
  33.         </div>
  34.     </div>
  35.     <div class="box">
  36.         <div class="box_img">
  37.             <img src="images/6.jpg">
  38.         </div>
  39.     </div>
  40.     <div class="box">
  41.         <div class="box_img">
  42.             <img src="images/7.jpg">
  43.         </div>
  44.     </div>
  45.     <div class="box">
  46.         <div class="box_img">
  47.             <img src="images/8.jpg">
  48.         </div>
  49.     </div>
  50.     <div class="box">
  51.         <div class="box_img">
  52.             <img src="images/9.jpg">
  53.         </div>
  54.     </div>
  55.     <div class="box">
  56.         <div class="box_img">
  57.             <img src="images/10.jpg">
  58.         </div>
  59.     </div>
  60.     <div class="box">
  61.         <div class="box_img">
  62.             <img src="images/11.jpg">
  63.         </div>
  64.     </div>
  65. </div>
  66. <script src="js/jswrapller.js"></script>
  67. </body>
  68. </html>

jswrapller.js


  1. /**
  2.  * Created by davidtall on 14/12/16.
  3.  */
  4. window.onload = function () {
  5.     imgLocation("container""box");
  6.     var imgData={"data":[{"src":"11.jpg"},{"src":"12.jpg"},{"src":"13.jpg"},{"src":"14.jpg"},{"src":"15.jpg"}
  7.         ,{"src":"16.jpg"},{"src":"17.jpg"},{"src":"18.jpg"},{"src":"19.jpg"}]};
  8.     var container = document.getElementById("container");
  9.     window.onscroll = function () {
  10.         if (checkFlag()) {
  11.             for(var i=0;i<imgData.data.length;i++){
  12.                 console.log(i);
  13.                 var box =document.createElement("div");
  14.                 box.className="box";
  15.                 container.appendChild(box);
  16.                 var box_img =document.createElement("div");
  17.                 box_img.className="box_img";
  18.                 box.appendChild(box_img);
  19.                 var imgdocument.createElement("img");
  20.                 img.src="images/"+imgData.data[i].src;
  21.                 box_img.appendChild(img);
  22.             }
  23.         }
  24.         imgLocation("container","box");
  25.     }
  26. }
  27. function checkFlag() {
  28.     var container = document.getElementById("container");
  29.     var boxs = document.getElementsByClassName("box");
  30.     var lastContentHeight = boxs[boxs.length - 1].offsetTop;
  31.     var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  32.     var pageHeight = document.documentElement.clientHeight || document.body.clientHeight;
  33.    // console.log(lastContentHeight + ":" + scrollTop + ":" + pageHeight);
  34.     return scrollTop + pageHeight > lastContentHeight;
  35. }
  36. function imgLocation(parentcontent) {
  37.     var container = document.getElementById("container");
  38.     var boxs = document.getElementsByClassName("box");
  39.     var imgWidth = boxs[0].offsetWidth;
  40.     //console.log(imgWidth);
  41.     var num = Math.floor(document.documentElement.clientWidth / imgWidth);
  42.     var container = document.getElementById(parent);
  43.     container.style.cssText = "width:" + imgWidth * num + "px; margin: 0 auto;";
  44.     var boxsHeightArr=[];
  45.     for(var i=0;i<boxs.length;i++){
  46.         if(i<num){
  47.             boxsHeightArr[i]=boxs[i].offsetHeight;
  48.         }else{//第二行开始使用绝对布局对图片进行定位
  49.             var minHeight=Math.min.apply(null,boxsHeightArr);
  50.             var minIndex=getminHeightIndex(boxsHeightArr,minHeight);
  51.             boxs[i].style.position="absolute";
  52.             boxs[i].style.top=minHeight+"px";
  53.             boxs[i].style.left=boxs[minIndex].offsetLeft+"px";
  54.             boxsHeightArr[minIndex]= boxsHeightArr[minIndex]+boxs[i].offsetHeight;
  55.         }
  56.     }
  57. }
  58. //取得最低高度的img的索引值
  59. function getminHeightIndex(boxsHeightArr,minHeight){
  60.     forvar i in boxsHeightArr){
  61.         if(boxsHeightArr[i]== minHeight)
  62.         return i;
  63.     }
  64. }






posted @ 2014-12-28 19:09  davidtall  阅读(122)  评论(0编辑  收藏  举报