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

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>瀑布流没有完成jq</title>
    </head>
    
    
    <style type="text/css">
     *{margin:0; padding:0; margin:0 auto;}
     #main{ position:relative;}
    .box{ padding:15px 0 0 10px; float:left; display:inline; }
    .pic { padding:10px; border:1px solid #ccc; border-radius:5px; box-shadow:0 0 2px #ccc; }
    .pic img{ width:165px; height:auto;}
    </style>
    <body>
    <div id='jz'>加载</div>
    
    <div id="main">
      
      <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
      <div class="box">
          <div class="pic">
            <img src="http://www.baidu.com/img/baidu_jgylogo3.gif" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=2276790136,2981566643&fm=58" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="https://ss0.baidu.com/73x1bjeh1BF3odCf/it/u=2413634062,3211494602&fm=96&s=E53876DA8E21791562B84C5A030040D7" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img02.taobaocdn.com/bao/uploaded/i2/TB1VhbGGXXXXXaxXpXXXXXXXXXX_!!0-item_pic.jpg_80x80.jpg" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://static.17shihui.cn/17shihui/w1.1.50/image/weixin.png?static_version=2" />
         </div>
      </div> 
      
      <div class="box">
          <div class="pic">
            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=2276790136,2981566643&fm=58" />
         </div>
      </div>
       
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
        </div>
      
       <div class="box">
          <div class="pic">
            <img src="http://ubmcmm.baidustatic.com/media/v1/0f000DH992eKAi22Lq-JVs.jpg" />
         </div>
      </div>
      
       <div class="box">
          <div class="pic">
            <img src="https://ss0.baidu.com/73F1bjeh1BF3odCf/it/u=4282994204,2464365452&fm=96&s=29828C57C21E21CE1D3408290300E053" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
     
    
    <div class="box">
          <div class="pic">
            <img src="http://gd3.alicdn.com/bao/uploaded/i3/TB1QENsGpXXXXXDXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg" />
         </div>
      </div>
      
         <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
    
      
      
        <div class="box">
          <div class="pic">
            <img src="http://img3.shijue.cvidea.cn/tf/130530/2283083/52ae71293dfae9b500000005.JPEG" />
         </div>
      </div>
       <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
      <div class="box">
          <div class="pic">
            <img src="http://www.baidu.com/img/baidu_jgylogo3.gif" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=2276790136,2981566643&fm=58" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="https://ss0.baidu.com/73x1bjeh1BF3odCf/it/u=2413634062,3211494602&fm=96&s=E53876DA8E21791562B84C5A030040D7" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img02.taobaocdn.com/bao/uploaded/i2/TB1VhbGGXXXXXaxXpXXXXXXXXXX_!!0-item_pic.jpg_80x80.jpg" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://static.17shihui.cn/17shihui/w1.1.50/image/weixin.png?static_version=2" />
         </div>
      </div> 
      
      <div class="box">
          <div class="pic">
            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=2276790136,2981566643&fm=58" />
         </div>
      </div>
       
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
        </div>
      
       <div class="box">
          <div class="pic">
            <img src="http://ubmcmm.baidustatic.com/media/v1/0f000DH992eKAi22Lq-JVs.jpg" />
         </div>
      </div>
      
       <div class="box">
          <div class="pic">
            <img src="https://ss0.baidu.com/73F1bjeh1BF3odCf/it/u=4282994204,2464365452&fm=96&s=29828C57C21E21CE1D3408290300E053" />
         </div>
      </div>
      
        <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
     
    
    <div class="box">
          <div class="pic">
            <img src="http://gd3.alicdn.com/bao/uploaded/i3/TB1QENsGpXXXXXDXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg" />
         </div>
      </div>
      
         <div class="box">
          <div class="pic">
            <img src="http://img.hb.aicdn.com/fb083f6baea7c9ed0d2cce4bd3846b7f8fc2bdc71886e-Fon7KQ_sq320" />
         </div>
      </div>
    
      
      
        <div class="box">
          <div class="pic">
            <img src="http://img3.shijue.cvidea.cn/tf/130530/2283083/52ae71293dfae9b500000005.JPEG" />
         </div>
      </div>
    
      
    </div>
    
    </body>
    </html>
    <script src="js/jquery-1.11.1.min.js"></script>
    <script language="JavaScript" type="text/javascript">
    /*
      1、页面加载时 执行 waterfall 方法;
      2、写waterfall 方法,里面有两个参数 父Id 子CLSS名。
      3、waterfall 里面的步骤: 
         获取里面的要传的ID ,获取这个ID下面的 所以要CLASS元素,此时要写 getByClass 方法
         
         计算可以区, 显示多少列,: A ;一个CLASS 的宽度, B 可以区别的宽度, 父ID的总宽度: A*B 
      4'   下面是计算第一列中高度最小的那个元素,然后把要添加的那个元素添加到最小元素下面。 用FOR , index 获取当前元素的index值方法
       此时,页面显示排版正常了, 下面来是, 页面载时, 自动加载进来数据。  
           获取 数组中,最小的值 
       5、window.onscroll 绑定方法, 
       6、 checkScrollsilde 方法,用来计算当前最后一个元素的,高度,是否小于 滚动条的高度, 如果是, 则加载新数据。
      
    */
    
    
    $(window).on("load",function(){
        waterfall(); // 页面加载时, 执行此方法
    
        $(window).on('scroll',function(){
             if(checkScrollslide){
                 //遍历加载开始
                    var dataInt={"data":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"}]};
                     $.each(dataInt.data,function(key,value){
                         console.log(value)
                        //alert(  $(value).attr('src'))
                            var oDiv=$("<div>").addClass("box").appendTo($("#main"));
                            var oPic=$("<div>").addClass("pic").appendTo($(oDiv));
                            $("<img>").appendTo($(oPic)).attr('src','img/'+$(value).attr('src'))
                               
                        })
                        waterfall();     // 遍历出来的元素重新加载样式,
                 }
            
            })
    })
    
    /*
    waterfall   方法: 
    1、 获取父元素下的 元素 box
    2 计算一个元素的宽度。
    3、让算可视区 显示几列
    4、给父元素添加 总宽度 居中。
    从第二列开始, 重新布局:
    5、 遍历第一列中 最小的高度,  把从第二列中的第一个,放到第一列中最小的那个下面, 相对定位那。   
    
    */
    function waterfall(){
        var $boxs=$("#main>div");
        var w=$boxs.eq(0).outerWidth();
        var cols=Math.floor($(window).width()/w);
            $("#main").width(w*cols).css('margin','0 auto');
            
    /*  遍历子元素 index 索引 value 值;
         1、计算一个元素的高度,
         2、 如果是第一列的元素,而放到指定的数组中,
         3、如果不是第一列的元素,则给加上样式。、
         4、 加上的样式是: 高度,相对定位的属性,LEFT值 , 
         5、 要加的高度的值:当前数组中的最小值 , 因为这个数组中存的元素的高度,
         5、LEFT:  当前元素的 宽度*当前元素的缩索值;
         7、加完一个元素后, 数组中的高度重新重计算, 当前列的高度。重新放入数组中,
    */
            
        var hArr=[]; 
        $boxs.each(function(index,value){
            var h=$boxs.eq(index).outerHeight();
            if(index<cols){
                hArr[index]=h;  // 把高度放到 数组中内
                }else{
                    var minH=Math.min.apply(null,hArr);  //求数组中最小的值 
                    var minHindex=$.inArray(minH, hArr);// 最小值在数组中的索引
                        console.log(value);  // dom  不能用JQ对像,
                    $(value).css({
                        'position':"absolute",
                        'top':minH+'px',
                        'left':minHindex*w+'px',
                        })
                        
                        hArr[minHindex]+=$boxs.eq(index).outerHeight();
                    }
            })
    }
    
    /*
      checkScrollslide 函数 计算滚动条到底部时,此时要加载新的数据过来。
      1、 获取元素的最后一个元素,
      2、 计算最后的一个元素的高度, 和当前元素的高度的一半的  和。
      3、滚动条的滚出去的高度,
      4、 可视区的高度,
      5、 return 下
      
    */
    
    function checkScrollslide(){
        var $lastBox=$("#main>div").last();
        var lastBoxDis=$lastBox.offset().top()+Math.floor($lastBox.outerHeight()/2);  
        var scrollTop=$(window).scrollTop();
        var documentH=$(window).height();
        
        return (lastBoxDis<scrollTop+documentH)? true :false;
        
        
    }
    
    
    </script>
    View Code
  • 相关阅读:
    開始Unity3D的学习之旅
    提供一个免费的CSDN下载账号
    SIP入门(二):建立SIPserver
    设计模式之6大原则(6)开闭原则
    怎样利用App打造自明星实现自盈利
    BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解
    机房收费重构——关于面向对象和分层的纠结
    JAVA反射机制
    php实现工厂模式
    freemarker中的round、floor和ceiling数字的舍入处理
  • 原文地址:https://www.cnblogs.com/yjhua/p/4616769.html
Copyright © 2011-2022 走看看