当前位置: 首页 > wzjs >正文

浙江城乡建设网站证件查询关于加强门户网站建设的通知

浙江城乡建设网站证件查询,关于加强门户网站建设的通知,广州有什么好玩的山,桂林北京网站建设IntersectionObserver 是一个 Web API,用于异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的变化。这在很多场景下非常有用,比如懒加载图片、实现无限滚动加载更多内容等。下面详细介绍它的使用方法。 基本原理 …

IntersectionObserver 是一个 Web API,用于异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的变化。这在很多场景下非常有用,比如懒加载图片、实现无限滚动加载更多内容等。下面详细介绍它的使用方法。

基本原理

IntersectionObserver 允许你注册一个回调函数,当目标元素进入或离开指定的根元素(通常是视口)的可见区域时,这个回调函数就会被调用。

构造函数

IntersectionObserver 的构造函数接受两个参数:

const observer = new IntersectionObserver(callback, options);
  • callback:当目标元素的可见性发生变化时执行的回调函数。该回调函数接收两个参数:
    • entries:一个包含所有被观察元素的 IntersectionObserverEntry 对象的数组,每个对象描述了一个被观察元素的交叉状态变化。
    • observer:当前的 IntersectionObserver 实例。
  • options:一个可选的配置对象,包含以下属性:
    • root:指定根元素,即用于检查目标元素可见性的元素。默认为浏览器视口,如果指定了该属性,则必须是目标元素的祖先元素。
    • rootMargin:根元素的外边距,用于扩展或缩小根元素的边界框。可以使用类似于 CSS margin 属性的值,例如 '10px 20px 30px 40px'
    • threshold:一个单值或数组,表示目标元素与根元素交叉区域占目标元素总面积的比例。可以是一个介于 0 和 1 之间的数字,或者是一个包含多个这样数字的数组。例如,0 表示目标元素的任何部分进入根元素的可见区域时触发回调,1 表示目标元素完全进入根元素的可见区域时触发回调。

使用步骤

1. HTML 结构

首先,创建一个简单的 HTML 结构,包含一些需要观察的元素。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>IntersectionObserver Example</title><style>.box {width: 200px;height: 200px;background-color: lightblue;margin: 20px;}</style>
</head><body><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><script src="script.js"></script>
</body></html>
2. JavaScript 代码

script.js 文件中,使用 IntersectionObserver 来观察这些元素。

// 获取所有需要观察的元素
const boxes = document.querySelectorAll('.box');// 定义回调函数
const callback = (entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {// 当元素进入视口时,添加一个类名来改变样式entry.target.classList.add('active');// 停止观察该元素observer.unobserve(entry.target);}});
};// 创建 IntersectionObserver 实例
const observer = new IntersectionObserver(callback, {root: null, // 使用浏览器视口作为根元素rootMargin: '0px', // 根元素的外边距threshold: 0.5 // 当目标元素的 50% 进入视口时触发回调
});// 开始观察每个元素
boxes.forEach(box => {observer.observe(box);
});

示例解释

  • 首先,使用 document.querySelectorAll 方法获取所有需要观察的 .box 元素。
  • 然后,定义了一个回调函数 callback,当目标元素的可见性发生变化时会执行该函数。在回调函数中,遍历 entries 数组,检查每个元素是否进入视口(entry.isIntersecting),如果进入视口,则添加一个类名 active 来改变元素的样式,并使用 observer.unobserve 方法停止观察该元素。
  • 接着,创建了一个 IntersectionObserver 实例,指定了回调函数和配置选项。
  • 最后,使用 observer.observe 方法开始观察每个元素。

其他用途

  • 懒加载图片:可以在图片进入视口时再加载图片,提高页面性能。
<img class="lazy" data-src="image.jpg" alt="Lazy loaded image">
const lazyImages = document.querySelectorAll('.lazy');
const lazyCallback = (entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {const img = entry.target;img.src = img.dataset.src;img.classList.remove('lazy');observer.unobserve(img);}});
};
const lazyObserver = new IntersectionObserver(lazyCallback);
lazyImages.forEach(img => {lazyObserver.observe(img);
});
  • 无限滚动加载更多内容:当页面滚动到底部时,加载更多的内容。
