JS滚动时显示元素

news2024/11/16 22:29:16

本篇文章我们将实现文章平滑滑入
● 其实这原本是用CSS实现的

.section {
  padding: 15rem 3rem;
  border-top: 1px solid #ddd;

  transition: transform 1s, opacity 1s;
}

.section--hidden {
  opacity: 0;
  transform: translateY(8rem);
}

● 我们的目的呢,就是当滚入到某一节中,将section–hidden给去除就可以了
● 首先,我们先获取想要的class,存储变量中

const allSections = document.querySelectorAll('.section');

● 之后,我们定义一个函数来处理观察者监听到变化的时候,我们应该干啥,就是移除掉section–hidden这个class

const revealSection = function (entries, observer) {  //定义了一个叫做revealSection的函数,用来处理观察者(IntersectionObserver)监听到的变化。
  const [entry] = entries;  // 从entries数组中取出第一个元素,并赋值给entry变量
  if (!entry.isIntersecting) return;  //如果entry对象的isIntersecting属性为false(即元素没有进入视口),则直接返回,不执行后续操作。这个呢,是防止第一个参数,因为第一个参数会被直接定义,直接出现
  entry.target.classList.remove('section--hidden');  //从entry对象中获取目标元素(被观察的.section元素),然后移除它的section--hidden类名,从而使其显示出来。
  observer.unobserve(entry.target);  //调用观察者对象的unobserve方法停止观察当前的目标元素,因为我们只需要元素进入视口时执行一次操作。
};

● 接着呢,我们需要定义对象来监视页面上所有的section的视口变化

const sectionObserver = new IntersectionObserver(revealSection, {  //创建了一个新的IntersectionObserver对象,命名为sectionObserver,它用来监视页面上所有.section元素的可见性变化。revealSection是上面定义的处理函数,用来处理可见性变化时的具体操作。
  root: null,  //指定根元素为null,即使用整个视窗作为根元素,如果要基于另一个元素的可见性来触发,可以在这里指定。
  threshold: 0.15,  //指定触发回调的阈值,表示当.section元素的可见部分占视口的15%以上时,就触发回调函数
});

● 最后呢,我们对section元素进行迭代处理,默认情况是,这些元素是不可见的

allSections.forEach(function (section) {
  sectionObserver.observe(section);   //将每个.section元素注册到sectionObserver观察者中,以便监视它们的可见性变化。
  section.classList.add('section--hidden');  //给每个.section元素添加section--hidden类名,使它们最初隐藏起来。
});

● 完整代码如下

//揭示内容
const allSections = document.querySelectorAll('.section');
const revealSection = function (entries, observer) {
  const [entry] = entries;
  if (!entry.isIntersecting) return;
  entry.target.classList.remove('section--hidden');
  observer.unobserve(entry.target);
};

const sectionObserver = new IntersectionObserver(revealSection, {
  root: null,
  threshold: 0.15,
});

allSections.forEach(function (section) {
  sectionObserver.observe(section);
  section.classList.add('section--hidden');
});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升用户购物体验:多语言跨境电商系统源码优化技巧详解

随着全球化的发展,跨境电商已成为一种趋势。而在跨境电商中,多语言的支持是提升用户购物体验的重要一环。为此,本文将详细介绍多语言跨境电商系统源码的优化技巧。 一、多语言支持的重要性 在全球市场中,用户来自不同的国家和地…

日本服务器托管需要注意哪些问题

日本服务器托管是一项涉及多方面因素的重要决策,为了确保托管服务的稳定、高效与安全,企业或个人在托管过程中需要注意以下几个关键问题: 首先,数据中心的基础设施建设标准是决定托管稳定性的关键。这包括数据中心的建筑抗震、抗洪…

你的B端系统考虑移动化了?还没?那就小心out了。

B端系统移动化的趋势是不可阻挡的。随着移动设备的普及和移动互联网的发展,越来越多的企业和组织意识到移动化对于提高工作效率、拓展市场和提供更好的用户体验的重要性。以下是一些导致B端系统移动化趋势不可阻挡的原因: 移动办公需求:越来越…

Excel 宏录制与VBA编程 ——VBA编程技巧篇二 (合并内容相同连续单元格、取消合并单元格并在每个单元格中保留内容)

1、合并内容相同的连续单元格 如果需要合并如图所示的工作表中B列中部门相同的连续单元格 VBA代码: Sub Mergerng()Dim IntRow As IntegerDim i As IntegerApplication.DisplayAlerts FalseWith Sheet1IntRow .Range("A65536").End(xlUp).RowFor i In…

Activity 的生命周期

1.Activity生命周期基本概念 Activity生命周期指Activity从启动到销毁的过程,Activity表现为四种状态 活动状态: Activity在用户界面中处于最上层,完全能让用户看到,能够与用户进行交互。 暂停状态: Activity在界面…

