位置: IT常识 - 正文

IntersectionObserver API详解(IntersectionObserver 翻译)

编辑:rootadmin
IntersectionObserver API详解

推荐整理分享IntersectionObserver API详解(IntersectionObserver 翻译),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:IntersectionObserver 小程序,IntersectionObserver 优点,IntersectionObserver API,IntersectionObserver vue,IntersectionObserver mdn,IntersectionObserver 这个api了解一下,IntersectionObserver API,IntersectionObserver mdn,内容如对您有帮助,希望把文章链接给更多的朋友!

过去,要检测一个元素是否可见或者两个元素是否相交并不容易,比如实现图片懒加载、内容无限滚动等功能时,都需要通过​getBoundingClientRect()​写大量的逻辑计算或者依靠scroll事件监听等性能很差方式来实现。

现在,依靠IntersectionObserver我们能非常便捷且高效的实现上述功能。

一、API// 创建实例const observer = new IntersectionObserver(callback, option);// 开始观察element1observer.observe(element1);// 开始观察element2observer.observe(element2);// 停止观察observer.unobserve(element);// 关闭观察器observer.disconnect();

IntersectionObserver是浏览器原生提供的构造函数,接受两个参数:callback是可见性变化时的回调函数,option是配置对象(该参数可选)。

构造函数的返回值是一个观察器实例。实例的observe方法可以指定观察哪个 DOM 节点,如果需要观察多个DOM节点可以多次添加observe方法。

二、callback 参数

当以下情况发生时会调用回调函数:

Observer 第一次监听目标元素的时候每当目标元素与设备视窗或者其他指定元素发生交集的时候执行IntersectionObserver API详解(IntersectionObserver 翻译)

  

callback函数的参数(entries)是一个数组,每个成员都是一个IntersectionObserverEntry对象。举例来说,如果同时有两个被观察的对象的可见性发生变化,entries数组就会有两个成员。

每个IntersectionObserverEntry对象属性含义如下:

boundingClientRect:目标元素的矩形区域的信息intersectionRatio:目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时为1,完全不可见时小于等于0intersectionRect:目标元素与视口(或根元素)的交叉区域的信息rootBounds:根元素的矩形区域的信息,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回nullisIntersecting:目标元素是否与视口(或根元素)交叉isVisible:并未查阅到相关资料,且经过测试其并不会发生变化target:被观察的目标元素,是一个 DOM 节点对象time:可见性发生变化的时间,是一个高精度时间戳,单位为毫秒三、Option 对象

IntersectionObserver构造函数的第二个参数是一个配置对象。它可以设置以下属性。

root:指定根元素,用于检查目标的可见性。必须是目标元素的父级元素。如果未指定或者为null,则默认为浏览器视窗。rootMargin:根元素的外边距,类似于 CSS 中的margin属性。threshold:目标元素与根元素的交叉比例,可以是单一的 number 也可以是 number 数组,比如,[0, 0.25, 0.5, 0.75, 1]就表示当目标元素 0%、25%、50%、75%、100% 可见时,会触发回调函数。 四、注意点IntersectionObserver API 是异步的,不随着目标元素的滚动同步触发。注册的回调函数将会在主线程中被执行,所以该函数执行速度要尽可能的快。如果有一些耗时的操作需要执行,建议使用 Window.requestIdleCallback() 方法。五、实例:无限滚动<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>IntersectionObserver</title></head><body style="font-size: 24px;text-align: center"><div id="container"></div><div id="loadMore">加载中...</div></body><script> const container = document.querySelector('#container'); const loadMore = document.querySelector('#loadMore'); let index = 0; const loadItems = (count) => { [...Array(count).keys()].forEach((key) => { const p = document.createElement('P'); p.innerHTML = `${key + index}`; container.appendChild(p) }) index += count; } const observer = new IntersectionObserver((entries) => { entries.forEach(({ isIntersecting }) => { if (isIntersecting) { loadItems(20); } }) }); observer.observe(loadMore)</script></html>

无限滚动(infinite scroll)的实现也很简单。通过观察#loadMore元素与浏览器视图的是否交叉,如果交叉则意味着列表已经加载完毕,继续添加更多的元素。

参考:

Intersection Observer API - Web API 接口参考 | MDN

IntersectionObserver API 使用教程 - 阮一峰的网络日志

本文链接地址:https://www.jiuchutong.com/zhishi/298783.html 转载请保留说明!

上一篇:nodejs和npm版本不匹配(node与nodejs)

