js实现多张图片延迟加载效果

yizhihongxing

当网页中要加载的图片过多时,如果不进行延迟加载,会导致页面加载缓慢,影响用户体验。本文介绍如何使用 JavaScript 实现多张图片延迟加载效果。

  1. 方案一

第一步是在 HTML 中添加图片元素,并设置占位符图片,例如:

<img src="placeholder.gif" data-src="image1.jpg">
<img src="placeholder.gif" data-src="image2.jpg">
<img src="placeholder.gif" data-src="image3.jpg">
<img src="placeholder.gif" data-src="image4.jpg">

这里的占位符图片可以是任意一个小的图片文件,用于占据原本要加载的图片的位置。

第二步是通过 JavaScript 中的 window.onload 事件,监听当网页中所有资源文件都加载完成后,再开始加载图片。其中 querySelectorAll 方法可以选取所有带有 data-src 属性的图片元素,并将图片的 src 属性设置为对应的 data-src 属性值,例如:

window.onload = function() {
  var images = document.querySelectorAll('img[data-src]');
  Array.prototype.forEach.call(images, function(image) {
    image.setAttribute('src', image.getAttribute('data-src'));
  });
};

这里采用原生 JavaScript 的 Array.prototype.forEach.call 方法,是因为 images 是一个类数组对象。

  1. 方案二

第一步是与方案一相同,在 HTML 中添加图片元素,并设置占位符图片。

第二步是通过 JavaScript 中的 window.onscroll 事件,监听当用户滚动页面时,判断哪些图片已经进入到了可视区域内。document.documentElement.clientHeight 表示当前窗口可见区域高度,getBoundingClientRect() 方法可以获取元素相对于视口的位置信息,判断条件为元素距离顶部的位置是否小于等于视口可见区域的高度。代码如下:

window.onscroll = function() {
  var images = document.querySelectorAll('img[data-src]');
  Array.prototype.forEach.call(images, function(image) {
    if (image.getBoundingClientRect().top <= document.documentElement.clientHeight) {
      image.setAttribute('src', image.getAttribute('data-src'));
      image.removeAttribute('data-src');
    }
  });
};

这里需要注意,在图片元素加载完成后,需要将其 data-src 属性删除,以避免重复加载。

以上两种方案都可以实现多张图片的延迟加载效果,第一种方案在页面加载完成后一次性加载所有图片,适合图片数量较少的情况;第二种方案则是在用户滚动页面时一张一张地加载图片,适合大量图片需要延迟加载的情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现多张图片延迟加载效果 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C语言实现enum枚举

    当使用C语言编程时,可以使用enum关键字来定义枚举类型。枚举类型允许我们定义一组具有离散值的常量。下面是实现enum枚举的完整攻略: 首先,使用enum关键字定义一个枚举类型。枚举类型的名称应该是唯一的,并且按照C语言的命名规范进行命名。例如,我们可以定义一个表示颜色的枚举类型: enum Color { RED, GREEN, BLUE }; 在上面的示…

    other 2023年8月15日
    00
  • mac平台最好用的万能开源免费播放器-iina

    IINA攻略 IINA是一款Mac平台上的开源免费播放器,支持多种视频格式和音频格式,具有简洁的界面和强大的功能。以下是IINA的完整攻略,包括安装、使用和示例说明。 安装 IINA可以在官网下载安装包进行安装,也可以使用Homebrew进行安装。以下是使用Homebrew进行安装的步骤: 打开终端,输入以下命令安装Homebrew: /bin/bash -…

    other 2023年5月5日
    00
  • Vue3 Composition API优雅封装第三方组件实例

    下面是详细讲解“Vue3 Composition API优雅封装第三方组件实例”的完整攻略: 什么是Vue3 Composition API? Vue3 Composition API是Vue3.x版本的一个全新的API,它是一种基于函数的API形式,通过函数的方式来更好地组织代码、处理逻辑和状态,可以让代码更加清晰易懂,提高代码的可复用性和可维护性。 为什…

    other 2023年6月25日
    00
  • 创建Go工程化项目布局详解

    创建Go工程化项目布局详解 在创建Go语言项目时,良好的项目布局是非常重要的。它可以提高代码的可读性、可维护性和可扩展性。下面是一个详细的攻略,介绍如何创建一个具有良好项目布局的Go工程。 1. 创建项目目录结构 首先,创建一个项目的根目录。在该目录下,可以按照以下结构创建子目录: myproject/ ├── cmd/ │ └── myapp/ │ └──…

    other 2023年9月5日
    00
  • springBoot解决static和@Component遇到的bug

    Spring Boot解决Static和@Component遇到的Bug攻略 在使用Spring Boot开发应用程序时,有时会遇到Static资源和@Component注解的一些常见问题。这些问题可能导致静态资源无法正确加载或@Component注解无法正常工作。下面是解决这些问题的完整攻略。 问题1:Static资源无法加载 问题描述 当使用Spring…

    other 2023年8月6日
    00
  • centos7下搜狗输入法的安装教程

    CentOS 7下搜狗输入法的安装教程 搜狗输入法是一款常用的中文输入法,本文将介绍在CentOS 7下安装搜狗输入法的完整攻略,包括两个示例说明。 步骤一:安装依赖 在安装搜狗输入法之前,需要安装一些依赖。可以使用以下命令安装: sudo yum install -y gtk2-devel gtk3-devel libXtst-devel libXt-de…

    other 2023年5月9日
    00
  • 如何改变placeholder的样式

    如何改变placeholder的样式 在Web开发中,placeholder 用于在输入框中展示默认提示内容,比如搜索框中的“请输入关键字”。默认情况下,placeholder 的样式和输入框的文本样式一致,如果想要将其样式修改为特殊样式,则需要对其进行单独的样式设置。 下面是一些方法: 1.使用 ::placeholder 伪元素 ::placeholde…

    其他 2023年3月28日
    00
  • Java双重检查加锁单例模式的详解

    Java双重检查加锁单例模式的详解 单例模式是一种常见的设计模式,它保证一个类在运行时只有一个实例存在,并提供一种全局访问该实例的方法。Java双重检查加锁单例模式是单例模式的一种常见实现方式。 为什么需要双重检查加锁 单例模式通常通过私有构造函数和静态方法来实现。但是,在多线程环境下,多个线程同时访问单例类就可能导致多个实例的创建,这违背了单例模式的初衷。…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部