• jQuery瀑布流+无限加载图片


    <!DOCTYPE html>

    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <title>Document</title>


    <style> * { margin: 0px; padding: 0px; } #contianer { position: relative; font-size: 0; margin: 0 auto; } .box { padding: 5px; float: left; box-sizing: border-box; } .boximg { padding: 5px; box-shadow: 0 0 5px #ccc; border: 1px solid #cccccc; border-radius: 5px; } .boximg img { 250px; height: auto; position: relative; } #mask{ 250px; height: auto; background: red; position: absolute; z-index: 1; } #mask:hover{ background: salmon; z-index: 2; } </style>

    这是css代码,具体结构视情况而定

    然后是body布局

    <div id="container">
                <div class="box">
                    <div class="boximg">
                        <img src="img/1.jpg">
                        <div id="mask"></div>
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/2.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/3.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/4.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/5.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/6.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/7.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/8.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/9.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/10.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/11.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/12.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/13.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/14o.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/15.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/2.jpg">
                    </div>
                </div>
                <div class="box">
                    <div class="boximg">
                        <img src="img/3.jpg">
                    </div>
                </div>
            </div>

    图片引入多少看自己

    然后引入jquery-1.8.3.js,(这里其他js文件可不可以我没试过)

    最后js代码:

    思路如下:

    <script>
            //思路如下:  
            $(function() {
                var imgWidth = $(".box").innerWidth(); //获得每个div的宽度,包括内边距  
                var screenWidth = $(window).width(); //获得浏览器可视区域的宽度  
                var num = Math.floor(screenWidth / imgWidth); //计算一行可以放几个div  
                $("#container").css({
                    "width": num * imgWidth + "px",
                    "margin": "0 auto"
                }); //根据每行放的div的总长来给容器一个宽度,然后居中显示  
                function waterFlow() {
                    var arr = []; //定义一个数组  
                    for(var i = 0; i < $(".box").length; i++) {
                        if(i < num) { //一行显示num个div,将第一行的每个div高度写入数组  
                            arr[i] = $(".box").eq(i).innerHeight();
                        } else {
                            var minImgHeight = Math.min.apply(null, arr); //取得数组中最小高度的div  
                            var index = getMinIndex(arr, minImgHeight); //取得数组中最小高度的div的索引  
                            $(".box").eq(i).css({
                                "position": "absolute",
                                "top": minImgHeight + "px",
                                "left": $(".box").eq(index).offset().left + "px"
                            }); //瀑布流布局  
                            arr[index] += $(".box").eq(i).innerHeight(); //将布局好的该div的高度和该div上面的div高度相加,重新放入数组  
                        }
                    }
                }
    
                function getMinIndex(arr, min) { //取得数组中最小高度的div的索引  
                    for(var i in arr) {
                        if(arr[i] == min) {
                            return i;
                        }
                    }
                }
    
                function checkScrollDirector() { //判断滚动条是否滑到底部  
                    var flag = 0;
                    if($(document).scrollTop() + $(window).height() >= $(document).height()) {
                        flag = 1;
                    }
                    return flag;
                }
                console.log($(document).height())
                console.log($(window).height())
                window.onload = function() {
                    waterFlow(); //图片加载完毕执行  
                    var json = {
                        "data": [{
                                "src": "img/1.jpg"
                            }, {
                                "src": "img/2.jpg"
                            }, {
                                "src": "img/3.jpg"
                            }, {
                                "src": "img/4.jpg"
                            }, {
                                "src": "img/5.jpg"
                            },
                            {
                                "src": "img/6.jpg"
                            }, {
                                "src": "img/7.jpg"
                            }, {
                                "src": "img/8.jpg"
                            }, {
                                "src": "img/9.jpg"
                            }, {
                                "src": "img/10.jpg"
                            },
                            {
                                "src": "img/11.jpg"
                            }, {
                                "src": "img/12.jpg"
                            }
                        ]
                    };
                    window.onscroll = function() { //滚动条滚动执行  
                        if(checkScrollDirector()) {
                            for(var i = 0; i < json.data.length; i++) {
                                var html = "<div class='box'><div class='boximg'><img src=" + json.data[i].src + "></div></div>";
                                $("#container").append(html); //向容器内一次性添加12个图片  
                                console.log(1);
                            }
                            waterFlow(); //瀑布流布局  
                        }
                    }
                }
            })
        </script>

    希望你们能用到

  • 相关阅读:
    异常处理
    面向对象 -- 内置方法
    面向对象 -- 反射(详细)
    面向对象 -- 反射
    面向对象 -- 三大特性之封装
    pickle模块 collections模块在面向对象中的应用
    面向对象 -- 三大特性之多态
    Third Week(补充完整)
    Second Week(补充完整)
    First Week (补充完整)
  • 原文地址:https://www.cnblogs.com/Mousika/p/7219852.html
Copyright © 2020-2023  润新知