当前位置: 首页 > news >正文

前端过渡动画

前端过渡动画

vue3

1、组件进入视口时向上移动且渐显

1、创建js文件addViewportEffect.js

function slideDownEffect(element) {console.log("执行");element.style.transform = 'translateY(0)';element.style.opacity = '1';
}/*** 添加视口效果到指定的类名元素上。* @param {string} className - 要添加效果的元素的类名。* @param {Function} [effectFunction=slideDownEffect] - 当元素即将进入视口时要执行的动画效果函数。* @param {string} [animatedClass='animated'] - 标记元素已执行动画效果的类名。*/
function addViewportEffect(className, effectFunction = slideDownEffect, animatedClass = 'animated') {document.addEventListener('DOMContentLoaded', function() {var elements = document.querySelectorAll(className);function isInViewport(el) {var rect = el.getBoundingClientRect();var viewportBottom = window.innerHeight || document.documentElement.clientHeight;return rect.top <= viewportBottom;}function checkElements() {elements.forEach(function(el) {if (isInViewport(el) && !el.classList.contains(animatedClass)) {effectFunction(el);el.classList.add(animatedClass); // 标记元素已执行动画效果}});}// 使用IntersectionObserver代替scroll事件监听器const observer = new IntersectionObserver((entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {const element = entry.target;effectFunction(element);element.classList.add(animatedClass); // 动画完成后标记observer.unobserve(element); // 动画完成后取消对该元素的观察}});}, {threshold: 0.1 // 在元素10%进入视口时触发});elements.forEach(el => {observer.observe(el);});});
}// 导出函数,以便在其他文件中使用
export default addViewportEffect;

2、使用

先到需要这个效果的组件上创建一个class,内容如下:

.dx-01{opacity: 0;transform: translateY(200px);transition: opacity 1s ease-in-out, transform 1s ease-in-out;
}
<div class="dx-01">这是要执行效果的组件内容
</div>

然后在导入上面 js 的方法,并在页面创建时使用

<script>
import addViewportEffect from "@/utils/addViewportEffect.js";
export default {    mounted() {this.recommendsIndex = 0this.switchRecommend()addViewportEffect(".dx-01")},
}
</script>

js方法可复用,记得每次设置不同的class才行,不然会重复。

相关文章:

前端过渡动画

前端过渡动画 vue3 1、组件进入视口时向上移动且渐显 1、创建js文件addViewportEffect.js function slideDownEffect(element) {console.log("执行");element.style.transform translateY(0);element.style.opacity 1; }/*** 添加视口效果到指定的类名元素上。…...

actual combat 38 ——vue

vue-cli脚手架 创建命令&#xff1a;vue create 项目名称 eslint 如何关闭&#xff1f; vue.config.js文件中加 module.exports {lintOnSave: false }文件全代码&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpile…...

测试面试宝典(四十七)— 功能测试用例一般包含哪些内容

首先&#xff0c;明确测试用例的编号和名称&#xff0c;以便于识别和管理。 其次&#xff0c;详细描述测试的目标和背景&#xff0c;让其他人能够清楚了解该测试用例的目的和适用场景。 接着是测试的步骤&#xff0c;需要清晰、准确地列出每一个操作步骤&#xff0c;包括输入…...

rust_mac环境安装

在 macOS 上安装 Rust 很简单。你可以使用 Rust 提供的安装工具 rustup。下面是安装步骤&#xff1a; 打开终端。 运行以下命令以安装 rustup 和 Rust&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh按照提示进行操作&#xff1a; 这个命令将下载并…...

【前端面试】七、算法-递归

常考算法 排序算法&#xff1a;快速排序、归并排序、堆排序等。 查找算法&#xff1a;二分查找、哈希表查找等。 动态规划&#xff1a;解决最优化问题&#xff0c;如斐波那契数列、最长公共子序列等。 图论算法&#xff1a;最短路径&#xff08;Dijkstra、Floyd-Warshall&am…...

CmsEasy逻辑漏洞--零元购

CmsEasy逻辑漏洞--零元购 选择购买MackBook 购买成功后会员中心发现多出8100快钱 然后就可以正常购买了...

Linux 内核源码分析---I/O 体系结构与访问设备

I/O 体系结构 与外设的通信通常称之为输入输出&#xff0c;一般都缩写为I/O。 在实现外设的I/O时&#xff0c;内核必须处理3个可能出现的问题&#xff1a; &#xff08;1&#xff09;必须根据具体的设备类型和模型&#xff0c;使用各种方法对硬件寻址&#xff1b; &#xff08…...

在cPanelWHM中如何重置 MySQL 用户帐户密码

更改MySQL用户账户密码非常简单。服务器管理员可以在WHM中编辑任何MySQL用户的帐户。cPanel用户可以编辑其帐户管理的数据库的密码。 在WHM中更改MySQL用户帐户密码 打开WHM&#xff0c;在侧边菜单中的SQL服务下选择“Change MySQLUser Password”。Hostease的服务器产品提供稳…...

软件测试基础1--功能测试

1、什么是软件测试&#xff1f; 软件是控制计算机硬件运行的工具。 软件测试&#xff1a;使用技术手段验证软件是否满足使用需求&#xff0c;为了发现软件功能和需求不相符合的地方&#xff0c;或者寻找实际输出和预期输出之间的差异。 软件测试的目的&#xff1a;减少软件缺陷…...

《计算机网络》(第8版)第9章 无线网络和移动网络 复习笔记

第 9 章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能&#xff0c;可分为两大类&#xff1a;有固定基础设施的和无固定基础设 施的。 &#xff08;1&#xff09;IEEE 802.11 IEEE 802.11 是无线以太网的标准&#xff0c;是有固定…...

非负数、0和正整数 限制最大值且保留两位小数在elementpuls表单中正则验证

一、结构 <el-form-item label"单价&#xff1a;" prop"price"><el-inputv-model.trim"formData.price"placeholder"请输入"blur"formMethod.fixTwo"><template #append>(元)</template></el-i…...

Java多线程-----定时器(Timer)及其实现

目录 一.定时器简介&#xff1a; 二.定时器的构造方法与常见方法&#xff1a; 三.定时器的模拟实现&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 在开发中&#xff0c;我们经常需要一些周期性的操作&#xff0c;例如每隔几分钟就进行某一项操作&#xff0c;这…...

【Linux修行路】进度条小程序

目录 ⛳️推荐 一、预备知识 1.1 回车换行 1.2 缓冲区 二、倒计时 2.1 注意事项 三、进度条 3.1 源代码 3.2 代码分析 3.2 实际使用场景 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家…...

网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发.3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.遇到实在搞不懂的,可以先放放,以后再来解决. 基…...

【探索Linux】P.44(数据链路层 —— 以太网的帧格式 | MAC地址 | MTU | ARP协议)

阅读导航 引言一、认识以太网二、以太网的帧格式三、MAC地址四、MTU五、ARP协议温馨提示 引言 在深入探讨了网络层的IP协议之后&#xff0c;本文将带领读者进一步深入网络的底层——数据链路层。我们将详细解析以太网的帧格式&#xff0c;这是数据链路层传输数据的基本单元&am…...

<数据集>航拍行人识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7482张 标注数量(xml文件个数)&#xff1a;7482 标注数量(txt文件个数)&#xff1a;7482 标注类别数&#xff1a;1 标注类别名称&#xff1a;[people, pedestrian] 序号类别名称图片数框数1people5226385602pedes…...

在 Windows 10 系统上部署 Medusa

先决条件 在安装 Medusa 之前&#xff0c;你需要确保已经安装了以下工具&#xff1a; Node.js: Medusa 需要 Node.js v16 或更高版本。你可以从 Node.js 官网下载并安装。Git: Git 用于从 GitHub 获取 Medusa 的源代码。你可以从 Git 官网下载并安装。PostgreSQL: Medusa 使用…...

Linux进程 (冯诺依曼体结构 管理 PCB 进程状态 僵尸进程 孤儿进程 运行阻塞挂起状态 进程优先级)

文章目录 一.冯诺依曼体系结构冯诺依曼结构能干什么&#xff1f; 二.操作系统概念结构图(不完整)为什么要有操作系统&#xff1f; 尝试理解操作系统管理结构图(完整)总结&#xff1a; 三.进程进程是什么&#xff1f;PCB为什么要有PCB&#xff1f; Linux中的PCB进程的task_struc…...

《LlamaIndex 之美》-01-LLM、Prompt、Embedding基础入门

在基于数据构建任何 LLM 应用程序时&#xff0c;选择合适的大型语言模型 &#xff08;LLM&#xff09; 是您需要考虑的首要步骤之一。 LLM 是 LlamaIndex 的核心组成部分。它们可以作为独立模块使用&#xff0c;也可以插入到其他核心 LlamaIndex 模块&#xff08;索引、检索器…...

C++ 智能指针简单介绍及用法

C 智能指针简单介绍及用法 智能指针是 C11 引入的一个非常实用的特性&#xff0c;旨在自动管理动态分配的内存&#xff0c;避免内存泄漏和悬空指针问题。主要有三种类型的智能指针&#xff1a;std::unique_ptr、std::shared_ptr 和 std::weak_ptr。下面是对它们的详细介绍&…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...