zoukankan      html  css  js  c++  java
  • jquery+javaScript完成瀑布流图片页面效果

    效果如图:

    html:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
            <link rel="stylesheet" type="text/css" href="css/image.css"/>
            <script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
            <script type="text/javascript" src="js/image.js" ></script>
        </head>
    
        <body>
            <div class="content">
                <div class="box">
                    <div class="img_box"><img src="img/1.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/2.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/3.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/4.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/5.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/6.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/7.jpg" alt="" /></div>
                </div>
                <div class="box">
                    <div class="img_box"><img src="img/8.jpg" alt="" /></div>
                </div>
            </div>
        </body>
    
    </html>

    css:

    * {
        padding: 0;
        margin: 0;
    }
    
    .content {
        position: relative;
    }
    
    .box {
        float: left;
        padding: 12px 0px 0px 10px;
    }
    
    .img_box {
        padding: 10px;
        border: solid 1px black;
        border-radius: 10px;
        box-shadow: 5px 5px 5px 2px darkgray;
    }
    
    .img_box:hover {
        margin: 12px;
        box-shadow: 3px 3px 3px 3px darkgray;
    }
    
    img {
        width: 400px;
    }
    
    .toast {
        position: fixed;
        width: 170px;
        height: 50px;
        text-align: center;
        line-height: 50px;
        box-shadow: 5px 5px 5px 2px darkgray;
        border-radius: 20px;
        background: cornflowerblue;
        top: 600px;
        left: 600px;
        color: white;
        font-weight: bold;
        font-size: 20px;
    }

    js:

    $(document).ready(function() {
        window.onload = init; //当图片加载完后
        window.onscroll = sc; //当滚动进度条时
        $(window).resize(init); //当浏览器页面大小改变时
    
        function sc() {
            //如果屏幕可见高度+滚动高度>=最后一张图片的高度+最后一张图片的一半,那么自动加载
            if(($(window).scrollTop() + document.documentElement.clientHeight) >=
                ($(".box").last().position().top + $(".box").last().outerHeight() / 2)) {
                //加载更多
                for(var i = 1; i < 26; i++) {
                    $(".content").append("<div class="box"><div class="img_box"><img src="img/" + i + ".jpg" /></div></div>");
                }
                $("body").append("<div class="toast">加载中……</div>");
                //设置延时自动关闭
                setTimeout(function() {    $(".toast").hide(200);}, 1000)
                init();
            }
        }
    
        function init() {
            /**
             * 瀑布流图片代码分析
             * 得到第一行图片个数、最短图片位置
             * 个数:总长度/box长度
             */
            //得到屏幕长度
            var clientW = document.body.clientWidth;
            //得到单个box的长度
            var box = $(".box").outerWidth();
            //得到一行的个数
            var count = parseInt(clientW / box);
            //把图片在页面中居中
            $(".content").css({
                marginLeft: (clientW - box * count) / 2
            })
    
            var start = 0;
            var end = start + count;
            //循环,把个数的高传入数组
            var arr = [];
            $(".box").slice(start, end).each(function() {
                arr.push($(this).outerHeight());
            })
    
            //循环,每次都要改变最短图片的位置
            $(".box").each(function(n) {
                //得到最短的图片及它所出现的位置,从0开始
                var minHei = Math.min.apply(null, arr);
                var posit = $.inArray(minHei, arr);
                //即将要出现的图片的左边距就是位置*box长度
                var width = posit * box;
                //如果是第一行后面的图片
                if(n >= count) { //如果是除第 一行后的后面几张
                    $(this).css({
                        "position": "absolute",
                        "left": width,
                        "top": minHei,
                    });
                    arr[posit] += $(this).outerHeight();
                }
            })
        }
    
    })
  • 相关阅读:
    收集Linux常用命令
    loadrunner没有告诉你的
    loadrunner没有告诉你的
    loadrunner没有告诉你的
    QA、EPG、PMO各自的职能划分及关系是什么?
    QA、EPG、PMO各自的职能划分及关系是什么?
    QA、EPG、PMO各自的职能划分及关系是什么?
    loadrunner通过odbc测mysql数据库语句
    loadrunner通过odbc测mysql数据库语句
    loadrunner通过odbc测mysql数据库语句
  • 原文地址:https://www.cnblogs.com/firefly-pengdan/p/5664212.html
Copyright © 2011-2022 走看看