IntersectionObserver

2024-01-13 15:04
文章标签 intersectionobserver

本文主要是介绍IntersectionObserver,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IntersectionObserver 这个API主要实现图片懒加载、加载更多等等。
该API作用是观察两个元素之间有没有交叉,有没有重叠

现在要做的是当图片跟视口有交叉的情况下,把data-src的图片路径替换给src属性

//第一个参数是 回调,第二个参数的 配置
const ob = new IntersectionObserver((entries)=>{
for (const entry of entries){
//若true有交叉
if (entry.isIntersecting){
//获取目标图片元素
const img = entry.target
img.src = img.dataset.src
ob.unobserve(img)
}
}
},{
root:null , //表示观察器观察的元素和 哪个 元素发生交叉,它需要去监控;它只能配置它的父元素或者父元素的父元素;一般情况下都配置为null,这样就是监控目标元素和 视口元素 的交叉情况;null也是默认值,可以不写。
rootMargin: 0,//对目标元素的观察范围进行扩散还是收缩,默认值为0,也可以不写
threshold: 0,//表示到达多少 阈值 的时候,触发回调函数;比如1表示,元素完全进入到root元素,离开的时候也会再触发一次。这个是必须要写的,这里写0,表示一触碰就进行回调
})

const imgs = document.querySelectorAll(‘img[data-src]’)
// 你提供的代码是使用JavaScript和DOM(文档对象模型)来选择具有data-src属性的所有元素。querySelectorAll方法用于查找并返回与提供的CSS选择器匹配的所有元素的列表,在这种情况下是’img[data-src]'。
imgs.forEach((img) => {
ob.observe(img)
})

// 下面是加载更多
const ob2 = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting){
loadMoreImages(10); //若出现加载更多图标,则再请求10张图片
}
},{
threshold:0
})
ob2.observe(document.querySelector(‘.spin’)) //对spin类进行观察

这篇关于IntersectionObserver的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601863

相关文章

【new IntersectionObserver】vue3 数据懒加载

new IntersectionObserver js方法描述步骤 实现逻辑:通过监视底部节点可视情况,获取新数据进行渲染,如果获取不到最新数据则显示暂无其他数据 new IntersectionObserver 是用于监视元素可见度,所以我们只需要监视数据下方的dom是否可见 import { type Ref, watchEffect, ref } from "vue"//我用的ts,不需

js 监听元素是否出现在可视区域--IntersectionObserver

观察者模式监听判断dom元素是否在可视区域内 本项目是使用vue3的写法。 1.IntersectionObserver IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断。由于可见(visible)的本质是,目标元素与视口产生一个交叉区,所以这个 API 叫做"交叉观察器" const observer = new In

JS“观察“元素是否可见——记录IntersectionObserver API 使用教程

网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它。 上图的绿色方块不断滚动,顶部会提示它的可见性。 传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内。这种方法的缺点是,由于scroll事件密集发生,计算量很大,容易造成性能问题

通过IntersectionObserver实现图片下拉加载(瀑布流布局)

效果展示: 瀑布流上拉加载 目录结构 html: <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-widt

IntersectionObserver应用之实现元素随着页面滚动吸附在顶部的效果

现在很多app都有这样的效果,某元素随着页面的滚动,吸附在顶部的效果。本文将介绍实现这种效果的两种不同的方法。 先看一下效果图: 使用IntersectionObserver 思路 上一篇博客详细介绍了IntersectionObserver的用法。这里用来实现这种吸附的效果,应该先想到的是,判断哪两个元素的相交。你可以根据需要来选择不同参照物。当相交的时候,将元素置顶吸附;不相交的时候,回到

vue项目js原生属性IntersectionObserver实现图片懒加载

vue项目js原生属性IntersectionObserver实现图片懒加载 IntersectionObserver 使用js原生属性IntersectionObserver实现观察img元素是否处于游览器视口中 懒加载原理:给img设置一个默认url图片,观察图片处于视口内以后,动态改变img的url为自己想要显示的url 先上效果图: 新建js文件:lazyLoad.js

vue项目js原生属性IntersectionObserver实现图片懒加载

vue项目js原生属性IntersectionObserver实现图片懒加载 IntersectionObserver 使用js原生属性IntersectionObserver实现观察img元素是否处于游览器视口中 懒加载原理:给img设置一个默认url图片,观察图片处于视口内以后,动态改变img的url为自己想要显示的url 先上效果图: 新建js文件:lazyLoad.js