瀑布流效果特效

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>瀑布流效果特效代码</title>
    <style type="text/css">
        /* 公用样式 */
        body{padding:0;margin:0;}
        img{border:none;}
        a{text-decoration:none;color:#444;}
        a:hover{color:#999;}
        #title{width:600px;margin:20px auto;text-align:center;}

        /* wrap */
        #wrap{width:auto;height:auto;margin:0 auto;position:relative;}
        #wrap .box{width:280px;height:auto;padding:10px;border:none;float:left;}
        #wrap .box .info{width:280px;height:auto;border-radius:8px;box-shadow:0 0 11px #666;background:#fff;}
        #wrap .box .info .pic{width:260px;height:auto;margin:0 auto;padding-top:10px;}
        #wrap .box .info .pic img{width:260px;border-radius:3px;}
        #wrap .box .info .title{width:260px;height:40px;margin:0 auto;line-height:40px;text-align:center;color:#666;font-size:18px;font-weight:bold;overflow:hidden;}
    </style>
</head>
<body>
    <section id="title">
        <h2>js瀑布流效果特效代码</h2>
    </section>

    <div id="wrap">

        <div class="box">
        <div class="info">
            <div class="pic"><img src="img/1.jpg"></div>
            <div class="title"><a href="#" target="_blank"> 瀑布流效果</a></div>
        </div>
    </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/2.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/3.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/4.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/5.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/6.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>

        <div class="box">
            <div class="info">
                <div class="pic"><img src="img/7.jpg"></div>
                <div class="title">瀑布流效果</div>
            </div>
        </div>
    </div>
    <script src="jquery-3.3.1.min.js" ></script>
    <script>
        var wrap = $('#wrap');
        var boxs = $('.box');
        //每一行box个数
        var boxW = boxs.eq(0).outerWidth();
        var num = Math.floor(document.documentElement.clientWidth/boxW);
        //设置外层宽度
        wrap.width(boxW * num);
        setTimeout(function(){
            pbl(boxs,num);
        }, 500);

        $(window).scroll(function () {
            var lastBox = $('.box').last().offset().top+$('.box').height();
            var winH = $(window).height()+$(window).scrollTop();
            console.log(lastBox);
            console.log(winH);
            console.log($('.box').last().offset().top)
            if (lastBox - winH < 100) {

                $.ajax({
                    url:"6.json",
                    type:"GET",
                    dataType:"json",
                    async:true,
                    success:function(data){
                        console.log(data);
                        for(i in data){
                            //创建新的box

                            var newHtml = $('<div class="box">\
                                                <div class="info">\
                                                    <div class="pic">\
                                                        <img src="img/'+data[i].src+'"/>\
                                                    </div>\
                                                    <div class="title">\
                                                        <a hrf="">'+data[i].title+'</a>\
                                                    </div>\
                                                </div>\
                                            </div>');
                            $("#wrap").append(newHtml);
                        }
                        boxs  = $(".box");
                        pbl(boxs,num);
                    }
                });
            }
        });
         //3.循环出所有的box并按照瀑布流排列
        function pbl(boxs,num){
            var everyH = [];//定义一个数组存储每一列的高度
            boxs.each(function(index){
                if(index<num){
                    //将每一列的起始高度存储,(列数-1)之前的box元素的高度赋给相应的每一列
                    everyH[index] = $(this).outerHeight();
                }else{
                    //下标大于等于列数的 box元素,获得最小列的高度,添加到该列,并将该列的高度改变
                    var minH = Math.min.apply(null,everyH);//获得最小的列的高度
                    //inArray()返回数组中指定元素的索引值
                    var minIndex = $.inArray(minH,everyH); //获得最小列的索引

                    $(this).css({position:"absolute",top:minH+"px",left:boxW*minIndex+"px"});
                    everyH[minIndex] += $(this).outerHeight();
                }
            });
        }

    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值