项目中上传功能过段时间就报错,解决方案

实际项目中,发现过段时间上传功能就报错,报错如下: 排查问题: 在服务器的 /tmp目录下发现并没有 /tomcat目录,也就验证了上面找不到这个文件的报错 那么这个临时给tomcat的上传目录怎么就没有了呢? 其实临…

简单分享下python多态

目录: 一、多态是啥嘞(龙生九子各有不同,这就是多态) 二、基础的实例 三、多态的优势与应用场景 四、深入理解 一、多态是啥嘞(龙生九子各有不同,这就是多态) 多态(Polymorphism&…

无人机森林火灾解决方案

森林火灾解决方案 森林火灾特点 森林火灾发生突然、蔓延迅速、难以控制,应对难度系 数很高,扑救工作十分困难 救援面临的挑战 • 林区交通不便, 山高坡陡, 沟壑纵横,难以及时侦查、 定位、扑灭 • 火灾发生的区域…

Unity休闲手机游戏开发课程

课程介绍 Unity休闲手机游戏开发课程将教您如何利用Unity游戏引擎创建令人愉快的休闲手机游戏。从基础的游戏开发知识到高级的游戏制作技巧,您将学习到创建各种类型的休闲游戏所需的关键技能和工具。无论您是初学者还是有一定经验的开发者,本课程都能帮助…

centos更换yum源、安装Docker和换源

所有操作都是在root权限下做的,切换root用户 命令:su root 使用ls /etc/yum*查看所有的关于yum的文件的路径 先安装wget 命令:yum install wget -y 命令:cd /etc/yum.repos.d进去,以便于操作 我们需要配置的是Cen…

STM32 Cannot access memory

问题描述 最近自己做了一块STM32F103ZET6的板子,在焊接完成后可以在下载器界面看到idcode,但烧录时报错 Cannot access memory 。 解决办法 测量STM32各个供电项,发现时33脚处VDDA电压只有1.8V,是因为R3电阻过大,…

深入理解计算机系统 CSAPP 家庭作业8.19

假设n1 会打印 2行 hello 假设n2 会打印 4行 hello 假设n3 会打印 8行 hello 答案 2的n次方

2024年上半年网络工程师下午真题及答案解析

试题一(20分) 某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。两校区默认由本地…

天呐,iPhone16系列的电池居然能自己更换?

在智能手机的发展历程中,苹果公司一直以其独特的设计理念和创新技术引领着行业的潮流。然而,一体化机身设计中不可更换的电池一直是用户心中的痛点。iPhone16系列的推出,标志着苹果在电池设计上的一次重大突破,它不仅解决了用户的…

色彩搭配的艺术:打造和谐视觉体验的秘诀

当设计作品呈现给用户时首先映入眼帘的是视觉表达,色彩无疑是最关键的元素之一。色彩不仅是视觉艺术的一部分,也承载着情感文化甚至个人品味的多重含义。在设计领域,色彩设计可以极大地影响作品的整体感受和传达效果。那么什么是色彩设计&…

RabbitMQ 更改服务端口号

需求 windows环境下,将RabbitMQ默认的端口号 5672 改为 11001 实现 本机RabbitMQ版本为3.8.16,找到配置文件位置,路径为:C:\Users\%USERNAME%\AppData\Roaming\RabbitMQ\advanced.config 配置文件默认内容为空 填写修改端口号…

Python:Python基础知识(注释、命名、数据类型、运算符)

四、Python基础知识(注释、命名、数据类型、运算符) 1.注释 Python有两种注释方法:单行注释和多行注释。单行注释以#开头,多行注释以‘’‘开头和结尾。 2.命名规则 命名规则: 大小写字母、数字、下划线和汉字等字符及组合&am…

Alpha2:使用深度强化学习挖掘公式化的超额收益因子(附论文及源代码)

原创文章第577篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 今天说说因子挖掘,我们之前交付的Deap遗传算法因子挖掘,大家可以前往温习一下: 源码发布Quantlab4.2,Deap因子挖掘|gplearn做不到的…

基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型

背景 随着城市化进程的加速和房地产市场的快速发展,房价已成为经济学、社会学等多学科交叉研究的热点问题。为了更精确地分析和预测房价,数据分析和机器学习技术被广泛应用。在此背景下,开发一个基于Python Django的房价数据分析平台具有重要…

多维度多场景文档门户,鸿翼ECM文档云打造文档管理新范式

​在现代企业运营中,内容协作的效率直接影响到组织的整体表现和竞争力。传统的文档管理系统都是通过目录结构的方式进行文件管理,在实际业务中无法满足用户多视角、多维度、多场景的文档业务需求。因此,搭建结合文档体系的业务门户是许多企业…