Web前端之页面可见性与元素重叠、懒加载、显示、隐藏、交叉、IntersectionObserver、visibilitychange 📅 发布时间:2026/7/8 12:34:09 👁️ 浏览次数: MENU前言IntersectionObservervisibilitychange总结前言IntersectionObserver和visibilitychange是两种不同的Web API它们用于处理页面元素的可见性问题但它们的工作方式和用途有所不同。IntersectionObserver介绍IntersectionObserver是一种更现代、更高效的API用于检测一个元素是否进入浏览器的可视区域。它允许观察元素与视口或其他元素的交叉情况并在交叉状态发生变化时执行回调函数。高效性与传统的滚动或重排事件相比IntersectionObserver使用更少的资源因为它不会在每次滚动时触发而是基于浏览器的内部机制来异步触发。灵活性可以观察多个元素相对于一个或多个根元素的交叉情况。用途适用于懒加载图片、视频、无限滚动列表等场景也可以用于检测元素是否进入视口以执行某些操作。案例假设正在开发一个图片密集型的网页如在线画廊或商品展示页。为提高页面加载速度希望只在图片即将进入视口时才加载它们。这时IntersectionObserver就非常有用。// 获取所有图片元素constimagesdocument.querySelectorAll(img[data-src]);// 创建IntersectionObserver实例constobservernewIntersectionObserver((entries,observer){entries.forEach(entry{if(entry.isIntersecting){// 当图片进入视口时替换src属性加载图片constimgentry.target;img.srcimg.dataset.src;img.classList.remove(lazy-load);// 停止观察已加载的图片observer.unobserve(img);}});});// 观察所有图片元素images.forEach(img{observer.observe(img);});在这个例子中首先选取所有带data-src属性的图片元素然后创建一个IntersectionObserver实例来监视这些图片。当图片进入视口时将其src属性设置为data-src的值并从DOM中移除lazy-load类同时停止观察该图片。visibilitychange介绍visibilitychange事件是较早的API用于监听文档的可见性状态变化。当用户切换标签页或最小化浏览器窗口时会触发这个事件。简单性它只提供页面是否可见的基本信息没有提供元素级别的可见性检测。用途适用于需要在页面可见或不可见时执行全局操作的场景如暂停视频播放、停止动画等。普通案例假设正在开发一个视频播放网站希望在用户切换到其他标签页时暂停视频播放以节省资源。这时visibilitychange事件就非常适用。document.addEventListener(visibilitychange,(){constvideodocument.querySelector(video);if(document.visibilityStatehidden){// 当页面不可见时暂停视频video.pause();}else{// 当页面可见时继续播放视频video.play();}});在例子中我们监听visibilitychange事件当事件触发时检查document.visibilityState的值。如果页面不可见(即用户切换到其他标签页或最小化浏览器)则暂停视频如果页面可见则继续播放视频。vue案例生命周期mounted(){document.addEventListener(visibilitychange,this.runVisibilityChange);},unmounted(){document.removeEventListener(visibilitychange,this.runVisibilityChange);}方法methods:{runVisibilityChange(){constvideothis.$refs.courseVideo;constVSdocument.visibilityState;VShidden?video.pause():video.play();}}总结性能IntersectionObserver更高效因为它不会在每次滚动时触发而是基于浏览器的内部机制来异步触发。功能IntersectionObserver提供更细粒度的控制可以检测单个元素的可见性而visibilitychange只能提供整个页面的可见性状态。适用场景如果需要检测单个元素是否进入视口或者需要在元素可见性变化时执行操作IntersectionObserver是更好的选择。如果只需要知道页面是否可见以便执行一些全局操作visibilitychange就足够。在实际应用中可以根据具体需求选择合适的API。例如如果正在开发一个视频播放器并希望在用户切换标签页时暂停视频使用visibilitychange就足够。如果需要实现图片懒加载或无限滚动列表IntersectionObserver将是更合适的选择。
线程-线程池 线程生命周期 1.new 状态 2. runnable 就绪状态 start() 3. runnabing 执行状态 run() 4. dead 执行完 run()方法 5. 阻塞状态(抢锁,wait等待阻塞,sleep)线程… 2026/7/4 14:59:33
不同操作系统的TTL值 TTL(time to live):生存时间,指示了IP数据包可以经过最大的路由器数量,当一个ip数据包每经过一个路由器时,该TTL的值就会减1,当经过的路由器个数超过TTL的值时,该IP数据包就会被路由器抛弃&… 2026/7/6 11:27:24
Git之实用操作指令、ssh与https地址之间的切换、本地仓库提交到远程仓库、合并或更新代码的步骤、设置免密码访问服务器、强制合并、基础知识、命令行 MENU常用指令本地重置远程仓库信息合并或更新代码的步骤本地仓库提交到远程仓库、强制合并分支、remote、checkout、reset、origin、initssh与https地址之间的切换、设置免密码访问服务器什么是版本控制?为什么要使用版本控制?集中化版本控制系统&#x… 2026/5/17 8:52:26
推荐太原本地美缝工厂 在家装过程中,美缝作为收尾的关键工序,直接影响整体美观与居住体验。面对市场上纷繁复杂的产品和施工服务,许多太原业主常常感到无从选择。究竟如何才能找到高性价比、品质可靠的美缝解决方案?扎根太原市小店区的太原市小店区朱小… 2026/7/8 12:34:08
理士蓄电池靠谱商家怎么选?企业采购决策全攻略FAQ “选理士蓄电池商家,比价格更重要的是‘资质服务案例’三重验证”。企业采购理士蓄电池时,常面临商家鱼龙混杂、产品真伪难辨、售后无保障等痛点,稍不注意就可能影响业务连续性。本文整理了采购决策中的高频疑问,帮你快速找到靠谱… 2026/7/8 12:32:04
D3KeyHelper终极指南:如何快速配置暗黑3专业级按键宏工具 D3KeyHelper终极指南:如何快速配置暗黑3专业级按键宏工具 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破… 2026/7/8 12:26:01
STM32与MP2672A实现锂电池智能平衡充电系统 1. 项目背景与核心需求在锂电池组应用中,电压不均衡是影响电池寿命和安全性的关键问题。当多节锂电池串联使用时,由于制造工艺差异、温度分布不均等因素,各单体电池的电压会出现偏差。这种不均衡会导致部分电池过充或过放,严重时可… 2026/7/8 12:23:59
工业金属表面缺陷检测:4种光学成像方案(明/暗/漫/背光)选型与实战对比 工业金属表面缺陷检测:4种光学成像方案实战指南1. 光学成像在金属检测中的核心地位金属表面缺陷检测系统的成败,八成取决于前端光学成像的质量。想象一下,当光线照射在金属表面时,不同材质、不同工艺处理的金属会呈现出截然不同的… 2026/7/8 12:21:57
原来上海玉灵膏的制作工艺竟然这么讲究? 原来上海玉灵膏的制作工艺竟然这么讲究?上海玉灵膏,作为一款经典的药食同源养生膏方,其制作工艺不仅传承了古法精髓,还结合了现代科技,确保每一瓶膏方都能达到最佳品质。本文将深入探讨上海玉灵膏的制作工艺࿰… 2026/7/8 12:21:57
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58