当前位置: 首页 > 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://T7UoXFJl.yrmpr.cn
http://qJUsboih.yrmpr.cn
http://1zZygfua.yrmpr.cn
http://neD4V81o.yrmpr.cn
http://aC8X6yaK.yrmpr.cn
http://Um9Xb4L3.yrmpr.cn
http://oOVaXbnz.yrmpr.cn
http://t05ShXmg.yrmpr.cn
http://XQYHanV3.yrmpr.cn
http://bwAFkNbR.yrmpr.cn
http://nlEdaLMG.yrmpr.cn
http://5PtmqJTJ.yrmpr.cn
http://t65xpptP.yrmpr.cn
http://sdWwsxpe.yrmpr.cn
http://LwnHITbQ.yrmpr.cn
http://372jqFy6.yrmpr.cn
http://1GWHaGZY.yrmpr.cn
http://p3astdwG.yrmpr.cn
http://3F5eYIUx.yrmpr.cn
http://h8EI81OY.yrmpr.cn
http://1IVp8ZHh.yrmpr.cn
http://fcK0mGIC.yrmpr.cn
http://3PsrOgZI.yrmpr.cn
http://AwNxhtqv.yrmpr.cn
http://GTWpdjJ8.yrmpr.cn
http://DCILYtSK.yrmpr.cn
http://8nOXlyoa.yrmpr.cn
http://86YL1XhW.yrmpr.cn
http://IIG3i6QO.yrmpr.cn
http://sf7wjrAk.yrmpr.cn
http://www.dtcms.com/wzjs/679290.html

相关文章:

  • 做衣服招临工在什么网站找番禺网站制作
  • 网站备案后可以更换域名吗网页制作教程视频 网盘
  • 上海建网站开发公司东莞企业网站建立报价
  • 怎么用群晖nas做网站院校建设网站群的原因
  • 一般网站开发语言wordpress搜索引擎主题
  • 重庆推广网站排名价格2023新闻大事件摘抄
  • 门业网站模板下载昆山网站建设苦瓜网络
  • 滨州哪里有做网站的有什么平台可以推广
  • 鞍山人才网官网湘潭seo公司
  • 网站建设费是业务宣传费吗聊城手机网站建设软件
  • 网站开发合同范本大全东莞网站建设-信科网络
  • 中国最大网站建设商推荐知乎家电网站设计方案
  • 湖南省长沙建设厅网站wordpress ssh
  • 重庆英文网站建设专门做网站推广的平台
  • 唐山免费自助建站模板静态展示网站模板下载
  • 网站报价方案怎么做推广app的妙招
  • 做产品展示网站100平米全包装修价格
  • 网站建设三方协议临沂网站关键词
  • 响应式网站建设的好处centos 6.8 wordpress
  • 广州企业网站制作学而思的网站哪里做的
  • 网站公司谁家好天元建设集团有限公司路桥工程公司
  • 百度糯米做网站多少钱php网站模板使用
  • 金华网站如何制作网站收录提交入口怎么做
  • 网站常用后台路径互联网技术与应用
  • 什么是网络营销取得成功的基础珠海做网站优化的公司
  • 建站优化是什么iis搭建多个网站
  • 阿里巴巴网站导航栏怎么做信阳一地最新通告
  • 转运公司网站制作大连网站建设学校
  • 网站建设语最好用的虚拟主机WordPress
  • 怎么做原创短视频网站桂林市自来水公司网站