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

图片预加载

时间:2019-02-14 00:27:35      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:.com   nbsp   []   body   就是   com   样式   bmc   data   

lazyload插件

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

jquery的cdn:

  先引入文件

    <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的更多知识,可以上官网查看  http://appelsiini.net/projects/lazyload/

        <img data-original="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg"  class="lazy" >
        <img data-original="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg"  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" >
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" >
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" >
<img src="http://ubmcmm.baidustatic.com/media/v1/0f000KLR1mFt_P41d9V_j0.jpg" >

    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" >
   </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对象依次赋地址, 达到预加载的情况

  

图片预加载

标签:.com   nbsp   []   body   就是   com   样式   bmc   data   

原文地址:https://www.cnblogs.com/menglong1214/p/10372451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!