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

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>

效果图

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

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

相关文章:

  • Spring Boot消息系统开发指南
  • 项目课题——功耗蓝牙(BLE)室内定位系统
  • 前端flex、grid布局
  • 如何在CloudCompare中打开pcd文件
  • LOOI机器人的技术实现解析:从手势识别到边缘检测
  • 区块链可投会议CCF A--SP 2026 截止11.13 附录用率
  • STM32实战:数字音频播放器开发指南
  • 类Transformer架构
  • 加法c++
  • C++优选算法 438. 找到字符串中所有字母异位词
  • 常用操作符,操作符相关笔试题(谷歌)及算法的优化(上)
  • 为什么说数列是特殊的函数
  • golang入门
  • 激活支付宝小程序增长引擎:SCI评分提升的创新实践方案
  • SpringCloud学习笔记-2
  • ComfyUI 中如何使用 Depth ControlNet SD1.5
  • Varjo如何帮助Entrol最大化其XR模拟器的性能
  • F5 GSLB 最佳实践:如何手动将Wide IP 故障转移到另一个数据中心
  • 护网行动面试试题(1)
  • (33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
  • 广西省住房和城乡建设厅官方网站/百度推广工作怎么样
  • 做网站卖什么发财/免费留电话号码的广告
  • 互联网医院建设方案/昆山优化外包
  • 自己怎么建设网站/苏州搜索引擎优化
  • 北京网梯科技发展有限公司/seo优化软件大全
  • 网站改成自适应/百度seo综合查询