加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

关于图片预加载的思考

发布时间:2020-12-14 23:56:33 所属栏目:资源 来源:网络整理
导读:引子: 很多时候,我们在写html页面的时候,当需要在页面中加入图片时,我们很自然地把图片直接用 标签放在了 里面,这本来是没有多大问题的。 但是当图片数量很多的时候,问题就来了。Html页面在被解析器解析的时候要不断去寻找图片的路径去加载图片,而这

引子:

很多时候,我们在写html页面的时候,当需要在页面中加入图片时,我们很自然地把图片直接用标签放在了里面,这本来是没有多大问题的。

但是当图片数量很多的时候,问题就来了。Html页面在被解析器解析的时候要不断去寻找图片的路径去加载图片,而这些图片不一定所以都会被用户通过触发一些类似点击的操作所看到。这样,一些不必要的图片预加载就会拉长了页面的加载时间,带来的用户体验是不好的。

为了解决这个性能问题,有一个比较好的解决问题就是用js去延迟图片预加载。那么具体的实现过程是怎样的呢?

我先把我实现的代码放在下面:

Document .showpic<span style="background-color: #f5f5f5; color: #000000">{<span style="background-color: #f5f5f5; color: #ff0000">position<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">absolute<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">height<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">550px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">width<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">90%<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">margin-left<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">80px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">background-color<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> black<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #000000">}<span style="background-color: #f5f5f5; color: #800000">

.button-box<span style="background-color: #f5f5f5; color: #000000">{<span style="background-color: #f5f5f5; color: #ff0000">position<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> absolute<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">margin-top<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">560px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">margin-left<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 600px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">z-index<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 5<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #000000">}<span style="background-color: #f5f5f5; color: #800000">

.preload<span style="background-color: #f5f5f5; color: #000000">{<span style="background-color: #f5f5f5; color: #ff0000">position<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> fixed<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">height<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 100%<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">width<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">100%<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">top<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">0<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">background-color<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> white<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">display<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> none<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #000000">}<span style="background-color: #f5f5f5; color: #800000">

img<span style="background-color: #f5f5f5; color: #000000">{<span style="background-color: #f5f5f5; color: #ff0000">position<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> absolute<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">margin-left<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 30px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">margin-top<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 3px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #000000">}<span style="background-color: #f5f5f5; color: #800000">

button<span style="background-color: #f5f5f5; color: #000000">{<span style="background-color: #f5f5f5; color: #ff0000">height<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 30px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">width<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff">80px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #ff0000">font-size<span style="background-color: #f5f5f5; color: #000000">:<span style="background-color: #f5f5f5; color: #0000ff"> 10px<span style="background-color: #f5f5f5; color: #000000">;<span style="background-color: #f5f5f5; color: #000000">}
<span style="color: #0000ff"></<span style="color: #800000">style<span style="color: #0000ff">>
<span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="https://code.jquery.com/jquery-1.12.4.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">>
<span style="color: #0000ff"></<span style="color: #800000">head<span style="color: #0000ff">>

<span style="color: #0000ff"><<span style="color: #800000">body<span style="color: #0000ff">>
<span style="color: #0000ff"><<span style="color: #800000">div <span style="color: #ff0000">class<span style="color: #0000ff">="showpic"<span style="color: #0000ff">>
<span style="color: #0000ff"><<span style="color: #800000">img <span style="color: #ff0000">src<span style="color: #0000ff">="img/pexels-photo-297814.jpeg"<span style="color: #ff0000"> id<span style="color: #0000ff">="img"<span style="color: #0000ff">>
<span style="color: #0000ff"></<span style="color: #800000">div<span style="color: #0000ff">>

     <span style="color: #0000ff"&gt;<</span><span style="color: #800000"&gt;div </span><span style="color: #ff0000"&gt;class</span><span style="color: #0000ff"&gt;="button-box"</span><span style="color: #0000ff"&gt;></span>
               <span style="color: #0000ff"&gt;<</span><span style="color: #800000"&gt;button </span><span style="color: #ff0000"&gt;type</span><span style="color: #0000ff"&gt;="button"</span><span style="color: #ff0000"&gt; value</span><span style="color: #0000ff"&gt;="前一张"</span><span style="color: #ff0000"&gt;  data-control</span><span style="color: #0000ff"&gt;="prev"</span><span style="color: #ff0000"&gt; class</span><span style="color: #0000ff"&gt;="button"</span><span style="color: #0000ff"&gt;></span>前一张<span style="color: #0000ff"&gt;</</span><span style="color: #800000"&gt;button</span><span style="color: #0000ff"&gt;></span>
               <span style="color: #0000ff"&gt;<</span><span style="color: #800000"&gt;button </span><span style="color: #ff0000"&gt;type</span><span style="color: #0000ff"&gt;="button"</span><span style="color: #ff0000"&gt; value</span><span style="color: #0000ff"&gt;="后一张"</span><span style="color: #ff0000"&gt;  data-control</span><span style="color: #0000ff"&gt;="next"</span><span style="color: #ff0000"&gt; class</span><span style="color: #0000ff"&gt;="button"</span><span style="color: #0000ff"&gt;></span>后一张<span style="color: #0000ff"&gt;</</span><span style="color: #800000"&gt;button</span><span style="color: #0000ff"&gt;></span>
     <span style="color: #0000ff"&gt;</</span><span style="color: #800000"&gt;div</span><span style="color: #0000ff"&gt;></span>
     <span style="color: #0000ff"&gt;<</span><span style="color: #800000"&gt;div </span><span style="color: #ff0000"&gt;class</span><span style="color: #0000ff"&gt;="preload"</span><span style="color: #0000ff"&gt;></</span><span style="color: #800000"&gt;div</span><span style="color: #0000ff"&gt;></span>

<span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">type<span style="color: #0000ff">="text/javascript"<span style="color: #ff0000"> src<span style="color: #0000ff">="js/preload.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">>
<span style="color: #0000ff"></<span style="color: #800000">body<span style="color: #0000ff">>
<span style="color: #0000ff"></<span style="color: #800000">html<span style="color: #0000ff">><span style="color: #000000">

$(document).ready(function(){

     var imgs = ["img/pexels-photo-297814.jpeg","img/pexels-photo-465445.jpeg","img/pexels-photo-619948.jpeg","img/pexels-photo-620336.jpeg","img/pexels-photo-885746.jpeg","img/pexels-photo-886109.jpeg","img/pexels-photo-888994.jpeg"];

     var  index = 0,len =imgs.length;

    $(".button").on("click",function(){

             if($(this).data('control')=== "prev"){
                       index = Math.max(0,--index);
             }else{
                       index = Math.min(len-1,++index);
             }

             $("#img").attr("src",imgs[index]);

    });

});

这个案例我是要实现通过点击按钮实现图片的展示过程。显然,我在

标签里面只是放了一张图片(避免页面打开是什么也没有),并没有把全部可以展示的图片都放在盒子里面。因为这样势必会加大web浏览器解析html页面的压力。

我把这些图片的所有搜索路径的放在了js代码中,并通过修改src属性的方法来更新标签,其中我还用到了html的data属性来自定义点击按钮的类型,并通过在js中获取这个data值来确定图片路径的更改。

这样的实现,就比较有利于减轻html页面解析过程中对浏览器解析器的压力。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读