IntersectionObserver (自动监听元素是否进入了设备的可视区域之内)
示例:
const io = new IntersectionObserver(callback, option);
// 获取元素
const target = document.getElementById("dom");
// 开始观察
io.observe(target);
// 停止观察
io.unobserve(target);
// 关闭观察器
io.disconnect();
vue示例:
const className = 'enterpage';
const directives = {
viewport: {
inserted: function (el, binding, vnode) {
// 设置观察器选项
const options = {
root: null, // 使用视窗作为根
rootMargin: '0px', // 根边界盒与目标边界盒之间的边距
threshold: 0.4 // 交叉比例(即目标元素的可见区域占比)
};
// 创建一个新的 Intersection Observer 实例
const observer = new IntersectionObserver((entries, observer) => {
// 遍历所有观察目标的条目
entries.forEach((entry) => {
// 如果目标元素的交叉比例大于 0(即部分可见)
if (entry.isIntersecting) {
console.log('可见了');
// 添加 class
el.classList.add(className);
}
});
}, options);
// 使用观察器观察目标元素
observer.observe(el);
// 组件销毁时停止观察
vnode.context.$once('hook:beforeDestroy', function () {
observer.unobserve(el);
});
},
unbind(el) {
// 移除 class
el.classList.remove(className);
}
}
};
export default directives;
上面示例表示,当某个元素进入到可视范围内,给当前元素添加一个类名,这个类名可以给当前元素添加一些动画效果之类的。
玄机博客
© 版权声明
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
THE END
暂无评论内容