温馨提示:本文目前仅适用于在 Chrome 51 及以上中浏览. 2016.11.1 追加,Firefox 52 也已经实现. 2016.11.29 追加,Firefox 的人担心目前规范不够稳定,未来很难保证向后兼容,所以禁用了这个 API,需要手动打开 dom.IntersectionObserver.enabled 才行. 2016.12.30 追加,Firefox 53 已经重新开启. IntersectionObserver API 是用来监视某个元素是否滚动进了浏览器窗口的可视区域(…
转载:原文地址:http://www.ruanyifeng.com/blog/2016/11/intersectionobserver_api.html 网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. 上图的绿色方块不断滚动,顶部会提示它的可见性. 传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内.这种方法的缺点是,由…
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. 上图的绿色方块不断滚动,顶部会提示它的可见性. 传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内.这种方法的缺点是,由于scroll事件密集发生,计算量很大,容易造成性能问题. 目前有一个新的 IntersectionObserver API,可以自动"观察&q…
作者: 阮一峰 日期: 2016年11月 3日 网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. 上图的绿色方块不断滚动,顶部会提示它的可见性. 传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内.这种方法的缺点是,由于scroll事件密集发生,计算量很大,容易造成性能问题. 目前有一个新的 IntersectionObs…
API const options = { root: null, threshold: [0, 0.5, 1], rootMargin: '30px 100px 20px' } var io = new IntersectionObserver(callback, options) io.observe(document.querySelector('img')) 开始观察,接受一个DOM节点对象 io.unobserve(element) 停止观察 接受一个element元素 io.disc…
比如说,你想跟踪 DOM 树里的一个元素,当它进入可见窗口时得到通知. 也许想实现即时延迟加载图片功能,或者你需要知道用户是否真的在看一个广告 banner. 你可以通过绑定 scroll 事件或者用一个周期性的定时器,然后再回调函数中调用元素的 getBoundingClientRect() 获取元素位置实现这个功能. 但是,这种实现方式性能极差,因为每次调用 getBoundingClientRect() 都会强制浏览器重新计算整个页面的布局,可能给你的网站造成相当大的闪烁. 如果你的站点被…
创建对象 var io = new IntersectionObserver(callback, option); IntersectionObserver是浏览器原生提供的构造函数,接受两个参数:callback是可见性变化时的回调函数,option是配置对象(该参数可选). 构造函数的返回值是一个观察器实例.实例的observe方法可以指定观察哪个 DOM 节点. // 开始观察,参数是观察对象元素 io.observe(document.getElementById('example'))…
前言 最近在重做公司项目的主页,正好新来了个UI,整个都重新设计了一下,动画还挺多的.我之前没有怎么玩过这些,踩了挺多坑,最后找到了目前而言最合适的方法,现在做一个记录. 需要把原来的主页从项目中抽出来,所以干脆重新建了一个项目,使用vuecli4搭配ts,顺便踩一踩vue-ts的坑. 进入正题 需求之一是要有滚动动画,即当滚动到某个地方时播放动画,传统的方式是根据scroll距离判断滚动位置,当然可以用,不过还有其他方法可以做. 使用 IntersectionObserver api可以在很少…
2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度上预示着业界的最新流行趋势. 可以看到,前十名中有九个是国内开发者开发的开源项目,这个比例相比于去年已大大提高. 此外,榜单中的项目已经过筛选,均符合国际 OSI 批准的开源协议. 值得注意的是,今年关于人工智能的项目明显增加了不少,无论是 PHP.JavaScript 还是其他语言都诞生了相关的人…
推荐 GitHub 上9 月份最受欢迎的 10 个 JavaScript 开源项目,在这些项目中,你有在用或用过哪些呢? 1.基于 Promise 的 HTTP 客户端 Axios https://github.com/axios/axios Stars 27786 Axios,基于 Promise 的 HTTP 客户端,可以工作于浏览器中,也可以在 node.js 中使用.功能: ● 从浏览器中创建 XMLHttpRequest ● 从 node.js 中创建 http 请求 ● 支持 Pro…