首页 > 其他分享 >如何判断哪些元素在视口下面

如何判断哪些元素在视口下面

时间:2024-08-14 22:18:09浏览次数:7  
标签:observer 哪些 元素 callback 视口 let IntersectionObserver

问题

在一个滚动列表中,顶部有一个【全部置入】的按钮,点击按钮要将可视区域内的图片置入到页面中

思路

  1. 点击按钮时,循环遍历每个元素算出它的坐标-滚动条距离顶部的scrollTop
  2. 通过IntersectionObserver观察者来判断哪些元素在可视区域内

实现

这次就使用IntersectionObserver来实现

  1. 创建IntersectionObserver的实例
let observer = new IntersectionObserver(callback, {  
  root: null, // 视口  
  rootMargin: '0px',  
  threshold: [0.1] // 当目标元素有10%进入视口时触发  
});

observer是IntersectionObserver的实例,callback是回调函数,root是确定视口元素,null就是根元素

  1. 给目标元素添加观察
    observer.observe(element)

  2. 元素发生变化时会触发callback回调函数,元素的entry.isIntersecting为true时说明该元素在视口中满足条件,可以对这些元素做处理

  3. 销毁观察
    可以在组件销毁的生命周期中去掉观察,也可以在callback回调结束时关闭观察observer.disconnect()

// 回调函数  
function callback(entries, observer) {  
  for (let entry of entries) {  
    // 每个 entry 代表一个被观察的目标元素  
    if (entry.isIntersecting) {  
      console.log('Element is in the viewport.');  
    } else {  
      console.log('Element is NOT in the viewport.');  
    }  
  } 
  observer.disconnect()
}  
  
// 创建 IntersectionObserver 实例  
let observer = new IntersectionObserver(callback, {  
  root: null, // 视口  
  rootMargin: '0px',  
  threshold: [0.1] // 当目标元素有10%进入视口时触发  
});  
  
// 目标元素  
let targetList = document.querySelector('.elementList');  
  targetList.forEach(element => {
  // 开始观察目标元素
  observer.observe(element);
})
  
// 停止观察  
// observer.unobserve(target);  
// 或者  
// observer.disconnect();

标签:observer,哪些,元素,callback,视口,let,IntersectionObserver
From: https://www.cnblogs.com/wang--chao/p/18359858

相关文章

  • leetcode面试经典150题- 380. O(1) 时间插入、删除和获取随机元素
     https://leetcode.cn/problems/insert-delete-getrandom-o1/description/?envType=study-plan-v2&envId=top-interview-150gotypeRandomizedSetstruct{isHavemap[int]inttotalintarr[]int}funcConstructor()RandomizedSet{retur......
  • 智慧卫生间环境传感器有哪些?智慧卫生间的特点@卓振思众
    随着科技的进步和人们对生活品质的要求不断提高,智慧卫生间作为现代化设施的代表,越来越受到关注。智慧卫生间不仅仅是在外观设计上做文章,更在于其背后强大的智能系统,特别是环境传感器的应用,让厕所的管理和使用变得更加高效和舒适。本文将探讨智慧卫生间环境传感器的组成及其带来......
  • 想要数字人直播平台赚钱,前期源码部署要注意哪些要点?
    随着人工智能时代的到来,数字人直播的应用频率不断升高,展现巨大收益潜力的同时,也让不少想要通过数字人源码厂商搭建数字人直播平台的创业者产生好奇,并开始从各方面打听数字人直播平台怎么赚钱等相关问题的答案。本期,我们将以数字人源码厂商灰豚所搭建的数字人直播平台为例,对市......
  • 【代码随想录】一、数组:2.移除元素
    部分图文参考于:代码随想录-移除元素和力扣官方解法。1.题目1★:27.移除元素1.1.解法1:暴力解法考验对数组底层实现的理解:数组的元素是不能删的,只能覆盖。通过两层for循环来求解,外层for循环遍历数组元素,内层for循环将目标值进行覆盖。classSolution{public:intremove......
  • 科研单位所需要的文件自动同步备份软件具有哪些特征?
    科研单位进行文件同步备份是保障数据安全、提高工作效率、符合法规要求以及实现数据共享与再利用的重要措施。文件同步备份不仅能保护科研单位的研究成果,还能提升工作协同效率,具体优势体现在:预防数据丢失:科研单位在工作中会产生大量的重要数据,包括研究成果、实验数据、专利资料等......
  • 在K8S中,说⼀下Pod状态有哪些?
    在Kubernetes(K8S)中,Pod的状态反映了Pod及其内部容器的运行情况。以下是Pod可能出现的主要状态及其含义:Pending(等待)Pod已经被KubernetesAPI接受,但其容器镜像还未被拉取,或者Pod所需的节点资源(如CPU、内存等)还未满足。在这个状态中,Pod是不可调度的。Runni......
  • 在K8S中,镜像的拉取策略有哪些?
    在Kubernetes中,镜像拉取策略(ImagePullPolicy)定义了何时从容器镜像仓库拉取或更新容器镜像。这些策略对于管理容器化应用的部署和更新非常重要。Kubernetes提供了以下几种镜像拉取策略:Always:无论本地是否存在该镜像,总是尝试从远程仓库拉取最新的镜像。这可以确保使用的是最......
  • 浏览器窗口放大缩小自动适配字体和元素的大小
    通过JavaScript动态设置根元素(html)font-size,rem的建立最初的字体在Vue项目的入口文件(如main.js)中,根据html的`font-size:functionsetHtmlFontSize(){constbaseSize=16;//基础字体大小constdesignWidth=1920;//设计稿的宽度constclientWidth=......
  • 文件保护软件有哪些?8大文件安全加密管理软件大盘点(合集篇)
    文件安全已成为企业和个人不可忽视的重要问题。为了保护敏感数据不被非法访问、泄露或篡改,各种文件保护软件应运而生。本文将为您盘点八款备受推崇的文件安全加密管理软件,帮助您更好地保护数据安全。1.域智盾软件该软件是一款功能强大的文件保护软件,通过先进的加密技术,对......
  • 数据安全防护措施有哪些?防数据泄露的10大措施丨让你一次性看够!
     古时烽火传信,密语藏于竹简之间,以防外泄,保家国安宁。 今朝数字洪流,数据如织,信息安全之重,不亚于昔日之密信。在信息爆炸的时代,数据安全防护犹如筑起铜墙铁壁,以防数据泄露之患。 今且论道数据安全之防护措施,防数据泄露之十大良策,愿诸君共鉴,守护数字疆土之稳固。数据安全......