计算机教程

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

4 5月 , 2019  

本文主要通过以下几方面来说明懒加载技术的原理,个人前端小菜,有错误请多多指出

本文主要通过以下几方面来说明懒加载技术的原理,个人前端小菜,有错误请多多指出

一、什么是图片滚动加载?

一、什么是图片滚动加载?

  通俗的讲就是:当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。

  通俗的讲就是:当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。

二、为什要使用这个技术?

二、为什要使用这个技术?

  比如一个页面中有很多图片,如淘宝、京东首页等等,如果一上来就发送这么多请求,页面加载就会很漫长,如果js文件都放在了文档的底部,恰巧页面的头部又依赖这个js文件,那就不好办了。更为要命的是:一上来就发送百八十个请求,服务器可能就吃不消了(又不是只有一两个人在访问这个页面)。

  比如一个页面中有很多图片,如淘宝、京东首页等等,如果一上来就发送这么多请求,页面加载就会很漫长,如果js文件都放在了文档的底部,恰巧页面的头部又依赖这个js文件,那就不好办了。更为要命的是:一上来就发送百八十个请求,服务器可能就吃不消了(又不是只有一两个人在访问这个页面)。

  因此优点就很明显了:不仅可以减轻服务器的压力,而且可以让加载好的页面更快地呈现在用户面前(用户体验好)。

  因此优点就很明显了:不仅可以减轻服务器的压力,而且可以让加载好的页面更快地呈现在用户面前(用户体验好)。

三、怎么实现?

三、怎么实现?

  关键点如下:

关键点如下:

     
1、页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片(也就没有请求咯,也就提高性能咯),一旦通过javascript设置了图片路径,浏览器才会送请求。有点按需分配的意思,你不想看,就不给你看,你想看了就给你看~

     
1、页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片(也就没有请求咯,也就提高性能咯),一旦通过javascript设置了图片路径,浏览器才会送请求。有点按需分配的意思,你不想看,就不给你看,你想看了就给你看~

  2、如何获取正真的路径,这个简单,现在正真的路径存在元素的“data-url”(这个名字起个自己认识好记的就行)属性里,要用的时候就取出来,再设置;

  2、如何获取正真的路径,这个简单,现在正真的路径存在元素的“data-url”(这个名字起个自己认识好记的就行)属性里,要用的时候就取出来,再设置;

  3、开始比较之前,先了解一些基本的知识,比如说如何获取某个元素的尺寸大小、滚动条滚动距离及偏移位置距离;
 必赢娱乐棋牌 1

  3、开始比较之前,先了解一些基本的知识,比如说如何获取某个元素的尺寸大小、滚动条滚动距离及偏移位置距离; 

  1)屏幕可视窗口大小:对应于图中1、2位置处

1)屏幕可视窗口大小:对应于图中1、2位置处

    原生方法:window.innerHeight 标准浏览器及IE9+ ||
document.documentElement.clientHeight 标准浏览器及低版本IE标准模式 ||

    原生方法:window.innerHeight 标准浏览器及IE9+ ||
document.documentElement.clientHeight 标准浏览器及低版本IE标准模式 ||
document.body.clientHeight 低版本混杂模式

           document.body.clientHeight 低版本混杂模式

       jQuery方法: $(window).height()

       jQuery方法: $(window).height() 

2)浏览器窗口顶部与文档顶部之间的距离,也就是滚动条滚动的距离:也就是图中3、4处对应的位置;

  2)浏览器窗口顶部与文档顶部之间的距离,也就是滚动条滚动的距离:也就是图中3、4处对应的位置;

    原生方法:window.pagYoffset——IE9+及标准浏览器 ||
document.documentElement.scrollTop 兼容ie低版本的标准模式 ||
document.body.scrollTop 兼容混杂模式;

    原生方法:window.pagYoffset——IE9+及标准浏览器 ||
document.documentElement.scrollTop 兼容ie低版本的标准模式 ||

        jQuery方法:$(document).scrollTop();

         document.body.scrollTop 兼容混杂模式;

3)获取元素的尺寸:对应于图中5、6位置处;左边jquery方法,右边原生方法

        jQuery方法:$(document).scrollTop(); 

    $(o).width() = o.style.width;

  3)获取元素的尺寸:对应于图中5、6位置处;左边jquery方法,右边原生方法

    $(o).innerWidth() = o.style.width+o.style.padding;

    $(o).width() = o.style.width; 

    $(o).outerWidth() = o.offsetWidth =
o.style.width+o.style.padding+o.style.border;

    $(o).innerWidth() = o.style.width+o.style.padding;

    $(o).outerWidth(true) =
o.style.width+o.style.padding+o.style.border+o.style.margin;

    $(o).outerWidth() = o.offsetWidth =
o.style.width+o.style.padding+o.style.border;

注意:要使用原生的style.xxx方法获取属性,这个元素必须已经有内嵌的样式,如<div
style=”….”></div>;

    $(o).outerWidth(true)
= o.style.width+o.style.padding+o.style.border+o.style.margin;

如果原先是通过外部或内部样式表定义css样式,必须使用o.currentStyle[xxx]
||document.defaultView.getComputedStyle(0)[xxx]来获取样式值

    注意:要使用原生的style.xxx方法获取属性,这个元素必须已经有内嵌的样式,如<div
style=”….”></div>;

4)获取元素的位置信息:对应与图中7、8位置处

    如果原先是通过外部或内部样式表定义css样式,必须使用o.currentStyle[xxx]
|| document.defaultView.getComputedStyle(0)[xxx]来获取样式值

    1)返回元素相对于文档document顶部、左边的距离;

必赢娱乐棋牌,  4)获取元素的位置信息:对应与图中7、8位置处

    jQuery:$(o).offset().top元素距离文档顶的距离,$(o).offset().left元素距离文档左边缘的距离


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图