懒加载

作者: Iswine | 来源:发表于2016-09-30 20:35 被阅读0次

    何为懒加载?第一次看见这个词我是

    从字面意义上完全不能理解加载为何还有个“懒”字。其实懒加载是用以优化网页加载图片等较大文件的一种方法,其中心思想为:用户看不到,网页就先不加载,当用户需要看到的时候,再加载给用户。这样最大的好处,就是避免了图片集中加载,造成网页crash。像轮播,长页面的图片加载多使用懒加载这种方式。

    那具体该怎么做呢?

    • 在原本该出现图片的地方,造一个展窗(自定义宽高的div),或是让网页同时先填满一个原图一般大的空白图片。
    • 将图片真实的地址藏在一个自定义属性中,当判断用户已经需要看图片时,将该地址赋给<img>[src]属性或是CSS的background-image:url()中;

    所以思路就很清晰了:造盒子——》写判断函数——》狸猫换太子。

    判断函数:判断一个元素是否出现在窗口可视范围
    function isVisible($node) {
                var scrollTop = $(window).scrollTop();
                var winH = $(window).height();
                var nodeTop = $node.offset().top;
                var nodeButtom = nodeTop + $node.height();
                return  nodeTop < scrollTop + winH && nodeButtom > scrollTop;
            }
    

    当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true

    function inVisible($node) {
                var srollTop = $(window).scrollTop();
                var winH = $(window).height();
                var nodeTop = $node.offset().top;
                var nodeButtom = nodeTop + $node.height();
                return  nodeTop < srollTop + winH && nodeButtom > screenTop;
            }
    $(window).on("scroll",function () {
        if(inVisible($(".object"))){
            console.log(true);
        }
    });
    

    当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。

    var $object = $(".object")
            function inVisible($node) {
                var srollTop = $(window).scrollTop();
                var winH = $(window).height();
                var nodeTop = $node.offset().top;
                var nodeButtom = nodeTop + $node.height();
                return  nodeTop < srollTop + winH && nodeButtom > screenTop;
            }
    $(window).on("scroll",function () {
        if($object.attr("isShow")) return;
        if(inVisible($object)){
            $object.attr("isShow",true);
            console.log(true);
        }
    });
    

    相关文章

      网友评论

          本文标题:懒加载

          本文链接:https://www.haomeiwen.com/subject/ydqryttx.html