基于dataset的使用和图片延时加载的实现方法

yizhihongxing

为了给你更全面的介绍,我将分为两部分来解答你的问题。

基于 dataset 的使用

dataset是HTML5中新增的一个属性,用于为元素存储自定义数据。它可以为我们提供一种方便快捷的方式来访问元素存储的数据,而不需要通过其他的方式来操作元素的属性。

增加数据

<body>
  <div data-name="zhangsan" data-age="18"></div>
</body>

在上述HTML代码中,我们使用data-前缀来为div元素增加数据。其中,data-name存储的是张三的名字,data-age存储的是张三的年龄。

获取数据

我们可以使用HTMLElement.dataset来获取元素的自定义数据。

const div = document.querySelector('div');
const name = div.dataset.name;
const age = div.dataset.age;
console.log(name); // 'zhangsan'
console.log(age); // '18'

使用HTMLElement.dataset可以获取到元素的所有自定义数据,返回的是一个以data-前缀去掉的名称作为属性名的对象。另外,我们在获取数据的时候可以使用驼峰式的写法来获取元素的自定义数据。

示例说明

我们想要在页面中显示一组学生的信息。这里我们可以将每个学生的信息存储在一个div元素中,并使用dataset来管理每个学生的数据。

<body>
  <div class="student-info" data-name="zhangsan" data-age="18" data-gender="male"></div>
  <div class="student-info" data-name="lisi" data-age="19" data-gender="female"></div>
  <div class="student-info" data-name="wangwu" data-age="20" data-gender="male"></div>
</body>

为了在页面上显示学生的信息,我们可以使用以下代码。

const studentInfoList = document.querySelectorAll('.student-info');
studentInfoList.forEach(studentInfo => {
  const name = studentInfo.dataset.name;
  const age = studentInfo.dataset.age;
  const gender = studentInfo.dataset.gender;
  console.log(name, age, gender);
  // 'zhangsan' '18' 'male'
  // 'lisi' '19' 'female'
  // 'wangwu' '20' 'male'
});

图片延时加载的实现方法

当网页中包含大量的图片时,加载的速度会变得很慢,这时可以使用图片延时加载的方式来提升网页的性能和用户的体验。

延时加载技巧的原理是,当浏览器处理到图片时,如果图片未在视口中出现,则不加载图片,待图片进入视口后再进行加载。

实现方法

1. 增加占位符

在图片加载之前,可以先为占位符增加一个img元素,并设置它的宽度、高度、背景色等样式,以使得页面在没有加载图片时也不会出现样式上的错乱。

<img class="lazy-img" data-src="real-image.jpg" src="placeholder.jpg" width="400" height="400" />

上述代码中同时设置了一个data-src属性,用于存储真实图片的地址,src属性则用来占位。

2. 监听视口的滚动事件

监听窗口的滚动事件,当滚动到图片的位置时,进行加载操作。

const lazyImgList = document.querySelectorAll('.lazy-img');
lazyImgList.forEach(lazyImg => {
  const observer = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const realImgSrc = lazyImg.dataset.src;
        lazyImg.setAttribute('src', realImgSrc);
        observer.unobserve(lazyImg);
      }
    });
  });
  observer.observe(lazyImg);
});

上述代码中使用了IntersectionObserverAPI来监听元素是否进入视口,当元素进入视口时,进行图片的真实地址和src属性的更新,并停止对元素的观察。

示例说明

下面示例中,我们实现了一个简单的图片延时加载的例子。其中,图片的真实地址存储在data-src属性中,并使用IntersectionObserverAPI来监听图片是否进入视口。

<body>
  <img class="lazy-img" data-src="https://picsum.photos/id/1082/800/800" src="https://via.placeholder.com/800" width="400" height="400" />
  <img class="lazy-img" data-src="https://picsum.photos/id/1069/800/800" src="https://via.placeholder.com/800" width="400" height="400" />
  <img class="lazy-img" data-src="https://picsum.photos/id/870/800/800" src="https://via.placeholder.com/800" width="400" height="400" />
