码迷,mamicode.com
首页 > 其他好文 > 详细

懒加载

时间:2016-11-26 09:28:22      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:拼接   win   ble   bsp   original   init   滚动事件   att   ice   

懒加载实质:
1.不加载全部图片
2.首先显示在页面中的图,首先进行加载
3.当屏幕发生滚动的时候,判断图片是否进入用户视野,来决定图片是否加载


 编写步骤
1.首先,不要将图片地址放到src属性中,而是放到其它属性(data-original)中
2.页面加载完成后,根据scrollTop判断图片是否在用户视野内,如果在,则将data-original属性中的值取出放到src中
3.在屏幕滚动事件中,重复判断图片是否进入视野,如果进入,则将data-original属性中的值取出放到src中

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title></title>
        <style media="screen">
            * {
                margin: 0;
                padding: 0;
            }
            .container {
                width: 80%;
                margin: 0 auto;
                border: 1px solid blue;
                overflow: hidden;
            }
            .container section {
                float: left;
                width: 48%;
                margin: 20px 1%;
                text-align: center;
                background-color: rgb(210, 227, 209);
                border-radius: 5px;
                overflow: hidden;
            }
            .container section img {
                width: 100%;
            }
            .container section p {
                padding: 10px 0;
            }
        </style>
    </head>
    <body>

        <div class="container"></div>

    </body>
    <script src="./js/jquery-2.2.3.js" charset="utf-8"></script>
    <script type="text/javascript">

        $(function () {

            $.get(http://localhost:8888/data/data1.json, function (data) {
                data = data.scenery;

                for (let item of data) {
                    // 创建节点并拼接
                    // 不要把图片的真实地址放在src属性中,而是放到其它属性中,目的是不发起网络请求
                    $(`<section>
                        <img src="./imgs/placeholder.png" data-original="${item.img_url}" alt="" />
                        <p>${item.title}</p>
                    </section>`).appendTo(‘.container‘);
                }

                initImgsSrc();
            });

            // 获取屏幕高度
            var screenHeight = $(window).outerHeight();

            // 当加载完成之后,把需要显示的图片地址放到src中
            function initImgsSrc() {
                // 获取所有图片的scrllTop
                $(section img).each(function (i, v) {
                    // 在获取图片offsetTop的时候,需要等图片加载完成之后,否则获取的图片offsetTop不是加载之后的值
                    this.onload = function () {
                        var $this = $(this);
                        // 图片距离顶部的值
                        var imgScrollTop = $this.offset().top;

                        // 判断是否在屏幕范围内容
                        if (imgScrollTop < screenHeight) {
                            // 从data-original中取出值,并放到src属性中
                            $this.attr({
                                src: $this.attr(data-original)
                            });
                        }
                    };
                });
            }


            // 监听滚动
            // 在屏幕滚动的过程中判断图片是否进入用户视野
            window.onscroll = function () {
                var scrollValue = screenHeight + $(window).scrollTop();
                $(section img).each(function (i, v) {
                    var $this = $(this);
                    // 图片距离顶部的值
                    var imgScrollTop = $this.offset().top;

                    if (imgScrollTop <= scrollValue) {
                        $this.attr({
                            src: $this.attr(data-original)
                        });
                    }
                });
            };




        });

    </script>
</html>
server.js代码部分:
require(‘express‘)().get(‘*‘, function (req, res) { res.sendFile(__dirname + req.path); }).listen(8888, function () { console.log(‘启动成功‘); });

  

 

 

懒加载

标签:拼接   win   ble   bsp   original   init   滚动事件   att   ice   

原文地址:http://www.cnblogs.com/fyh123/p/6103575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!