首页 > 其他分享 >Intersection Observer API 实现图片懒加载

Intersection Observer API 实现图片懒加载

时间:2023-05-06 17:34:44浏览次数:41  
标签:src Observer img imgElem API Intersection data

1,为需要延迟加载的图片设置data-src属性。

<img src="" data-src="image.jpg" alt="图片">

2,使用Intersection Observer API监听可视区域内的元素变化,并将其data-src属性值赋给src属性,显示图片。

const lazyLoadImg = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const imgElem = entry.target;
      imgElem.src = imgElem.dataset.src;
      lazyLoadImg.unobserve(imgElem);
    }
  });
});

document.querySelectorAll('img[data-src]').forEach(img => {
  lazyLoadImg.observe(img);
});

3,初始时需调用一次,以显示页面已经在可视区域内的图片。

document.querySelectorAll('img[data-src]').forEach(img => {
  if (img.getBoundingClientRect().top <= window.innerHeight && img.getBoundingClientRect().bottom >= 0) {
    img.src = img.dataset.src;
    img.removeAttribute('data-src');
  }
});

通过这些步骤,就可以实现图片的懒加载效果。需要注意的是,在这个方法中我们使用了Intersection Observer API来监听可视区域内元素的变化,并使用getBoundingClientRect()方法获取元素相对于视窗的位置信息。

标签:src,Observer,img,imgElem,API,Intersection,data
From: https://www.cnblogs.com/shenjingwa/p/17378086.html

相关文章

  • 如何通过代码接入手机在网状态 API
    引言在许多场景下,手机号码是一种常用的身份验证信息。而使用手机在网状态API可以判断出手机号码是否有效,在一定程度上提高了身份验证的准确性和安全性,它的出现和广泛应用,为各行各业提供了更为便利和高效的解决方案。本文将探讨该API的使用场景,使用思路以及如何通过代码接入......
  • zabbix通过api方式批量创建和删除主机
    zabbix库连接信息,文件名为Conn.pyimportpymysql"""获取后台数据库连接"""defCON():con=pymysql.connect(host='rm-xxx.xxxxx.rds.aliyuncs.com',user='xxx',password='xxxx',db=�......
  • Java获取pdd详情api接口、商品详情、商品描述、宝贝链接获取展示示例
    ​拼多多商品详情就是对拼多多商城中的宝贝的描述了,消费者们在进入到宝贝的详情页面后,可以通过这些描述去了解该款宝贝。其实这样也可以大大的增加商品的转化率。那么它的作用有什么呢?1.突出商品卖点:把商品的特色和突出点写表现出来,很更好的吸引到顾客,让顾客有点击和购买的欲......
  • Net Core Web Api 配置Swagger
    一、创建NETCoreAPI项目NETCore版本:NETCore2.21.创建coreweb应用程序2.选择API3.下图为生成后的项目二、安装Swagger1.打开NuGet包管理器2.搜索Swashbuckle.AspNetCore安装在项目上3.点击我接受三、配置Swagger对于ConfigureServices和Configure的配置点击可参考1.ConfigureS......
  • Hbase 协处理器 RegionObserver
     RegionObserver注:每次更新协处理器方法,最好加上版本更新,否则可能会出现更新失败协处理器安装-表级别安装disable'wechat_article'alter'wechat_article',METHOD=>'table_att','coprocessor'=>'hdfs://test111:8020/coprocessor/hbase-coprocessor-0.0.6-S......
  • Springboot 系列 (30) - Springboot+HBase 大数据存储(八)| Springboot Client/Server
    Kerberos(SecureNetworkAuthenticationSystem,网络安全认证系统),是一种网络认证协议,其设计目标是通过密钥系统为Client/Server提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被......
  • CUDA 的随机数算法 API
    参考自NvidiacuRand官方API文档一、具体使用场景如下是是在dropout优化中手写的uniform_random的Kernel:#include<cuda_runtime.h>#include<curand_kernel.h>__device__inlinefloatcinn_nvgpu_uniform_random_fp32(intseed){curandStatePhilox4_32_10_t......
  • salt-api
    添加用户useradd-M-s/sbin/nologinsaltapipasswdsaltapi新增配置文件#cat/etc/salt/master.d/eauth.confexternal_auth:pam:saltapi:#用户-.*#该配置文件给予saltapi用户所有模块使用权限,出于安全考虑一般只给予特定模块使用权限......
  • go测试库之apitest
    前言使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦。还有err处理写的巨麻烦。当然,go也有爽的地方,创建个线协程简直太简单了。到后来慢慢接受,觉得效率还行,因为是静态强类型语言,在修改完项目代码之......
  • 武装你的WEBAPI-OData Versioning
    本文属于OData系列目录武装你的WEBAPI-OData入门武装你的WEBAPI-OData便捷查询武装你的WEBAPI-OData分页查询武装你的WEBAPI-OData资源更新Delta武装你的WEBAPI-OData之EDM武装你的WEBAPI-OData常见问题武装你的WEBAPI-OData使用Endpoint武装你的WEBAPI-OData聚合查询......