下一篇:瑞吉外卖项目:编辑员工信息与公共字段自动填充(瑞吉外卖项目简历)

  • 如何让自己的网站在网络推广有效的转化率(如何让自己的网站搜关键词)

    如何让自己的网站在网络推广有效的转化率(如何让自己的网站搜关键词)

  • 荣耀平板v7pro的重量(荣耀平板v7pro的电脑模式是什么工作原理)

    荣耀平板v7pro的重量(荣耀平板v7pro的电脑模式是什么工作原理)

  • 哈啰车主新手怎样接单流程(哈啰车主新手怎样抢单快呢)

    哈啰车主新手怎样接单流程(哈啰车主新手怎样抢单快呢)

  • 华为nova4发烫(华为nova4发烫怎么解决)

    华为nova4发烫(华为nova4发烫怎么解决)

  • 打印处理器不存在怎么解决(打印处理器不存在是什么意思)

    打印处理器不存在怎么解决(打印处理器不存在是什么意思)

  • 手机一体机怎么换电池(手机一体机怎么加内存)

    手机一体机怎么换电池(手机一体机怎么加内存)

  • 华为mate30pro怎么删除桌面软件(华为mate30pro怎么升级鸿蒙系统)

    华为mate30pro怎么删除桌面软件(华为mate30pro怎么升级鸿蒙系统)

  • 微信客户端打开链接什么意思(什么叫微信客户端打开)

    微信客户端打开链接什么意思(什么叫微信客户端打开)

  • 苹果外包装序列号在哪(苹果外包装序列号未激活)

    苹果外包装序列号在哪(苹果外包装序列号未激活)

  • 路由器光猫机顶盒三方怎么连接(路由器光猫机顶盒集中供电)

    路由器光猫机顶盒三方怎么连接(路由器光猫机顶盒集中供电)

  • 小米air2降噪怎么开(小米air2s降噪如何)

    小米air2降噪怎么开(小米air2s降噪如何)

  • qq提交作业后修改老师知道吗(qq提交作业后修改老师能看到时间吗)

    qq提交作业后修改老师知道吗(qq提交作业后修改老师能看到时间吗)

  • 手机来电不显示名字怎么回事(手机来电不显示怎么回事)

    手机来电不显示名字怎么回事(手机来电不显示怎么回事)

  • 为什么开热点别人用不了(为什么开热点别的手机看不到)

    为什么开热点别人用不了(为什么开热点别的手机看不到)

  • 安卓手机录制屏幕在哪(安卓手机录制屏幕教程)

    安卓手机录制屏幕在哪(安卓手机录制屏幕教程)

  • 安装固态硬盘后电脑要怎么设置(安装固态硬盘后怎么设置bios)

    安装固态硬盘后电脑要怎么设置(安装固态硬盘后怎么设置bios)

  • 如何解除青少年模式(如何解除青少年游戏限制)

    如何解除青少年模式(如何解除青少年游戏限制)

  • 小米9怎么开启双音喇叭(小米9怎么开启OTG功能)

    小米9怎么开启双音喇叭(小米9怎么开启OTG功能)

  • 金立m6故事锁屏怎么取消(金立m6怎样关闭故事锁屏)

    金立m6故事锁屏怎么取消(金立m6怎样关闭故事锁屏)

  • word怎么自定义脚注(word怎么自定义字体大小)

    word怎么自定义脚注(word怎么自定义字体大小)

  • ipad怎么分屏做笔记(ipad怎样弄分屏)

    ipad怎么分屏做笔记(ipad怎样弄分屏)

  • 苹果怎么下载视频(苹果怎么下载视频到手机)

    苹果怎么下载视频(苹果怎么下载视频到手机)

  • 手机删除的照片在哪里(手机删除的照片都去哪里了)

    手机删除的照片在哪里(手机删除的照片都去哪里了)

  • 事件循环(Event Loop)

    事件循环(Event Loop)

  • Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器(ai绘图软件教程)

    Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器(ai绘图软件教程)

  • 税务ukey与税控盘的区别
  • 个所得税计算方法
  • 增值税零申报附加税怎么报
  • 融资租赁承租方增值税处理
  • 开发票税前税后
  • 临时售楼处及其装修费用如何列支
  • 按季度报税怎么处理
  • 收到促销商品怎么做分录
  • 单位预付卡
  • 仓库的数量为负数怎么办
  • 企业所得税营业成本包括管理费用吗
  • 印花税注册资本缴税时间
  • 加油费发票7月1日开具
  • 生活服务业加计扣除15%最新政策2019
  • 工会经费计税依据是上年工资还是当年工资
  • 纳税调增调减项目有哪些各站多少比例
  • 税后利润是净利润还是利润总额
  • 金税盘发行后什么时候可以用
  • 小规模企业低值易耗品摊销方法
  • harmonyos2.0缺点
  • 企业支付工商年费怎么查
  • 手动设定ip地址后连不上网
  • windows在cmd设置变量
  • 投资长期溢价债券,容易获取投资收益
  • 认缴制没有实资本会怎么样
  • php declare函数
  • 委托去银行办理业务的委托书
  • 记账凭证不见了怎么办
  • vue的iframe
  • win7系统笔记本无线网络找不到
  • uni app怎么样
  • list.php
  • 微芯片技术
  • zendframework3中文手册
  • 乐吾实验学校网站
  • 以前年度损益科目代码
  • 饿了么指定单
  • webpack插件执行顺序
  • 职工教育经费的计提比例是多少
  • command对象可以执行sql语句吗
  • 现代信号处理张贤达pdf
  • 增值税抵扣要求一一对应
  • 小规模纳税人如何界定
  • 员工宿舍的物业费能否抵扣
  • 织梦如何使用不侵权
  • 公司购买办公楼需要缴纳城镇土地使用税吗
  • 红字发票信息表怎么打印出来
  • 合营企业和联营企业是关联方吗
  • mysql左连接和右连接语法
  • 小规模费用发票可以抵扣增值税吗
  • 残疾人就业相关论文题目
  • 工资汇算清缴前发
  • 商业地产会计账务怎么做
  • 开票加的税点走什么费用
  • 累计折旧税率
  • 企业分红给个人的税收
  • 美金形式发票
  • 差旅费报销单怎么填写
  • win7系统ie浏览器打不开
  • Win10 Mobile RS2预览版14943上手视频曝光
  • macbookair cpu
  • win10锁屏界面的搜索怎么关
  • win10系统更新出错怎么办
  • win10桌面图标排列设置
  • 搭建android开发环境实验原理
  • nodejs文件上传服务器
  • js拖拽div
  • win2000停止服务
  • jquery fadein 源码
  • python socket编程教程
  • python跑出异常
  • Developing for Android, IV: The Rules: Networking
  • js link global
  • python中的print语句
  • 如何将python中的列表与数据对齐
  • python仿站软件官网
  • 个体逾期未申报一天会怎么样
  • 太原市税务局电话
  • 个人医保缴费证明怎么打印
  • 北京税务局网上办税服务厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设