图片的懒加载 末蓝、 2022-06-04 02:40 238阅读 0赞 有时候在一个界面上需要加载很多的图片,为了提升用户体验,使网页响应速度快,我们有时候会对图片进行相应的处理。处理方法分为:预加载和懒加载。 一:懒加载 1、懒加载定义:也就是延迟加载。当访问一个页面的时候,先把img的路径放在自定义的一个属性(例如:data-original)上保存,此时图片是还没有加载的,因为没有设置src属性,浏览器是不会发出请求去下载图片。如果事先知道图片的路径,可以直接在html中设置data-original的值,如果data-original的值是通过后台发送过来,那么就得在js中设置data-original的值。然后满足一定条件的时候,在js中从自定义的属性data-original上读取出路径值,赋给src-即设置真正的路径,让图片显示出来。 2、懒加载优点:网页加载速度快,减轻服务器压力,节约流量,用户体验好。 二、预加载 1、预加载定义:也就是提前加载图片到浏览器中,当需要时,再从本地缓存中渲染。 2、预加载的方法: 用css+js实现预加载 仅用js实现预加载 使用ajax实现预加载 详情请参考链接:[http://web.jobbole.com/86785/][http_web.jobbole.com_86785] 三、懒加载和预加载的比较 1、懒加载是延迟加载,对服务器、前端有一定的缓解压力 2、预加载是提前加载到浏览器中,对服务器、前端有一定压力 四、懒加载的例子 因为图片的地址是后台发回来的,所以需要在js中将地址赋给data-address(自己定义变量名)是。第一张图片不需要预加载,所以没有设置data-original。 这里还使用了masterslider.js插件,所以在<head>里面还需要引入masterslider.js,masterslider.main.css,ms-showcase2.css <script src="http://i.gtimg.cn/qzone/biz/gdt/lib/jquery/jquery-2.1.4.js?max_age=31536000"></script> <script type='text/javascript' id='masterSliderJs' src='js/masterslider.min.js?v=91489dfd17'></script> <link rel='stylesheet' href='css/ms-showcase2.css?v=e41f80ce12'/> <link rel='stylesheet' href='css/masterslider.main.css?v=1dba4608d6'/> 1、html <article id="articleBox"> <div class="ms-showcase2-template ms-dir-v"> <!-- masterslider --> <div class="master-slider ms-skin-default" id="masterslider"> <div class="ms-slide"> <img id="0" alt="lorem ipsum dolor sit"/> <img class="ms-thumb" alt="thumb" id="thumb0"/> </div> <div class="ms-slide"> <img id="1" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb1"/> </div> <div class="ms-slide"> <img id="2" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb2"/> </div> <div class="ms-slide"> <img id="3" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb3"/> </div> <div class="ms-slide"> <img id="4" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb4"/> </div> <div class="ms-slide"> <img id="5" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb5"/> </div> <div class="ms-slide"> <img id="6" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb6"/> </div> <div class="ms-slide"> <img id="7" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb7"/> </div> <div class="ms-slide"> <img id="8" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb8"/> </div> <div class="ms-slide"> <img id="9" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb9"/> </div> <div class="ms-slide"> <img id="10" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb10"/> </div> <div class="ms-slide"> <img id="11" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb11"/> </div> <div class="ms-slide"> <img id="12" alt="lorem ipsum dolor sit" data-address=''/> <img class="ms-thumb" alt="thumb" id="thumb12"/> </div> <div class="ms-slide"> <img id="cropedBigImg" value='custom' alt="lorem ipsum dolor sit" data-address='' title="自定义背景"/> <img class="ms-thumb" value='custom' id="customImg" title="自定义背景" src="image/addIcon.png" alt="thumb" data-toggle="modal" data-target="#myModal""/> </div> </div> <!-- end of masterslider --> </div> </article> 2、css body{ width: 100%; min-width: 1380px; margin:0px; padding: 0px; /*position:relative;*/ letter-spacing: 1px; font-size:15px; /*background-color: rgb(51, 51, 51);*/ background-color: #edf0f2; } article{ position: relative; padding: 0px; max-width:1000px; margin:87px auto; display:none; } 3、js $(function(){ var activity_id = sessionStorage.getItem('activity_id'), user_id = sessionStorage.getItem('user_id'), slider = null, //调用masterSlider.js,生成滚动的对象 viewFlag = 1; // 初始化masterSlider一些参数 initialMasterSlider(); // 请求微信墙样式,即设置data-address requestAllImgStyle(); // 监听slider开始变化的事件,触发改变img的src时刻 slider.api.addEventListener(MSSliderEvent.CHANGE_START,function(){ // slider每改变一屏的时候触发 var index = slider.api.index(); if( index != 0){ load2img(index); } }); // 懒加载图片 function load2img(index){ var totalSlider = slider.api.count(), pageImg = null, imgSrc = ''; if( index == totalSlider-1 ){ // slider的下标从0开始,到了最后一张slider特殊处理 pageImg = $('#cropedBigImg'); imgSrc = pageImg.attr('data-address'); pageImg.attr('src',imgSrc); }else{ pageImg = $('#'+index), imgSrc = pageImg.attr('data-address'); pageImg.attr('src',imgSrc); } } // 设置masterSlider.js的一些参数 function initialMasterSlider(){ slider = new MasterSlider(); // 设置大图容器的属性:最大的宽度和最大的高度 slider.setup('masterslider' , { width:900, height:450, space:5, view:'flow' }); slider.control('arrows'); slider.control('scrollbar' , {dir:'h'}); slider.control('thumblist' , {autohide:false ,dir:'v',arrows:false}); } // 初始化的时候请求所有的样式 function requestAllImgStyle(){ var url = globalConfig.pre_api_url + "/wxwall_api/activity/get_wall_styles.php", data = { 'activity_id':activity_id }; request(url,data,function(res){ console.log(res.msg); var data = res.data; if( data == false || data == undefined ){ error_prompt_alert('没有获取到数据'); $('#loding').hide(); }else{ addWallStyleToDOM(data); } }); } // 将获取到的所有微信墙的样式加载到DOM里面 function addWallStyleToDOM(datas){ var len = datas.length, data = null, i = 0, div_list = '', en_name = '', ch_name = '', bigImgPreURL = globalConfig.pre_api_url + "/wall/style", smallImgPreURL = globalConfig.pre_api_url + '/img', bigImgSrc = '', smallImgSrc = '', bigImgObj = null, smallImgObj = null, cropedImgObj = $('#cropedBigImg'); for( ;i<len;i++ ){ data = datas[i]; en_name = data.en_name; ch_name = data.ch_name; bigImgObj = $('#'+i); smallImgObj = $('#thumb'+i); // 图片路径 if( en_name == 'custom' ){ // 自定义微信墙样式 bigImgSrc = bigImgPreURL + '/' + en_name + '/images/' + activity_id + '/kuxuan.jpg'; smallImgSrc = smallImgPreURL + '/custom_style/' + activity_id +'/' + en_name +'.jpg'; }else{ bigImgSrc = bigImgPreURL + '/' + en_name + '/images/kuxuan.jpg'; smallImgSrc = smallImgPreURL + '/' + en_name +'.jpg'; } // 第一张不需要懒加载 if( i == 0 ){ bigImgObj.attr('src',bigImgSrc); }else{ bigImgObj.attr('data-address',bigImgSrc); } bigImgObj.attr('value',en_name); bigImgObj.attr('title',ch_name); smallImgObj.attr('src',smallImgSrc); smallImgObj.attr('value',en_name); smallImgObj.attr('title',ch_name); if( i == len-1 ){ // 显示“我选这张”按钮和article src="image/addIcon.png" $('#cropedBigImg').attr('data-address','image/addIcon.png'); viewFlag = 3; viewRefresh(viewFlag); } } } }); 下面这段代码是触发设置src的时刻 slider.api.addEventListener(MSSliderEvent.CHANGE_START,function(){ // slider每改变一屏的时候触发 var index = slider.api.index(); if( index != 0){ load2img(index); } }); 下面这段代码是设置src // 懒加载图片 function load2img(index){ var totalSlider = slider.api.count(), pageImg = null, imgSrc = ''; if( index == totalSlider-1 ){ // slider的下标从0开始,到了最后一张slider特殊处理 pageImg = $('#cropedBigImg'); imgSrc = pageImg.attr('data-address'); pageImg.attr('src',imgSrc); }else{ pageImg = $('#'+index), imgSrc = pageImg.attr('data-address'); pageImg.attr('src',imgSrc); } } [http_web.jobbole.com_86785]: http://web.jobbole.com/86785/
相关 图片懒加载 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nvbmds 青旅半醒/ 2022年11月16日 13:41/ 0 赞/ 326 阅读
相关 图片懒加载 function lazyLoadImg() { var img = document.getElementsByTagName('img'); s 谁践踏了优雅/ 2022年09月28日 13:05/ 0 赞/ 389 阅读
相关 图片懒加载 在一个项目中,如果同时加载的图片太多的话,会导致页面卡顿,这个时候就会用到懒加载。懒加载的实现原理是监听浏览器的滚动条事件,先加载出前面几张图片,然后当滚动条滚动的时候再依次加 分手后的思念是犯贱/ 2022年06月17日 13:49/ 0 赞/ 172 阅读
相关 图片懒加载 1.引入js jquery.lazyload.js(如下) / Lazy Load - jQuery plugin for lazy loading 缺乏、安全感/ 2022年06月16日 06:44/ 0 赞/ 492 阅读
相关 图片懒加载 懒加载的意义[(在线demo预览)][demo] 尽管很多公司的网页都有一些限制,比如页面的最大的图片大小不得大于50k,也有很多图片优化工具fis3、gulp等等,但是 痛定思痛。/ 2022年06月04日 07:58/ 0 赞/ 531 阅读
相关 图片懒加载 在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度, 偏执的太偏执、/ 2022年05月28日 02:07/ 0 赞/ 550 阅读
相关 图片懒加载 <!--<!doctype html>--> <!--<html lang="en">--> <!--<head>--> <!--<me 亦凉/ 2022年05月23日 12:19/ 0 赞/ 488 阅读
相关 图片懒加载 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> r囧r小猫/ 2022年05月21日 06:54/ 0 赞/ 532 阅读
相关 图片懒加载 \[外链图片转存失败(img-vbwUXXxJ-1563574134995)([https://upload-images.jianshu.io/upload\_images/ 川长思鸟来/ 2021年09月30日 00:24/ 0 赞/ 848 阅读
还没有评论,来说两句吧...