zoukankan      html  css  js  c++  java
  • 图片加载优化

    一、按需加载

    1.js代码:

    <script>
        var imgs = document.getElementsByTagName('img');
        // 获取视口高度与滚动条的偏移量
        function lazyload(){
            var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
            var viewportSize = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
            for(var i=0; i<imgs.length; i++) {
                var x =scrollTop+viewportSize-imgs[i].offsetTop;
                if(x>0){
                    imgs[i].src = imgs[i].getAttribute('loadpic');   
                }
            }
        }
        setInterval(lazyload,1000);
    </script>

    2.jquery代码:

    $(document).ready(function(){
        // 获取页面视口高度
        var viewportHeight = $(window).height();
        var lazyload = function() {
            // 获取窗口滚动条距离
            var scrollTop = $(window).scrollTop();
            $('img').each(function(){
            // 判断 视口高度+滚动条距离 与 图片元素距离文档原点的高度         
            var x = scrollTop + viewportHeight - $(this).position().top;
            // 如果大于0 即该元素能被浏览者看到,则将暂存于自定义属性loadpic的值赋值给真正的src            
            if (x > 0)
            {
                $(this).attr('src',$(this).attr('loadpic')); 
            }
        })
        }
        // 创建定时器 “实时”计算每个元素的src是否应该被赋值
        setInterval(lazyload,100);
    });

    二、异步加载

    <script type="text/javascript">
    var url="http://s1.hao123img.com/resource/site/img/logo.6456fa5.gif";
    //img加载完成触发resolve
    function load(url){
    return new Promise(function(resolve, reject) {
        var image = new Image();  
        image.onload = function() {
          resolve(image);
        };
        image.onerror = function() {
          reject(new Error('Could not load image at ' + url));
        };
        image.src = url;
    });
    }
    //img添加到页面
    load(url).then(function(value) {
      document.body.appendChild(value);
    });
    alert('你先看到我,再看到图片');
    </script>
  • 相关阅读:
    image 和 barplot 的组合
    par函数mgp 参数-控制坐标轴的位置
    R语言绘图时的边界碰撞问题
    R语言绘制花瓣图flower plot
    mothur 计算稀释性曲线
    R语言 vegan包计算物种累计曲线
    R语言数据框小技巧
    tophat-fusion 鉴定融合基因
    FusionCancer-人类癌症相关的融合基因的数据库
    rrnDB数据库简介-16S基因多拷贝数的证据
  • 原文地址:https://www.cnblogs.com/taoxiaodan/p/6163441.html
Copyright © 2011-2022 走看看