美文网首页
用js做个简单的图片懒加载

用js做个简单的图片懒加载

作者: KroketTian | 来源:发表于2018-06-14 16:33 被阅读0次

一个页面图片过多,一次性请求显然不合理,虽然浏览器也会对放在html较前位置的图片先进行加载,这样会大大影响浏览器的渲染速度,而且随着浏览器加载进来的图片越来越多,占用了大量的内存,页面会越来越卡,这个就是个问题了,而且一次性索取大量的信息,对于服务器也不是很好的操作。因此,图片懒加载就派上用场了。

先说一下浏览器的图片加载与存放。浏览器会通过html标签,定位到需要加载的资源,然后依次对资源进行并行下载,根据浏览器的不同,资源加载的顺序也会有区别,有点浏览去会preloader后面的js文件,有的会对所需的资源从上到下进行加载,如果用js进行图片的加载控制的话,要注意两者间的加载先后。

浏览器加载完图片之后,对于要在页面上显示的图片,浏览器就会进行渲染。firefox会将页面渲染过的图片存在缓存中,占用浏览器进出的内存。而且这个图片占用内存的大小和图片的长宽有关,和图片的文件大小无关。也就是说,如果页面上有很多的大图,随着渲染的数量增多,内存会蹭蹭蹭的往上涨。虽然浏览器会对自己的内存进行清理,但是如果一下子渲染大量的图片,浏览器还是很容易就会崩溃。这是可以对图片进行懒加载,并且对浏览过的图片进行清理。

图片的懒加载的方法基本就是对img标签动态添加src来利用html来进行加载。代码大致如下:

接下去,我们还要对已经加载了的,可能用户已经不需要回过去浏览的图片进行清除。

如果要保留之前浏览过的记录,我们需要用一个数组记录一下,具体代码如下:

var imgList = document.images;

var imgDataList = [];

function lazyloadImgIntoDom(imgEle){

    if(imgEle.hasLoad){ return; }else{ imgEle.hasLoad = true;

    var newSrc = imgEle.attributes['data-lazySrc'].value;

    imgDataList.push(newSrc); imgEle.src = newSrc; }

}

function lazyloadpageImg(){

    for(var i = 0 ; i < imgList.length ; i++){

        var imgTop = imgList[i].getBoundingClientRect().top;

        var imgBottom = imgList[i].getBoundingClientRect().bottom;

        var pageTop = document.documentElement.clientHeight;

        if(imgBottom>0 && imgTop <= pageTop){

            lazyloadImgIntoDom(imgList[i]);

        }else if(imgBottom < 0){

            removeImg(imgList[i]) ;

        }

    }

}

function removeImg(imgEle){

    imgEle.hasLoad = false;

    imgEle.src = '';

}

lazyloadpageImg();

window.onscroll = function(){ lazyloadpageImg() ;}

相关文章

  • 用js做个简单的图片懒加载

    一个页面图片过多,一次性请求显然不合理,虽然浏览器也会对放在html较前位置的图片先进行加载,这样会大大影响浏览器...

  • 图片懒加载

    前端实现图片懒加载(lazyload)的两种方式 原生JS实现最简单的图片懒加载 30行Javascript代码实...

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 常见网站性能优化方法

    1. 尽量减少HTTP请求次数 合并js 合并css 图片sprite 2. 延迟加载内容 图片懒加载 数据懒加载...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

  • 图片懒加载和下拉懒加载

    图片懒加载http://js.jirengu.com/leve/1/edit?html 下拉懒加载http://j...

  • 性能优化

    性能优化有哪些方法:1尽量减少http请求 合并js 合并css 图片雪碧图2延迟加载内容 图片懒加载 数据懒加载...

  • 懒加载和预加载

    懒加载 js懒加载 意义 懒加载(LazyLoad)是前端优化的一种有效方式,能极大的提升用户体验,图片加载是其重...

网友评论

      本文标题:用js做个简单的图片懒加载

      本文链接:https://www.haomeiwen.com/subject/nsbyeftx.html