Jquery 实现瀑布流布局

//保证img文件夹下有图片
//引入jquery
<script src="Script/jquery-1.7.2.js"></script> <style> * { padding: 0; margin: 0; } #main { position: relative; } .pin { padding: 10px 0 0 10px; float: left; } .box { padding: 10px; border: 1px solid #ccc; box-shadow: 0 0 6px #ccc; border-radius: 5px; height:90%; } .box img { width: 162px; height: auto; } </style> <body> <form id="form1" runat="server"> <div id="main"> <div class="pin"> <div class="box"> <img src="img/1.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/2.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/3.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/4.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/5.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/6.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/7.jpg" /> </div> </div> <div class="pin"> <div class="box"> <img src="img/8.jpg" /> </div> </div> </div> </form> </body>

////////////js

<script>
    window.onload = function () {
        waterfall();//加载时成瀑布流效果
        var imgss = { "data": [{ "src": "img/1.jpg" }, { "src": "img/2.jpg" }, { "src": "img/3.jpg" }, { "src": "img/4.jpg" }, { "src": "img/5.jpg" }, ] };
        $(window).on("scroll", function () {
            if (fun_scroll()) {
                for (var i = 0; i < imgss.data.length; i++) {
                    var div_pin = $("<div>").addClass("pin");
                    var div_box = $("<div>").addClass("box");
                    div_box.appendTo(div_pin);
                    var img = $("<img>").attr("src", imgss.data[i].src);
                    img.appendTo(div_box);
                    div_pin.appendTo($("#main"));
                    waterfall();
                }
            }
        });
    }
    
    //设置瀑布流
    function waterfall() {
        ////获取单个宽度
        /////////////$(".pin").width();//只获取元素的真实宽度
        /////////////document.getElementById("id")offsetWidth;//获取元素加上外间距的宽度
        var objWidth = $(".pin:eq(0)").get(0).offsetWidth;//.width();
        ////获取每行个数document.documentElement.clientWidth
        var num = Math.floor($(document).width() / objWidth);
        $("#main").css({ "width": (objWidth * num) + "px", "margin": "0 auto" });
        var heigs = [];
        $(".pin").each(function (i, obj) {
            if (i < num) {
                heigs.push($(obj).get(0).offsetHeight);
            } else {
                //获取最小的值
                var mixh = Math.min.apply(null, heigs);
                //获取值的索引
                var inx = $.inArray(mixh, heigs, null);
                $(obj).css({
                    "position": "absolute",
                    "top": mixh,
                    "left": $(".pin").eq(inx).position().left,
                });
                heigs[inx] += $(obj).get(0).offsetHeight;
            }
        });
    }

    //滚动,滚动条时动态加载图片
    var fun_scroll = function () {
        //最后一个元素距离顶部的高度+自身一半高度
        var lastObjHeight = Math.floor($(".pin").last().offset().top) + Math.floor($(".pin").last().height() / 2);
        //卷进去的高度
        var scrollHeight = document.documentElement.scrollTop || document.body.scrollTop;
        //屏幕的高度
        var deviceheight = document.documentElement.clientHeight;
        return ((deviceheight + scrollHeight) > lastObjHeight) ? true : false;
    }
</script>
技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。