IntersectionObserver实现页面滚动时候监听指定元素进入,滚动出页面可视区域事件

主要使用到的api:

IntersectionObserver 想要详细了解这个api用法自行百度

示例

var io = new IntersectionObserver(callback, option)

// 开始观察
io.observe(document.getElementById('example'))

// 停止观察
io.unobserve(element)

// 关闭观察器
io.disconnect()

如果想要监听多个元素

io.observe(elementA)
io.observe(elementB)

实现代码

  1. 需要设置监听元素的id 如下的 id=“comment”

html

<div id="comment"></div>

js

const rollDom = document.getElementById('comment')
let observer = new IntersectionObserver(
   function (entries) {
     entries.forEach(function (element, index) {
       if (!element.isIntersecting) {
         // 不在可视区域,我这里因为业务需要,使用scrollIntoView实现了自动使rollDom元素滚动到可视区域底部
         // block的值:start、center、end、nearest
         rollDom.scrollIntoView({ block: 'end', behavior: 'smooth' })
       } else {
		  // 进入可视区域 dosomething
	   }
     })
   },
   {
     root: null,
     threshold: [0, 1]
   }
 )
 observer.observe(rollDom)

主要借鉴了前端大全的这篇文章中的:IntersectionObserver 部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值