图片懒加载的实现

图片懒加载的实现1 datasetHTML5 中我们可以使用 data 前缀设置我们需要的自定义属性 来进行一些数据的存放 dataset 自定义属性的格式 data xx 前面的 data 是固定的 后面的 xx 一般为表示与自定义属性相关的字符串 img 标签中的 data src 属性就属于一种自定义的 dataset 属性 举个例子

1. dataset

HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放。dataset自定义属性的格式:data-xx;前面的data-是固定的,后面的xx一般为表示与自定义属性相关的字符串。img标签中的data-src属性就属于一种自定义的dataset属性。
举个例子:

 
  
dinner

而当我们想要获取这个属性时:

var today = document.getElementById('today'); var typeOfFood = today.dataset.food; 

参考文献:https://www.zhangxinxu.com/wordpress/2011/06/html5自定义属性对象dataset简介/

2. 懒加载

页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求。所以懒加载基本的原理就是用dataset自定义属性取代src存储图片的路径,然后在检测到图片进入到可视区域的时候,再将其换为src。那我们就来基本实现一下吧。

  • 基本布局
    首先将所有图片的src换为自定义属性data-src,这个时候图片是不显示的:

 
   
   懒加载 
    
   
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 判断条件
    window.innerHeight 可以获取到这个窗口的高度(不包括工具栏和滚动条)。getBoundingClientRect()方法用来获取页面中某个元素的左、上、右、下分别相对浏览器视窗的位置,返回的是一个矩形对象,包括四个属性,分别是left 、top、right、bottom。分别表示元素各边与页面上边和左边的距离。
    基本的判断就是如果该图片距离窗口上方的位置小于窗口的高度(也就是说该图片已经进入了窗口),那么就将该图片的src属性赋为data-src找那个存的图片路径。
    然后全局绑定scroll事件,在滚动页面的时候,图片进入到窗口后,500ms之后才会显示出图片。






 

这样就完后了一个懒加载图片的效果了。

3. 占位图
这样的懒加载图片的效果还不是很明显,我们通常会用一张占位图来显示该区域有图片即将加载出来(loading.gif),将所有图片的src设为占位图标,然后在滚动的时候图片进入可视区域src就会被替换成data-src中存的图片路径。完整的代码为:

 
   
   懒加载 
    
   
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
  • 图片懒加载的实现
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208489.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:28
下一篇 2026年3月19日 上午11:28


相关推荐

  • 讯飞星辰带你玩转MCP,A2A与它是敌是友?

    讯飞星辰带你玩转MCP,A2A与它是敌是友?

    2026年3月14日
    2
  • 最短路径问题—SPFA算法详解

    最短路径问题—SPFA算法详解前言博客编写人:Willam博客编写时间:2017/3/12博主邮箱:2930526477@qq.com(有志同道合之人,可以加qq交流交流编程心得)1、最短路径问题介绍问题解释:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)SPFA…

    2022年6月22日
    38
  • md5使用方法 java_MD5在java中的使用

    md5使用方法 java_MD5在java中的使用MD5 是什么 MD5 是 message digestalgori 信息 摘要算法 的缩写 被广泛用于加密和解密技术上 它可以说是文件的 数字指纹 任何一个文件 无论是可执行程序 图像文件 临时文件或者其他任何类型的文件 也不管它体积多大 都有且只有一个独一无二的 MD5 信息值 并且如果这个文件被修改过 它的 MD5 值也将随之改变 因此 我们可以通过对比同一文件的 MD5 值 来校验这个文件是否

    2025年8月14日
    7
  • 树莓派怎么安装pycharm_树莓派卸载python2.7

    树莓派怎么安装pycharm_树莓派卸载python2.71、下载pycharm通过VNC界面下载pycharm或者在其他系统下载后推送到树莓派,下载地址pycharm_linux2、将下载的文件复制到/opt文件夹如果在树莓派中直接下载的,会在’/home/pi/下载’文件夹,将下载的文件复制到/opt文件夹sudomvpycharm-community-2020.1.1.tar.gz/opt/pycharm-community-2020.1.1…

    2022年8月27日
    11
  • Windows 7(Win7)下Visual Studio 2012(VS2012)编译jrtplib与MinGW编译jrtplib

    一、下载jrtplib、jthread、CMake、VisualStudio2012和Qt5.5.1jrtplib:http://research.edm.uhasselt.be/jori/jrtplib/jrtplib-3.9.1.zipjthread:http://research.edm.uhasselt.be/jori/jthread/jthread-1.3.1.zipCM

    2022年4月8日
    50
  • xsync 脚本[通俗易懂]

    xsync 脚本[通俗易懂]xsync文件分发脚本#!/bin/bash#1获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0));thenechonoargs;exit;fi#2获取文件名称p1=$1fname=`basename$p1`echofname=$fname#3获取上级目录到绝对路径pdir=`cd-P$(dirname$p1…

    2022年6月2日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号