const loadMoreCallback = (entries, observer) => {const entry = entries[0];if (entry.isIntersecting) {// 加载更多内容的逻辑console.log('Load more content');}
};
const loadMoreObserver = new IntersectionObserver(loadMoreCallback);
const loadMoreElement = document.querySelector('.load-more');
loadMoreObserver.observe(loadMoreElement);

通过使用 IntersectionObserver,可以更高效地处理元素的可见性变化,提高页面的性能和用户体验。


文章转载自:

http://pUc6xtGc.dnwLb.cn
http://zcEkgCFv.dnwLb.cn
http://iad2v1Mu.dnwLb.cn
http://iegqdvwm.dnwLb.cn
http://L3qn7WZ8.dnwLb.cn
http://XwUhzgQw.dnwLb.cn
http://uLjuwutM.dnwLb.cn
http://iine13mp.dnwLb.cn
http://0flNvYpn.dnwLb.cn
http://ntgSg9E1.dnwLb.cn
http://aUSyz9IJ.dnwLb.cn
http://axd8yzj1.dnwLb.cn
http://os0wyoXn.dnwLb.cn
http://Vnc7If4k.dnwLb.cn
http://IBErewpv.dnwLb.cn
http://TagnT5RJ.dnwLb.cn
http://cUXfPssi.dnwLb.cn
http://GQv4tQvN.dnwLb.cn
http://hB9Fqz0k.dnwLb.cn
http://EUQBfYmM.dnwLb.cn
http://NYvGcFAR.dnwLb.cn
http://4iKbCcmI.dnwLb.cn
http://MBY8O438.dnwLb.cn
http://UBaQTVmv.dnwLb.cn
http://Z8iiu0f9.dnwLb.cn
http://KILCFf40.dnwLb.cn
http://ur4OTDoe.dnwLb.cn
http://qLdaTLx4.dnwLb.cn
http://wTSKYsNH.dnwLb.cn
http://ut4Au9fi.dnwLb.cn
http://www.dtcms.com/wzjs/730796.html

相关文章:

  • 长春建站公司模板建站公司接单
  • 企业建设网站的目的和意义保定网站建设推广
  • 石景山网站建设公司哪个好WordPress情侣网站
  • 网站建设公司的公司哪家好尚品本色木门网站是哪个公司做的
  • 建设部造价工程师网站网站根目录下
  • 网站建设设计设计公司北京安卓app开发公司
  • 正能量网站入口不用下载免费海报设计图片手绘简单
  • 手机销售网站怎么做wordpress简单统计插件
  • 做rap的网站湖南城市建设职业技术学院官方网站
  • mysql开发网站开发seo培训一对一
  • 网站推广 软件云南app开发系统
  • 做购物网站多少钱在线平面设计作图网站
  • 天心区网站建设网站开发转码手机
  • 网站建设安全性指标网站推广网络营销
  • 网站建设结课小论文广州软件开发兼职
  • 专业网站托管的公司深圳专业返利网站开发
  • wordpress 全宽轮播关键词优化过程
  • 手机wap网站特效网站 内容 不收录 权重 1
  • 网站推广seo优化商业网站网址
  • 西安市做网站的公司网站建设及优化心得体会
  • 中土南方建设有限公司网站实训做网站收获
  • phpok做网站教程网站制作 长沙
  • 工信部 网站备案 上传电子成都网站建设详细内容
  • 万网站底部添加备案号免费做微信小程序
  • 淄博网站推广优化口碑营销例子
  • 用jquery做网站WordPress渗透思路
  • 学校网站建设专业公司横翻网站模版
  • 网站尺寸广安网站制作设计
  • 苗木网站建设建设网站的企业专业服务
  • 马蜂窝网络营销网站建设020网站设计