使用 IntersectionObserver API 遇到的一些问题
root 设指定为 document.body 时不会触发更新
See the Pen document.body and IntersectionObserver by y1j2x34 (@y1j2x34)
on CodePen.
上面的示例中, 滚动页面后, .box 的颜色会随着交叉面积的比例更新而变化,如果将 , root: document 改为 root: document.body, 会发现滚动页面后不会触发更新:
See the Pen IntersectionObserver(root=document.body) by y1j2x34 (@y1j2x34)
on CodePen.
MDN 关于 root 参数用法中描述了 root 是被监听目标的祖先元素, 很显然,这里的 document.body 也是每个 .box 的祖先元素,但是实际上不起作用。

还有一个现象,就是通过 document.body.addEventListener('scroll', listener) 方法无法监听到滚动事件, 我想这两个问题很可能是存在着某种关联关系,目前还没有找到相关资料可以说明缘由~~
See the Pen document.body.onscroll vs document.body.addEventListener('scroll', ...) by y1j2x34 (@y1j2x34)
on CodePen.
使用 IntersectionObserver API 遇到的一些问题的更多相关文章
- IntersectionObserver API
温馨提示:本文目前仅适用于在 Chrome 51 及以上中浏览. 2016.11.1 追加,Firefox 52 也已经实现. 2016.11.29 追加,Firefox 的人担心目前规范不够稳定,未 ...
- IntersectionObserver API 使用教程
转载:原文地址:http://www.ruanyifeng.com/blog/2016/11/intersectionobserver_api.html 网页开发时,常常需要了解某个元素是否进入了&q ...
- IntersectionObserver API,观察元素是否进入了可视区域
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. 上图的绿色方块不断滚动,顶部会提示它的可见性. 传统的实现方法是,监听到scroll事 ...
- IntersectionObserver API 使用教程(转载)
作者: 阮一峰 日期: 2016年11月 3日 网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. 上图的绿色方块不断滚动,顶部会提示它的 ...
- js IntersectionObserver api
API const options = { root: null, threshold: [0, 0.5, 1], rootMargin: '30px 100px 20px' } var io = n ...
- 使用IntersectionObserver更高效的监视某个页面元素是否进入了可见窗口
比如说,你想跟踪 DOM 树里的一个元素,当它进入可见窗口时得到通知. 也许想实现即时延迟加载图片功能,或者你需要知道用户是否真的在看一个广告 banner. 你可以通过绑定 scroll 事件或者用 ...
- IntersectionObserver
创建对象 var io = new IntersectionObserver(callback, option); IntersectionObserver是浏览器原生提供的构造函数,接受两个参数:c ...
- 使用IntersectionObserver制作滚动动画以及其他记录
前言 最近在重做公司项目的主页,正好新来了个UI,整个都重新设计了一下,动画还挺多的.我之前没有怎么玩过这些,踩了挺多坑,最后找到了目前而言最合适的方法,现在做一个记录. 需要把原来的主页从项目中抽出 ...
- 【分享】2017 开源中国新增开源项目排行榜 TOP 100
2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度 ...
- 9 月份 GitHub 上最火的 JavaScript 开源项目!
推荐 GitHub 上9 月份最受欢迎的 10 个 JavaScript 开源项目,在这些项目中,你有在用或用过哪些呢? 1.基于 Promise 的 HTTP 客户端 Axios https://g ...
随机推荐
- linux 安装 vsftpd ftp 服务端
安装 yum install vsftpd 修改:/etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=Y ...
- Expected indentation of 2 spaces but found 4
预期缩进2个空格,但发现4个 把缩进空格修改后如图
- (面试加分新技能) 总结11个ES2022中你可能遗漏的语法
与许多其他编程语言一样,JavaScript 也在不断发展,每年,该语言都会通过新功能变得更强大,让开发人员编写更具表现力和简洁的代码.让我们探索 ECMAScript 2022 (ES13) 中添加 ...
- javaSE-验证码生成
一.使用Math类的radom() 方法 //生成验证码 String verifcationCode = ""; for (int i = 0; i <= 5; i++) ...
- ThinkPHP3.2设置异常页面404跳转
在ThinkPHP3.2版本中当我们访问不存在的页面时会出现非常不友好错误提示页面. 解决办法: 1.在ThinkPHP3.2详细的介绍了该框架下的ThinkPHP惯例配置文件convention.p ...
- 几款Android 应用自动化测试工具
本文转自:https://blog.csdn.net/hebbely/article/details/78901466 简述: 本文介绍几款流行的 Android应用自动化测试工具. Monkey测试 ...
- 【SQL Server】列名首字母大写
使用UPPER 和 LOWWER函数组合首字母大写.例如: 1 SELECT user_id,(UPPER(LEFT(name,1) ) + RIGHT(name , LEN(name) -1) )A ...
- 【SQL Server】numeric——精确数字的数据类型
NUMERIC数据类型是一种精确数字数据类型. numeric是标准sql的数据类型,格式是numeric(m,n).最多精确位数为38位,其中m表示总位数,n表示保留的小数点位数. 参数 含义 默认 ...
- demo----日常报错
yolov5:报错1:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized ...
- XSStrike-20220320
Usage: xsstrike.py [-h] [-u TARGET] [--data PARAMDATA] [-e ENCODE] [--fuzzer] [--update] [--timeout ...