Vue3 GSAP动画库绑定滚动条视差效果 绑定滚动条 滚动条动画 时间轴
介绍
GSAP 用于创建高性能、可控制的动画效果。由 GreenSock 团队开发,旨在提供流畅、快速、稳定的动画效果,并且兼容各种浏览器。 提供了多个插件,扩展了动画的功能,如 ScrollTrigger(滚动触发动画)、DrawSVG(绘制路径动画)、MorphSVG(路径形状变换)等。通过绑定滚动条制作动态效果。
效果
页面进前
随着滚动条的滚动放大
进入后
安装
npm install gsap
代码
<script setup>
import gsap from 'gsap'; // 导入 GSAP 动画库
import { ScrollTrigger } from "gsap/ScrollTrigger"; // 导入 GSAP 的 ScrollTrigger 插件,用于实现滚动触发动画
gsap.registerPlugin(ScrollTrigger); // 注册 ScrollTrigger 插件,使其可用import { onMounted, ref } from "vue"; // 导入 Vue 相关的生命周期钩子和引用(ref)// 使用 Vue 的生命周期钩子 onMounted,当组件挂载到页面时执行动画
onMounted(() => {animation(); // 调用动画函数
});// 创建一个对 logo 元素的引用,后续用于获取 DOM 元素
const logo = ref(null);// 定义动画函数
function animation() {gsap.fromTo(logo.value, // 动画的目标元素是 logo 元素{fontSize: '10vw', // 初始字体大小为 10vwcolor: '#ffff', // 初始文字颜色为白色textAlign: 'center', // 初始文字居中对齐},{duration: 4, // 动画持续时间为 4 秒ease: 'power1', // 动画的缓动效果,'power1' 表示较为平缓的加速/减速曲线fontSize: '28vw', // 动画结束时字体大小为 28vw(变大)color: 'transparent', // 动画结束时文字颜色变为透明scrollTrigger: { // 使用 ScrollTrigger 插件来基于滚动位置触发动画trigger: logo.value, // 当 logo 元素滚动到视口时触发动画scrub: true, // 启用 scrub 功能,允许滚动时平滑控制动画进度pin: true, // 使元素在滚动时固定在页面上,直到动画结束start: 'top center', // 当 logo 元素的顶部进入视口中心时开始动画end: 'bottom top' // 当 logo 元素的底部进入视口顶部时结束动画}});
}
</script><template><!-- 这是页面的结构 --><div class="box"><!-- 用于模拟页面中的其他内容,滚动条可用来查看整个动画效果 --><div style="height: 100vh; background-color: red">14</div><!-- 这是 logo 部分,包含三个文字元素 --><div ref="logo" class="preview center"><div class="logo-text-1">哪</div> <!-- logo 的第一部分文字 --><div class="logo-text-2">旅</div> <!-- logo 的第二部分文字 --><div class="logo-text-3">行</div> <!-- logo 的第三部分文字 --></div></div>
</template><style scoped>
/* 定义页面的整体样式 */
.box {background-color: #c36ed9; /* 设置背景颜色为紫色 */height: 5000px; /* 设置 box 的高度为 5000px,确保页面有足够的高度可以滚动 */overflow: hidden; /* 防止超出 box 的内容显示出来 */
}/* 定义每个 logo 部分的样式 */
.logo-text-1 {background: url("assets/site_1.jpeg") no-repeat center/cover; /* 设置 logo-text-1 的背景图像,并使其覆盖整个区域 */background-clip: text; /* 将背景应用到文本上,实现文字填充背景图像 */font-weight: bold; /* 设置字体加粗 */
}.logo-text-2 {background: url("assets/site_2.jpg") no-repeat center/cover; /* 设置 logo-text-2 的背景图像 */background-clip: text; /* 将背景应用到文本上 */font-weight: bold; /* 字体加粗 */
}.logo-text-3 {background: url("assets/site_3.jpg") no-repeat center/cover; /* 设置 logo-text-3 的背景图像 */background-clip: text; /* 将背景应用到文本上 */font-weight: bold; /* 字体加粗 */
}/* 居中对齐 logo 元素 */
.center {display: flex; /* 使用 Flexbox 布局 */justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */
}
</style>
效果灵感来源QQ官网
页面进入时推进动画
页面进入时
页面进入后
<template><div class="box"><!-- 这是标题容器,用来显示 "去哪旅行" --><div class="title-text"><h1>去哪旅行</h1></div></div>
</template><style scoped>
/* 外层容器,设置背景颜色和高度 */
.box{background-color: royalblue; /* 设置背景颜色为皇家蓝 */height: 1000px; /* 设置容器的高度为1000px */overflow: hidden; /* 隐藏溢出的内容 */
}/* 标题样式 */
.title-text{text-align: center; /* 文字居中对齐 */display: flex; /* 使用flexbox来居中元素 */align-items: center; /* 垂直居中 */justify-content: center; /* 水平居中 */font-size: 8vw; /* 字体大小为视口宽度的8% */background: url("assets/site_4.png") no-repeat center/cover; /* 使用背景图,居中且覆盖容器 */background-clip: text; /* 背景裁剪为文字形状 */color: transparent; /* 文字颜色设置为透明,使背景图显示 */animation: scale 3s forwards; /* 添加动画效果:缩放动画 */white-space: nowrap; /* 禁止文字换行 */letter-spacing: 0.1em; /* 调整字间距,增加文字间的空隙 */
}/* 动画定义 */
@keyframes scale {from{font-size: 30vw; /* 初始字体大小为30vw(视口宽度的30%) */}to{font-size: 8vw; /* 动画结束时字体大小为8vw */color: #ffff; /* 文字颜色为白色 *//* 为文字添加发光效果 */text-shadow: 0 0 5px rgba(255, 255, 255, 0.7), /* 第一个阴影效果 */0 0 10px rgba(255, 255, 255, 0.7), /* 第二个阴影效果 */0 0 20px rgba(255, 255, 255, 0.7); /* 第三个阴影效果 */}
}</style>
相关文章:

Vue3 GSAP动画库绑定滚动条视差效果 绑定滚动条 滚动条动画 时间轴
介绍 GSAP 用于创建高性能、可控制的动画效果。由 GreenSock 团队开发,旨在提供流畅、快速、稳定的动画效果,并且兼容各种浏览器。 提供了多个插件,扩展了动画的功能,如 ScrollTrigger(滚动触发动画)、Dra…...

grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
还在深夜盯着 Grafana 图表手动排查问题?今天推荐一个让 AI 能“读图说话”的开源神器 —— grafana-mcp-analyzer。 想象一下这样的场景: 凌晨3点,服务器告警响起。。。你睁着惺忪的眼睛盯着复杂的监控图表 😵💫花…...
git commit 执行报错 sh: -/: invalid option
目录 目录 1. 检查 Git 钩子脚本(核心步骤)2. 临时绕过钩子(快速提交)3. 修复钩子依赖环境4. 重新初始化 Husky(如适用)5. 验证用户配置 Tips: 如果是 clone 下来的新项目直接进行 步骤 4 。…...
uniapp 设置手机不息屏
在使用 UniApp 开发应用时,有时需要在设备长时间未操作时实现息屏保护功能,以节省电量和保护屏幕。以下是如何在 UniApp 中实现这一功能的步骤。 示例一 // 保持屏幕常亮 uni.setKeepScreenOn({keepScreenOn: true });// 监听应用进入后台事件 uni.onH…...

【题解-洛谷】B3622 枚举子集(递归实现指数型枚举)
题目:B3622 枚举子集(递归实现指数型枚举) 题目描述 今有 n n n 位同学,可以从中选出任意名同学参加合唱。 请输出所有可能的选择方案。 输入格式 仅一行,一个正整数 n n n。 输出格式 若干行,每行…...

(LeetCode 每日一题)3170. 删除星号以后字典序最小的字符串(贪心+栈)
题目:3170. 删除星号以后字典序最小的字符串 思路:贪心栈,时间复杂度0(n)。 对于每一个‘ * ’,优先选最右边的最小字符,才会使最终得到的字符串最小。 用栈,来记录每个字符的位置下标。细节看注释。 C版本…...
Protobuf 中的类型查找规则
a.proto syntax "proto2"; //protoc3生成代码兼容proto2语法 package pkgA; message Example { }ba.proto package pkgB.pkgA; message Example { }b.proto syntax "proto3"; //protoc3生成代码兼容proto2语法 package pkgB; import "test1/a.pr…...
Python项目中添加环境配置文件
在Python项目中添加配置文件有多种方式,每种方式对应不同的依赖包和读取方法。以下是 7种主流配置管理方案,包含安装命令、配置示例和变量读取方法: 1. .env 文件(推荐简单项目) 依赖包: python-dotenv pip install …...
【区块链基础】区块链的 Fork(分叉)深度解析:原理、类型、历史案例及共识机制的影响
区块链的 Fork(分叉)全面解析:原理、类型、历史案例及共识机制的影响 在区块链技术的发展过程中,Fork(分叉)现象是不可避免且极具影响力的一个环节。理解区块链分叉的形成原因、具体表现以及共识机制对分叉的作用,对于深入把握区块链技术架构及其治理机制至关重要。 本…...
IOS 打包账号发布上传和IOS Xcode证书配置
xcode下载 https://developer.apple.com/download/all/ App发布 https://appstoreconnect.apple.com/ https://appstoreconnect.apple.com/teams/83ba877c-af24-4fa5-aaf2-e9b9b6066e82/apps/6473148620/testflight/groups/eb983352-b2e2-4c29-bbb7-071bf7287795 https://devel…...

使用 HTML + JavaScript 实现文章逐句高亮朗读功能
在这个信息爆炸的时代,我们每天都要面对大量的文字阅读。无论是学习、工作还是个人成长,阅读都扮演着至关重要的角色。然而,在快节奏的生活中,我们往往难以找到足够的安静时间专注于阅读。本文用 HTML JavaScript 实现了一个基于…...
【CSS-4】掌握CSS文字样式:从基础到高级技巧
文字是网页内容的核心载体,良好的文字样式设计不仅能提升可读性,还能增强网站的整体视觉效果。本文将全面介绍CSS中控制文字样式的各种属性和技巧,帮助您打造专业级的网页排版。 1. 基础文字属性 1.1 字体设置 (font-family) body {font-f…...

双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
安科瑞刘鸿鹏 摘要 在“双碳”战略和能源结构转型的大背景下,企业储能电站逐步成为提升能源利用效率、增强用能韧性的重要手段。随着系统规模扩大与运行复杂度提升,如何对光伏、储能、负荷等流进行实时调控,成为智慧用能的关键。ACCU100微…...

3. 简述node.js特性与底层原理
😺😺😺 一、Node.js 底层原理(简化版) Node.js 是一个 基于 Chrome V8 引擎构建的 JavaScript 运行时,底层核心由几部分组成: 组成部分简要说明 1.V8 引擎 将 JS 编译成机器码执行࿰…...

OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 创建一个用于在 GPU 上执行模板匹配的 TemplateMatching 对象。 该函数返回一个指向 TemplateMatching 的智能指针(Ptr)…...

【Kubernetes】K8s 之 ETCD - 恢复备份
ETCD 是一个高可用的分布式键值存储,常用于存储配置信息和服务发现等。当系统出现故障或数据损坏时,能够快速恢复成先前的状态是维护系统稳定性的关键。ETCD 提供了备份和恢复功能,以确保数据持久性和可靠性,一起来看看如何操作吧…...
CMS、G1、ZGC、Shenandoah 的全面对比
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! Java 垃圾回收器从最早的 Serial 一步步演化,如今已经有了多款高性能、低延迟的 GC 垃圾收集器可选,比如 CMS、G1、…...

RabbitMQ 学习
MQ 的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。…...

如何轻松、安全地管理密码(新手指南)
很多人会为所有账户使用相同、易记的密码,而且常常多年不换。虽然这样方便记忆,但安全性非常低。 您可能听说过一些大型网站的信息泄露事件,同样的风险也可能存在于您的WordPress网站中。如果有不法分子获取了访问权限,您的网站和…...

AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
摘要:本文详解如何利用AWS App Mesh统一管理微服务间通信,实现精细化流量控制、端到端可观测性与安全通信,提升云原生应用稳定性。 一、什么是AWS App Mesh? AWS App Mesh 是一种服务网格(Service Mesh)解…...

9.axios底层原理,和promise的对比(2)
😺😺😺 和promise的对比 完全可以直接使用 Promise 来发 HTTP 请求,比如用原生 fetch Promise 就可以实现网络请求功能👇 ✅ 用 Promise fetch 的写法(原生) fetch(‘https://api.example.c…...

用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战 引言 在Web交互设计中,粒子动画因其动态美感和视觉吸引力被广泛应用于节日特效、情感化界面等场景。本文将通过实战案例,详细讲解如何使用HTML5 Canvas和JavaScript实现一个「心之律…...
Gartner《How to Create and Maintain a Knowledge Base forHumans and AI》学习报告
核心观点 本研究是一份 Gartne关于如何创建和维护面向人类与人工智能(AI)的知识库的研究报告。报告强调了知识库在知识管理(KM)中的核心地位,尤其是在生成式人工智能(GenAI)时代,一个结构良好的知识库是知识管理成功的关键,反之则可能成为整个知识管理实践的失败点。…...

【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项 1、操作步骤1-5: 安装与启动:安装成功后,在桌面或开始菜单找到软件图标,双击启动。 导入图片:进入软件主界面,点击 “导入图片” 按钮&a…...
PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
torch.cumprod 是 PyTorch 中用于 计算张量沿指定维度的累积乘积(cumulative product) 的函数。 1、函数原型 torch.cumprod(input, dim, *, dtypeNone, outNone) → Tensor参数说明: 参数说明input输入张量dim累积乘积的维度dtype可选&…...
docker镜像下载到本地,并导入服务器
应用场景 : 本地环境可以连接外网,但服务器连接不了外网,直接用docker pull 命令执行拉起镜像报异常。 1.本地拉取xuxueli/xxl-job-admin:2.2.0及查看所有下载的镜像 docker pull xuxueli/xxl-job-admin:2.2.0 docker images 2.保存镜像到…...

数据通信与计算机网络——数字传输
主要内容 数字到数字转换 线路编码 线路编码方案 块编码 扰动 模拟到数字转换 脉冲码调制(PCM) Delta调制(DM) 传输模式 并行传输 串行传输 一、数字到数字转换 将数字数据转换为数字信号涉及三种技术: 线…...
oracle 归档日志与RECOVERY_FILE_DEST 视图
1. RECOVERY_FILE_DEST 视图的作用 RECOVERY_FILE_DEST 是 Oracle 数据库用于 管理快速恢复区(Fast Recovery Area, FRA) 的一个视图。FRA 是 Oracle 提供的一种集中存储恢复相关文件(如归档日志、备份文件、闪回日志等)的区域。…...

黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
Convergent evolution of berberine biosynthesis 小檗碱生物合成的趋同进化 摘要 小檗碱是一种有效的抗菌和抗糖尿病生物碱,主要从不同植物谱系中提取,特别是从小檗属(毛茛目,早期分支的真双子叶植物)和黄柏属&…...

前端杂货铺——TodoList
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...