jquery 瀑布流代码 [简约]

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>

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;
}

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;
    });

});

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}]

注意:

1. 首先先准备好图片。

2. 各个元素路径。

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

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

时间: 2024-10-29 19:05:57

jquery 瀑布流代码 [简约]的相关文章

jquery实现的瀑布流代码实例

jquery实现的瀑布流代码实例:瀑布流现在很多网站都有应用,本站的特效下载专区也有应用,图片的加载会根据下拉条滚动实现的,实现了需要多少加载多少的功能,可以有效的提高网站的执行效率,下面是一段网络上的代码实例,供大家参考.代码实例如下: function lazyload(option){ var settings = { defObj: null, defHeight: 0 }; settings = $.extend(settings, option || {}); var defHeig

8款实用的Jquery瀑布流插件

1.网友Null分享Jquery响应式瀑布流布局插件 首先非常感谢网友Null的无私分享,此作品是一款响应式瀑布流布局Jquery插件,网友Null增加了一个屏幕自适应和响应式,响应式就是支持智能手机浏览,效果非常棒,遗憾的是不支持IE9以下版本,所以网友们在演示的时候请使用谷歌.火狐等浏览器... 分享JquerySchool网站里面的8款Jquery瀑布流插件 2.网友sole分享23行Jquery代码实现定位瀑布流布局特效 首先非常感谢网友sole的无私分享,此Jquery特效是我从互联网

ios图片瀑布流代码

ios瀑布流,实现简单的瀑布流视图布局,可以显示网络图片,下拉刷新,上拉加载更多. 下载:http://www.huiyi8.com/sc/9087.html ios图片瀑布流代码,布布扣,bubuko.com

瀑布流代码,简洁版 带分页

接上一篇   瀑布流代码,简洁版 的功能之上添加分页的功能 Index.cshtml @using PagedList.Mvc @model PagedList.StaticPagedList<int> @{ ViewBag.Title = "瀑布流"; Layout = "~/Views/Shared/_Layout.cshtml"; } @section header{ <script src="~/Scripts/jquery-ui

javascript瀑布流代码实例

javascript瀑布流代码实例:现在瀑布流效果大行其道,各种网站都有应用,尤其是专业的图片类型的网站,本站在特效下载专区也有此应用,当然实现此效果的方法有多种,下面是一段瀑布流代码实例供大家参考. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title&

[Jquery]瀑布流

$(window).load(function(e){    waterfall();    var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};    $(window).scroll(function(){        if(checkscrollside){            var $main=$("#main");            $.each

jquery实现简单瀑布流代码

测试环境:ie8 ff13.0.1  chrome22 可以将分页获取的内容依次填入四个div中,瀑布流的分页可以以多页(比如5页)为单位二次分页,这样可以减少后台算法的复杂度 [html] view plaincopy <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&

jQuery瀑布流无限拖三大利器:masonry+imagesloaded+infinitescroll

瀑布流已经是几乎过时的技术了,不过对于很多想要快速实现它的朋友而言,却绝非易事,因为即使我们已经有很多现成的代码,却发现在自己的开发环境中无法快速得到自己想要的结果.就像我们现在要介绍的三大利器(masonry+imagesloaded+infinitescroll)即使它们是如此有效,却在马上要使用的时候让我们拿着如烫手山芋班很难真正达到我们想要的效果. 下面,我们从其原理来讲解它们的使用,以帮助你更好的发挥它的功效.但为了快速实现,我们不讲解它们的全部内容. 1. 合理的HTML布局是问题的

Jquery瀑布流效果(下篇)

接着上篇瀑布流效果说(上篇地址为http://www.cnblogs.com/jiaojiaome/articles/4123586.html). 第一个文件myself实现了瀑布流的效果,但是存在可以优化的地方. 比如initial方法,第一次刚加载的时候调用initial方法从第一张慢慢布局是没有问题的. but,后面拖动滚动后,如果满足条件,继续加载其他的,加载毕后再次调用initial()方法, 这里是可以优化的,因为之前的元素已经布局好了,不需要重新布局.所以可以从后面的元素开始 本篇