zoukankan      html  css  js  c++  java
  • js-瀑布流

     1 <!DOCTYPE html>  
     2 <html>  
     3 <head>  
     4 <meta charset="utf-8" />  
     5 <title>简易瀑布流</title>  
     6 <style type="text/css">  
     7     *{margin: 0;padding: 0;list-style: none;}  
     8     #list{width: 1110px;margin: 0 auto;}  
     9     #list li{width: 212px;float: left;padding: 5px;}  
    10     .div{border: 1px solid #333;padding: 5px;margin-bottom: 10px;}  
    11     .img{width: 200px;display: block;}  
    12 </style>  
    13   
    14 <script type="text/javascript">  
    15 window.onload=function (){  
    16 
    17 /*实现:5个li分成5列,通过判断当前哪一个li高度最小,然后把div插入到那个li里面*/  
    18 
    19     var oList=document.getElementById('list');  
    20     var aLi=oList.getElementsByTagName('li');  
    21     var flag=true;  
    22     var json={  
    23         'data':[  
    24             {'src':'img/1.jpg'},{'src':'img/2.jpg'},{'src':'img/3.jpg'},  
    25             {'src':'img/4.jpg'},{'src':'img/5.jpg'},{'src':'img/6.jpg'},  
    26             {'src':'img/7.jpg'},{'src':'img/8.jpg'},{'src':'img/9.jpg'},  
    27             {'src':'img/10.jpg'},{'src':'img/11.jpg'},{'src':'img/12.jpg'}  
    28         ],  
    29         'imgH':[  
    30             {'height':'232px'},{'height':'264px'},{'height':'300px'},  
    31             {'height':'289px'},{'height':'267px'},{'height':'278px'},  
    32             {'height':'300px'},{'height':'234px'},{'height':'271px'},  
    33             {'height':'251px'},{'height':'363px'},{'height':'333px'}  
    34         ]  
    35     }  
    36     getLoad();  
    37     function getLoad(){  
    38             for (var i=0;i<json.data.length;i++) {  
    39                 var min=myMin();  
    40                 var oDiv=document.createElement('div');  
    41                 oDiv.className='div';  
    42                 var oImg=document.createElement('img');  
    43                 oImg.className='img';  
    44                 oImg.src=json.data[i].src;  
    45                 /*这里必须要设置高度,测试中发现js会把每一个节点、属性  
    46                 创建好,然后再加载入图片,不设置一开始就不能比较li的高度*/  
    47                 oImg.style.height=json.imgH[i].height;  
    48                 oDiv.appendChild(oImg);  
    49                 //高度最小的li插入div  
    50                 aLi[min].appendChild(oDiv);  
    51             }  
    52             flag=true;  
    53     }  
    54     //获取到当前li高度最小的索引  
    55     function myMin(){  
    56         var index=0;  
    57         var min=aLi[index].offsetHeight;  
    58         for (var i=1;i<aLi.length;i++) {  
    59             if(aLi[i].offsetHeight<min){  
    60                 index=i;  
    61                 min=aLi[index].offsetHeight;  
    62             }  
    63         }  
    64         return index;  
    65     }  
    66     window.onscroll=function (){  
    67         var scroT=document.documentElement.scrollTop||document.body.scrollTop;  
    68         var clieH=document.documentElement.clientHeight||document.body.clientHeight;  
    69         var minN=myMin();  
    70         //这里判断加载是刚出现空白就加载,也就是滚动到了高度最小那一列完了  
    71         if((aLi[minN].offsetTop+aLi[minN].offsetHeight)<(scroT+clieH)){  
    72             if(flag){  
    73                 flag=false;  
    74                 getLoad();  
    75             }  
    76         }  
    77     };  
    78 };  
    79 </script>  
    80 </head>  
    81 <body>  
    82     <ul id="list">  
    83         <li></li>  
    84         <li></li>  
    85         <li></li>  
    86         <li></li>  
    87         <li></li>  
    88     </ul>  
    89 </body>  
    90 </html> 
  • 相关阅读:
    HDU 4396
    Vijos1603 迷宫
    BZOJ1087 [SCOI2005] 互不侵犯King
    BZOJ2208 [JSOI2010] 连通数
    BZOJ1051 [HAOI2006] 受欢迎的牛
    BZOJ2751 [HAOI2012] 容易题(easy)
    BZOJ1015 [JSOI2008] 星球大战starwar
    BZOJ1012 [JSOI2008] 最大数maxnumber
    BZOJ1050 [HAOI2006] 旅行comf
    BZOJ2761 [JLOI2011] 不重复数字
  • 原文地址:https://www.cnblogs.com/studyshufei/p/8907224.html
Copyright © 2011-2022 走看看