</body>
const lazyImgList = document.querySelectorAll('.lazy-img');
lazyImgList.forEach(lazyImg => {
  const observer = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const realImgSrc = lazyImg.dataset.src;
        lazyImg.setAttribute('src', realImgSrc);
        observer.unobserve(lazyImg);
      }
    });
  });
  observer.observe(lazyImg);
});

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于dataset的使用和图片延时加载的实现方法 - Python技术站

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

相关文章

  • 用javascript动态调整iframe高度的方法

    让我们来详细讲解一下“用JavaScript动态调整iframe高度的方法”。 1. 初步思路 我们知道,iframe是用来在网页中嵌入其他网页的一种标签,它可以让我们把其他页面的内容直接展现在当前页面上,那么我们如何动态调整嵌入页面的高度呢? 我们首先需要获取iframe的内容高度,然后再通过JavaScript动态设置iframe的高度。 2. 获取if…

    JavaScript 2023年6月11日
    00
  • Javascript中Math.max和Math.max.apply的区别和用法详解

    JavaScript中,Math.max()和Math.max.apply()都是用来求一组数中的最大值,但它们的用法有所不同,下面我将详细讲解它们的区别和用法。 Math.max() Math.max()方法是用来返回一组数中的最大值。它的用法很简单,直接调用并传入需要比较的数即可。例如: console.log(Math.max(1, 2, 3, 4, …

    JavaScript 2023年6月10日
    00
  • 菜鸟是如何变成ASP木马高手的!

    菜鸟变成ASP木马高手攻略 想要成为一个ASP木马高手,需要掌握以下几个步骤: 第一步:了解ASP木马基础概念 ASP木马是一种通过修改ASP网站脚本文件(如.asp、.aspx等)来实现控制网站的方式。经过特殊构建的ASP木马可以将一些命令或代码写入对应的ASP文件中,以实现后门、数据窃取、Webshell攻击等多种功能。 第二步:掌握ASP木马生成工具 …

    JavaScript 2023年6月11日
    00
  • JavaScript实现输入框(密码框)出现提示语

    要实现输入框或密码框出现提示语,通常可以通过JavaScript来实现。以下是实现该功能的具体攻略: 1. 使用placeholder属性 可以利用HTML标准中已有的placeholder属性来为输入框或密码框添加提示语。通过设置placeholder属性,输入框或密码框右侧会出现灰色文字,提醒用户输入内容的要求。当用户开始在输入框或密码框内输入内容时,灰…

    JavaScript 2023年6月10日
    00
  • JavaScript插件化开发教程(五)

    JavaScript插件化开发教程(五)是关于模板的进一步讲解,主要包括以下部分: 一、模板引擎 1.1 什么是模板引擎 模板引擎是一种将数据和模板结合起来生成HTML文档的工具。在JavaScript插件开发中,模板引擎是一个非常重要的部分,在将数据渲染到HTML中时起到了至关重要的作用。 常见的模板引擎有:Handlebars、Mustache、ejs、…

    JavaScript 2023年5月18日
    00
  • js 上传文件预览的简单实例

    下面是针对“js上传文件预览的简单实例”的攻略,具体步骤如下: 准备工作 在开始编写 js 上传文件预览的代码之前,需要先准备好以下工作: 一个文本编辑器,用于编写代码。 一个支持 JavaScript 的浏览器,用于运行代码和进行预览。 需要用到的 HTML 和 CSS 代码,用来实现页面布局和样式。 实现方法 具体实现 js 上传文件预览,需要分以下几个…

    JavaScript 2023年5月27日
    00
  • jsMind通过鼠标拖拽的方式调整节点位置

    以下是关于“jsMind通过鼠标拖拽的方式调整节点位置”的攻略: 步骤一:引入jsMind库 在页面上引入jsMind库,可以通过以下代码链接到jsMind库: <!–引入jsMind库 CSS文件–> <link rel="stylesheet" type="text/css" href=&qu…

    JavaScript 2023年6月11日
    00
  • JS中URL.createObjectURL使用示例讲解

    JS中URL.createObjectURL使用示例讲解 什么是URL.createObjectURL? 在JavaScript中,URL.createObjectURL() 是一种方便的方法,可以将 Blob 或 文件对象转换为一个URL字符串,用于引用和使用。 URL.createObjectURL的语法 objectURL = URL.createOb…

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