zoukankan      html  css  js  c++  java
  • 懒加载简单的方法

    <!doctype html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8" />
        <title>懒加载实例</title>
        <style type="text/css">
            /*一定要有预先高度*/
            img{
                 600px;
                height: 260px;
            }
            .samLazyImg{
                position: relative;
            }
        </style>
    </head>
    
    <body>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/11de79502d0af.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/33f99f823ed3d.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/680120973b82.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/67f87ba08cf0.jpg!v1sell" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/22ec075a17c33.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/2e4a699680788.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/c2f4043a4991.jpg!v1sell" alt="" />
    </div>
    <div>
        <img class="samLazyImg" src="http://a.tbcdn.cn/mw/webapp/fav/img/grey.gif" dataimg="http://yangege.b0.upaiyun.com/33f996b4386ab.jpg!v1sell" alt="" />
    </div>
    </body>
    <script src="jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
        var lazyload = {
            init : function(opt){
                var that = this,
                    op = {
                        anim: true,
                        extend_height:0,
                        selectorName:"img",
                        realSrcAtr:"dataimg"
                    };
                // 合并对象,已有的{anim:true}+用户自定义对象。也就是op = op + opt
                $.extend(op,opt);
                // 调用lazyload.img.init(op)函数
                that.img.init(op);
    
            },
    
            img : {
                init : function(n){
    
                    var that = this,
                        selectorName = n.selectorName,
                        realSrcAtr = n.realSrcAtr,
                        anim = n.anim;
    //              console.log(n);
    
                    // 要加载的图片是不是在指定窗口内
                    function inViewport( el ) {
                        // 当前窗口的顶部
                        var top = window.pageYOffset,
                            // 当前窗口的底部
                            btm = window.pageYOffset + window.innerHeight,
                            // 元素所在整体页面内的y轴位置
                            elTop = $(el).offset().top;
                        // 判断元素,是否在当前窗口,或者当前窗口延伸400像素内
                        return elTop >= top && elTop - n.extend_height <= btm;
                    }
    
                    // 滚动事件里判断,加载图片
                    $(window).on('scroll', function() {
                        $(selectorName).each(function(index,node) {
                            var $this = $(this);
    
                            if(!$this.attr(realSrcAtr) || !inViewport(this)){
                                return;
                            }
    
                            act($this);
    
                        })
                    }).trigger('scroll');
    
                    // 展示图片
                    function act(_self){
                        // 已经加载过了,则中断后续代码
                        if (_self.attr('lazyImgLoaded')) return;
                        var img = new Image(),
                            original = _self.attr('dataimg');
                        // 图片请求完成后的事件,把dataimg指定的图片,放到src里面,浏览器显示
                        img.onload = function() {
                            _self.attr('src', original);
                            _self.css({ "opacity": ".2","top":"1rem" }).animate({ "opacity": "1","top":"0" }, 280);
                        };
                        // 当你设置img.src的时候,浏览器就在发送图片请求了
                        original && (img.src = original);
                        _self.attr('lazyImgLoaded', true);
                    }
                }
            }
        };
    
        /*
         * selectorName,要懒加载的选择器名称
         * extend_height  扩展高度
         * anim  是否开启动画
         * realSrcAtr  图片真正地址*/
        lazyload.init({
            anim:false,
            selectorName:".samLazyImg"
        });
    </script>
    
    </html>
    

      

  • 相关阅读:
    一些智力题
    17分钟过桥问题
    快排的非递归实现
    单链表逆置
    实现所有括号的合法匹配
    2013阿里笔试题
    Hadoop学习笔记—14.ZooKeeper环境搭建
    Hadoop学习笔记—15.HBase框架学习(基础知识篇)
    Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
    Hadoop学习笔记—11.MapReduce中的排序和分组
  • 原文地址:https://www.cnblogs.com/huangqiming/p/7479058.html
Copyright © 2011-2022 走看看