图片预加载

简介: 图片预加载

图片预加载的三种方法

lazyload插件

lazyload是jquer下的一个实现预加载的插件,cdn为:

http://apps.bdimg.com/libs/jquery-lazyload/1.9.5/jquery.lazyload.js

jquery的cdn:

http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js

先引入文件

    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
    <script src="http://apps.bdimg.com/libs/jquery-lazyload/1.9.5/jquery.lazyload.js"></script>

操作如下

    $(function (){
        $("img").lazyload({
            placeholder:"./loading.gif",   
            effect:"fadeIn",
            event:"mouseover"
        })
    })

placeholder是设置加载时的的loading图片

effect是设置加载时的渐入效果

 event是采用什么事件触发加载,常用的是scroll mouseover click 等

 关于lazyload的更多知识,可以上官网查看  Lazy Load Remastered

        <img data-original="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="" class="lazy" >
        <img data-original="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="" class="lazy" >

原生js

  其中传入参数必须为一个数组,数组里面存放的是图片的src

        function preimg(arr){
            var img=[],
            for(var i=0;i<arr.length;i++){
                img[i]=new Image();
                img[i].src=arr[i];
            }
preimg(["http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg","http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg","http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg"])
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="">
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="">
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="">
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="">

Image对象有两个常用的事件句柄,onload与onerror

ajax

 ajax预加载的原理就是,先加载图片文件的js和css,再给Image对象添加src,一共三个文件pre2.html preimgjs.js preimgcss.css

 pre2.html

    <script >
    window.onload=function(){
        setTimeout(function (){
            var xhr=new XMLHttpRequest();
            //js
            xhr.open("GET","./preimgjs.js");
            xhr.send(null);
            //css
            var xhr2=new XMLHttpRequest();
            xhr2.open("GET","./preimgcss.css");
            xhr2.send(null);
            //img
            new Image().src = "http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg";
        },1000);
    }
    </script>
      <body>
      <img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" alt="">
   </body>

preimgjs.js

    setTimeout(function (){
        setTimeout({
            var oHead=document.getElementsByTagName('head');
            var oCss=document.createElement("link");
            oCss.rel="stylesheet";
            oCss.href="./preimgcss.css";
            var oJs=document.createElement("script");
            oJs.src="./preimgjs.js";
            oHead.appendChild(oCss);
            oHead.appendChild(oJs);
            new Image().src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg"
        },1000)
    },1000)

preimgcss.css只是设定img的样式就不上传了

 为什么在html文件中使用ajax加载js和css,js和css的加载不会影响当前预加载页面。

总结

 本质上后两种方法都是一样的,都是先建立一个Image对象,给img对象依次赋地址, 达到预加载的情况


相关文章
|
1月前
|
存储 缓存 监控
网站的图片资源是否需要设置缓存?
【10月更文挑战第18天】网站的图片资源一般是需要设置缓存的,但要根据图片的具体特点和网站的需求,合理设置缓存时间和缓存策略,在提高网站性能和用户体验的同时,确保用户能够获取到准确、及时的图片信息。
|
4月前
|
存储 JavaScript UED
图片懒加载
图片懒加载
|
7月前
|
缓存 前端开发 JavaScript
加速你的网站:一文看懂预加载和懒加载
加速你的网站:一文看懂预加载和懒加载
|
存储
图片懒加载(二)
图片懒加载(二)
54 1
|
小程序 JavaScript API
小程序图片渲染
小程序图片渲染
112 0
|
JavaScript 前端开发 UED
实现图片懒加载(及优化相关)
工作之余想要休闲一下(看-美-女-图),但是又觉得单纯休闲不利于自身进步,于是 ……
实现图片懒加载(及优化相关)
|
JavaScript UED
实现图片懒加载
实现图片懒加载
图片资源配置
图片资源配置
128 0
|
缓存 JavaScript 前端开发
图片预加载与懒加载
前面做了个招聘页面,里面有大量的图片需要加载。 一开始都是全部写在页面中,在测试环境还看不出很慢,一放到正式环境就不对了。
图片预加载与懒加载
|
JavaScript UED 缓存
图片预加载和懒加载的实现方法
图片预加载,即图片提前加载,可以保证图片快速、无缝的发布,用户需要查看时可直接从本地缓存中渲染,适用于图片占据很大比例的网站。 一、懒加载 将图片src赋值为一张默认的图片,当用户滚动到可视区域的时候,再去加载真正的图片; 代码实现: html代码 js代码 vue中实现懒加载 对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。
2193 0