当前位置: 首页 > 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>

效果图

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

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

http://www.lqws.cn/news/176221.html

相关文章:

  • 【数据结构】B树
  • 【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
  • 安装VUE客户端@vue/cli报错警告npm WARN deprecated解决方法 无法将“vue”项识别为 cmdlet、函数
  • vue+elementui 网站首页顶部菜单上下布局
  • 408第一季 - 数据结构 - 栈与队列的应用
  • R²ec: 构建具有推理能力的大型推荐模型,显著提示推荐系统性能!!
  • 市面上哪款AI开源软件做ppt最好?
  • 思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发
  • sklearn 和 pytorch tensorflow什么关系
  • 解决 VSCode 中无法识别 Node.js 的问题
  • 集群与分布式与微服务
  • Unity优化篇之DrawCall
  • Webpack的基本使用 - babel
  • 动态IP与静态IP:数字世界的“变脸术”与“身份证”
  • FPGA 动态重构配置流程
  • Flutter:下拉框选择
  • mitmproxy 爬虫,下载自己的博客图片
  • 国内环境修改 flutter.bat 来设置 flutter 的网络环境
  • 华为大规模——重塑生产力
  • Editing Language Model-based Knowledge Graph Embeddings
  • 基于AWS Serverless架构:零运维构建自动化SEO内容生成系统
  • aardio 简单网页自动化
  • 大模型安全测试报告:千问、GPT 全系列、豆包、Claude 表现优异,DeepSeek、Grok-3 与 Kimi 存在安全隐患
  • 在.NET Core控制器中获取AJAX传递的Body参数
  • 小牛电动NXT,市场销量第一
  • vscode .husky/pre-commit: line 4: npx: command not found
  • C++ 基础特性深度解析
  • 【AI论文】超越80/20规则:高熵少数令牌驱动LLM推理的有效强化学习
  • 3步布局关键词让流量更精准
  • Spring Cloud核心组件深度解析(2025终极指南)