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

Vue3 卡片绑定滚动条 随着滚动条展开效果 GSAP动画库 ScrollTrigger滚动条插件

介绍

GSAP ScrollTrigger 插件可以将动画与滚动事件同步,基于页面滚动的位置触发动画效果。例如页面元素在进入视口时启动动画,或者在滚动过程中根据用户的滚动进度动态更新动画。

灵感来源于QQ官网,随着滚动条的滑动,慢慢展开卡片列表。
进入前
在这里插入图片描述

进入后
在这里插入图片描述

代码

<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();  // 调用动画函数
});// 创建一个 Vue ref,作为动画目标元素的引用
const contrast = ref(null);// 定义动画函数
function animation() {gsap.fromTo(contrast.value,  // 动画的目标元素是 contrast 元素{gap: 0  // 初始状态,gap 属性设置为 0},{duration: 1,  // 动画持续时间为 1 秒ease: 'power1',  // 动画的缓动效果,'power1' 表示较为平缓的加速/减速曲线gap: 50,  // 结束时,gap 属性变化为 50scrollTrigger: {  // 使用 ScrollTrigger 插件来基于滚动位置触发动画trigger: contrast.value,  // 目标元素是 contrast 元素scrub: true,  // 启用 scrub 功能,允许滚动时平滑控制动画进度start: 'top center',  // 当元素顶部进入视口中心时触发动画end: 'bottom center'  // 当元素底部进入视口中心时结束动画}});
}
</script><template><div class="box"><div style="height: 1000px">1</div>  <!-- 这部分是用来创建滚动区域,使得滚动触发动画 --><div ref="contrast" class="contrast-box"><!-- 目标元素 contrast-box --><div class="p1"></div> <!-- 子元素 p1 --><div class="p2"></div> <!-- 子元素 p2 --><div class="p3"></div> <!-- 子元素 p3 --></div></div>
</template><style scoped>
.box {background-color: gainsboro;  /* 设置背景颜色为 gainsboro */height: 5000px;  /* 设置盒子高度,使其具有滚动条 */overflow: hidden;  /* 隐藏溢出部分 */
}.contrast-box {display: flex;  /* 使用 flexbox 布局 */justify-content: center;  /* 使内容水平居中 */align-items: center;  /* 使内容垂直居中 */
}.p1 {background: url("assets/p1,.png") no-repeat center/cover;  /* 设置背景图像 */height: 700px;  /* 设置高度 */width: 350px;  /* 设置宽度 */margin-right: -80px;  /* 设置右边距 */
}.p2 {background: url("assets/p2.png") no-repeat center/cover;  /* 设置背景图像 */height: 700px;  /* 设置高度 */width: 350px;  /* 设置宽度 */margin-top: -120px;  /* 设置上边距 */z-index: 1;  /* 设置 z-index,确保它位于其他元素上层 */
}.p3 {background: url("assets/p3.png") no-repeat center/cover;  /* 设置背景图像 */height: 700px;  /* 设置高度 */width: 350px;  /* 设置宽度 */margin-left: -80px;  /* 设置左边距 */
}
</style>

效果图

进入前
在这里插入图片描述

进入后
滑动滚动条进入
在这里插入图片描述

http://www.xdnf.cn/news/12548.html

相关文章:

  • 2025/6/4—halcon算子及知识点总结
  • windows11右键取消二次加载
  • 网络编程之服务器模型与UDP编程
  • CVPR 2025 | 港中文 MMLab 提出文生图模型 T2I-R1,文生图进入R1时刻!
  • 让敏感数据在流转与存储中始终守护在安全范围
  • mysql的分页场景下,页数越大查询速度越慢的解决方法
  • K-Means颜色变卦和渐变色
  • linux系统终端远程控制和传输方式
  • 【 *p取出内容 a得到地址】
  • clickhouse 学习总结
  • KuiperInfer跟学第二课——张量的构建与实现
  • 什么是质量管理系统?质量管理系统都有哪些功能?
  • 5G网络中频段的分配
  • 无公网IP外网可访问项目研发管理软件 codes
  • AI界的“专家会诊”:MoE模型如何让AI变得更聪明?
  • Java多态机制深度解析
  • 在网页加载时自动运行js的方法(2025最新)
  • Linux 前后端项目问题排查命令手册
  • 量化面试绿皮书:5. 扑克牌游戏概率与期望值
  • 深入理解Java单例模式:确保类只有一个实例
  • android app 一个 crash的解决过程!
  • count() + case when统计问题
  • Next.js+prisma开发二
  • 【LLMs篇】14:扩散语言模型的理论优势与局限性
  • H_Prj06 8088单板机的串口
  • 贝叶斯网络_TomatoSCI分析日记
  • vanna+deepseek+chainlit 实现自然语言转SQL的精度调优
  • 一种全新的非对称加密算法
  • 豪斯多夫距离 (Hausdorff Distance)在机器人轨迹规划中的应用
  • Kubernetes指标实现有效的集群监控和优化