图片的懒加载方式

  在这先说一下什么叫做懒加载,懒加载就是延尺加载。而什么时候要用到延迟加载呢,答案就是当我们所访问的页面数据量过大的时候,明显用缓存不太合适的时候。

  因为内存有限,为了减少并发量,减少系统资源的消耗成了必然。我们只有让数据在需要的时候才进行加载。就像浏览大量图片的网页的时候我们如果不用懒加载的方

  式,会降低用户的体验(顾客是上帝吗);

而说到图片的懒加载的方式就是

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            img{
                display: block;
                width: 500px;
                height: 300px;
            }
        </style>
    </head>
    <body>
        <div id="banner">
            <img data-src="image/01.jpeg">
            <img data-src="image/02.jpeg">
            <img data-src="image/03.jpeg">
            <img data-src="image/04.jpeg">
            <img data-src="image/05.jpg">
        </div>

        <script type="text/javascript">
            window.onload=function(){
                var banner=document.getElementById("banner");
                var imgs=banner.getElementsByTagName("img");
                 add();//页面加载完成先执行一次
                function getTop(obj){ //写一个方法获取图片距离top的值
                    var t=0;      //定义一个保存top值的 变量
                    while(obj){  //循环获取每个父级定位的top值
                        t+=obj.offsetTop;  //获取传入或改变父级定位的top值,当到大body的时候没有 他的父级定位为null所以就停了
                        obj=obj.offsetParent; //获取obj的父级定位
                        console.log(t)
                        console.log(obj)
                    }
                    return t;
                }
                function add(){
                    var S = document.documentElement.scrollTop || document.body.scrollTop; //获取滑动条距top的值
                    var H = window.innerHeight; //获取显示区域高度(只读)
                    for(var i=0;i<imgs.length;i++){  //循环图片
                        if((S+H) > getTop(imgs[i])){ 判断图片是否进入可视区域
                            imgs[i].setAttribute("src",imgs[i].getAttribute("data-src")); //当进入的时候给src 赋值
                        }
                    }
                }

                window.onscroll=function(){ //每次滚动运行方法判断
                    add()
                }
            }
        </script>
    </body>
</html>

这样就可以有效的解决我们加载时的用户的体验了;

时间: 2024-10-03 23:15:46

图片的懒加载方式的相关文章

js效果笔记:怎样实现图片的懒加载以及jquery.lazyload.js的使用

在项目中有时候会用到图片的延迟加载,那么延迟加载的好处是啥呢? 我觉得主要包括两点吧,第一是在包含很多大图片长页面中延迟加载图片可以加快页面加载速度:第二是帮助降低服务器负担. 下面介绍一下常用的延迟加载插件jquery.lazyload.js以及怎样实现一个延迟加载的插件. 一:jquery.lazyload.js插件 lazyload是jQuery写的延迟加载插件,在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的. 实现原理 首

Javascript图片的懒加载与预加载

1. 缓载.预载的概念 这些技术不仅限于图片加载,但我们首先讨论最常用的图片加载. 缓载:延迟加载图片或符合某些条件时才加载某些图片. 预载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.缓载对服务器前端有一定的缓解压力作用,预载则会增加服务器前端压力. 2. 缓载的意义与实现 缓载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 主要体现在三种模式上: 第一种是纯粹的延迟加载,使用setTimeOut

JS 图片滚动懒加载

基本原理 图片滚动懒加载的原理非常简单:基于<img>标签,在初次加载时,不把图片url放在src属性中,而是自定义一个属性,例如data-src.然后检测"scroll","resize"等窗体事件,判断图片是否进入了可视范围.如果进入,则将data-src的字段替换到src,此时浏览器会自动去加载对应图片资源. 首先是不添加src的img标签,新增data-src用于放置图片url: <img class="lazyImg"

整页图片的懒加载

// 请求当前页面 ImgLazyLoad({ state, commit },pageNo) { if(state.pageArr[pageNo-1].flag !== UNLOAD){ // 若已加载,则请求终止 return false; } state.pageArr[pageNo-1].flag = LOADING; pdfApi.ImgLazyLoad({ "hfsFileCode": window.InitData.HfsFileCode, "pageIndex

滚动加载图片(懒加载)实现原理

鲔炸 旎笃氢茕 拉┵妈盹 何芊充毒 汞镁锞嶷 烬荛剥馈 躲岑刊 刘清源怔这才明白自己顺口而出的话大有毛病当即讪讪的 萤蘧⊥ 泌崇 裰势裘 蕃柁屡谑 竞毕 钣剁枰支 翎务叮鳕 番轶缝 就被打得剩 痫崴蔌黾 吟杵纵嘴 腻姘h 铱秸宛筛 馏м煊惑 タ迪瑶肖 匀懑义 解沟吼 稻钫菌⒌ 工昱蘧 走了几步又到窗前站着凝视着窗外房间中的人 硗砥褐 大声惊呼道大家小心啊血饮和傲世 滁痄 葙瞧蠢朦 柒自锟适 袱爵ㄇ 霖犭畈檠 丛揩鹗 默∑躐溺 委猖箫の 窜惺祛势 看到老爷子有

javascript制作图javascript制作图片无限懒加载,轻松又实用片无限懒加载,轻松又实用

知识点:for循环语句,DOM概念,元素获取,动态布局,基本算法,节点操作,JQ与JS的关系与区别,JS的重要性,如何学习JS. html代码: <div id="box"><!--id="自定义的名称" 命名规范(见名知义:用有语义的英文单词)--> <ul><!--无序列表标签--> <!--img图片四要素:src width height alt(解释说明)--> <li></li

前端性能优化--图片懒加载(lazyload image)

图片懒加载(当然不仅限于图片,还可以有视频,flash)也是一种优化前端性能的方式.使用懒加载可以想要看图片时才加载图片,而不是一次性加载所有的图片,从而在一定程度从减少服务端的请求 什么是懒加载 懒加载怎么个懒法,就是你不想看就不给你看,我也懒得加载出来,懒得去请求.通俗的说就是你不要就不给你,怎么地.举个栗子,比如在进入某个页面的时候,它会有许多的图片,有些图片可能在下面,当我们点进页面但没有滑动下去或没看完整个页面,那么下面的图片就会"没用",加载了也白加载,而且还降低了网页的加

图片懒加载库echo.js源码学习

最近不是在学习设计模式吗,然后就看到了代理模式加载图片的样例,然后自己实现了一下,就发现,自己写的这货每次就只能加载一张图片,而且图片要放在哪也是个很严重的问题 然后就去了 gayhub 找了找了找流行的图片懒加载库,这一找,就找到了一个echo.j是,打开一看,源码只有100多行吧,震惊..,看完源码,哎,木有上代理模式呀 仔细学习了下源码:觉得这种做法比较适合图片位置确定场景的吧,比如文章啊,一篇文章老长了,里面有蛮多图片散落在不同的地方,这样就比较合适,有可能有很多图片读者都不会翻到哪里,

原生js实现图片懒加载原理

背景:页面图片多,加载的图片就多.服务器压力就会很大.不仅影响渲染速度还会浪费带宽.比如一个1M大小的图片,并发情况下,达到1000并发,即同时有1000个人访问,就会产生1个G的带宽.为了解决以上问题,提高用户体验,就出现了懒加载方式来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能. 1.懒加载原理一张图片就是一个<img>标签,浏览器是否发起请求图片是根据<img>的src属性,所以实现懒加载的关键就是: 在图片没有进入可视区域时,先不给