码迷,mamicode.com
首页 > Web开发 > 详细

jquery 瀑布流代码 [简约]

时间:2015-03-13 16:11:32      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

HTML:

技术分享
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>瀑布流代码</title>
    <link rel="stylesheet" type="text/css" href="static/css/style.css">
</head>
<body>
    
 <div id="box">
     <div class="row">
         <ul class="pic clearfix">
             <li>
                 <a href="#"><img src="static/images/0.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/1.jpg"></a>
                <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/2.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/3.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/4.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/5.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/6.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/7.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
             <li>
                 <a href="#"><img src="static/images/8.jpg"></a>
                 <div class="title">
                     <h3>图片展示展示</h3>
                 </div>
             </li>
         </ul>

         <div class="loading"></div>

     </div>
 </div>


<div class="go-top"></div>

<script src="static/js/jquery-1.8.2.min.js"></script>
<script src="static/js/init.js"></script>
</body>
</html>
View Code

 

CSS:

技术分享
html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;}
header,footer,section,article,aside,nav,hgroup,address,figure,figcaption,menu,details{display:block;}
table{border-collapse:collapse;border-spacing:0;}
html,body,fieldset,img,iframe,abbr{border:0;}
i,cite,em,var,address,dfn{font-style:normal;}
li{list-style:none;}
textarea{overflow:auto;resize:none;}
a,button{cursor:pointer;}
h1,h2,h3,h4,h5,h6,em,strong,b{font-weight:bold;}
del,ins,u,s,a,a:hover{text-decoration:none;}
body,textarea,input,button,select,keygen,legend{
    font:14px/100% arial,"//5b8b//4f53";color:#333;outline:0;
    -webkit-tap-highlight-color: rgba(255,255,255,0);
    -webkit-focus-ring-color: rgba(255, 255, 255, 0);
    outline: none;
}
a{color:#656565;transition:all .4s;}
a:hover{color:#1ba9e9;}
.fl{float:left;}
.fr{float:right;}
.clearfix:after,
.row:after,
.fl:after,
.fr:after {
    clear:both;
    content:‘\0020‘;
    display:block;
    height:0;    
}
.clearfix{zoom: 1;}
.row{width:1000px;margin:0 auto;}
.pic{
    background:#ddd;
    position: relative;
    margin-top:10px;
}
.pic li{
    height:30px;
    background:#DDD;
    position: absolute;
    padding:20px;
    width:280px;
    transition:1s;
}
.pic li img{
    width:100%;
}
.title{
    height:40px;
    line-height:40px;
    width:100%;
    margin-top:5px;
    background:orange;
}
.loading{
    width:1000px;
    height:100px;
    background:#fff url(../images/loading.jpg) center no-repeat;
    position: fixed;
    bottom:0;
    display:none;
}
.go-top{
    width:60px;
    height:60px;
    background:#ddd;
    position: fixed;
    right:20px;
    bottom:20px;
    cursor:pointer;
    border-radius:5px;
}
.go-top:hover{
    background:orange;
}
View Code

 

JQ(请事前引入 jquery 库):

技术分享
//一定要等img加载完之后才执行定位,不然会定不了位
$(window).load(function(){

    var showPic = function(){
        //现有的图片进行定位
        var oPic = $(‘.pic‘);
        var aPicLi = oPic.children(‘li‘);
        var oTopOne = oTopTwo =  oTopThree = 0;

        //思路是累加同一列图片高度来实现定位,当然最重要的是拿到同一列前一个的图片高度进行累加来实现高度累加
        //这里采用了 .animate 函数,如果不喜欢这种形式可以改成 .css 函数
        for( var i = 0 , len = aPicLi.length ; i < len ; i++ ){
            if ( i < 3 ) {
                switch( i % 3 ){
                    case 0:
                    aPicLi.eq(i).animate({‘left‘:‘0px‘,‘top‘: 0, ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                    break;
                    case 1:
                    aPicLi.eq(i).animate({‘left‘:‘340px‘,‘top‘:0, ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                    break;
                    default:
                    aPicLi.eq(i).animate({‘left‘:‘680px‘,‘top‘:0, ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                }
            }else{
                switch( i % 3 ){
                    case 0:
                    oTopOne += aPicLi.eq( i-3 ).find(‘img‘).height() + 110;
                    aPicLi.eq(i).animate({‘left‘:‘0px‘ , ‘top‘: oTopOne +‘px‘ , ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                    break;
                    case 1:
                    oTopTwo += aPicLi.eq( i-3 ).find(‘img‘).height()  + 110;
                    aPicLi.eq(i).animate({‘left‘:‘340px‘ , ‘top‘: oTopTwo +‘px‘ , ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                    break;
                    default:
                    oTopThree += aPicLi.eq( i-3 ).find(‘img‘).height()  + 110;
                    aPicLi.eq(i).animate({‘left‘:‘680px‘ , ‘top‘: oTopThree +‘px‘ , ‘height‘ : aPicLi.eq(i).find(‘img‘).height() + 50 +‘px‘});
                }
            }
        }
    }

    //一开始先把现有的图片进行定位
    showPic();

    //获取数据
    var getJson = function(){
        $.ajax({
            url: ‘static/js/imgJson.json‘,
            type: ‘GET‘,
            dataType: ‘json‘,
            beforeSend:function(){
                $(‘.loading‘).show();
            },
            success:function( data ){
                $(‘.loading‘).hide();
                for( var i = 0 , len = data.length ; i < len ; i++){
                    var li = ‘<li><a href="#"><img src="static/images/‘+data[i].url+‘" style="width:‘+data[i].width+‘;height:‘+data[i].height+‘;"></a><div class="title"><h3>‘+data[i].title+‘</h3></div></li>‘;
                    $(‘.pic‘).append(li);
                }

                //只有在添加完DOM 之后,才重新计算位置;
                showPic();    
            }
        });
    }

    //滚动条滚动的时候
    $(window).scroll(function(){
        if ( $(window).scrollTop()>=$(document).height()-$(window).height() ) {
            //执行接口操作
            getJson();
        }
    });



    //回到顶部
    $(‘.go-top‘).click(function(){
        $(‘body,html‘).animate({scrollTop:0},500);  
        return false;
    });


});
View Code

 

JSON 数据 -> 来模拟 PHP 接口数据:

技术分享
[{"url":"9.jpg","title":"新的来了1","width":199,"height":220},{"url":"10.jpg","title":"新的来了2","width":160,"height":220},{"url":"11.jpg","title":"新的来了3","width":240,"height":220},{"url":"12.jpg","title":"新的来了4","width":361,"height":220},{"url":"13.jpg","title":"新的来了1","width":284,"height":177},{"url":"14.jpg","title":"新的来了2","width":284,"height":177},{"url":"15.jpg","title":"新的来了3","width":284,"height":177},{"url":"16.jpg","title":"新的来了4","width":259,"height":194}]
View Code

 

 

注意:

1. 首先先准备好图片。

2. 各个元素路径。

3. 务必好让后端接口输出图片尺寸,来解决定位问题。

4. 缺点是因为写法是每次加载一次接口就会重新计算元素位置(包括原有的图片元素),比较消耗性能。

jquery 瀑布流代码 [简约]

标签:

原文地址:http://www.cnblogs.com/zion0707/p/4335213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!