Vue3实现滚动加载动画效果

文章介绍了如何在Vue3项目中结合wow.js和animate.css实现滚动加载动画效果。通过安装这两个库,设置元素的特定class,然后在onMounted钩子中初始化wow.js,调整offset值来控制动画触发时机。最终,wow.js会在滚动到指定元素时动态添加class,从而激活animate.css的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滚动加载动画

实现效果:滚到到指定元素后,该元素才执行对应动画


依赖配置

实现该效果,需要借助两个库:wow.js以及animate.css

并且由于wow 依赖于 animate 动画库,所以

安装 animate.css 以及 wow.js
npm install animate.css --save
npm install wow.js --save


配置动画

首先写一个简单的页面

提供两个元素,第一个为占据全屏(是为了提供滚动空间)的 div,第二个为模拟需要执行动画的卡片

<template>
  <div class="container">
    <!-- 占据全屏 -->
    <div class="before">index</div>

    <!-- 欲执行动画的div -->
    <div class="after">after</div>
  </div>
</template>

<script setup></script>

<style scoped lang="less">
  .container {
    width: 100%;

    .before {
      width: 100%;
      height: 100vh;
      background-color: antiquewhite;
    }

    .after {
      width: 40%;
      height: 40vh;
      background-color: aquamarine;
    }
  }
</style>

修改第二个元素,填入你想要执行的动画 class,类名可以直接在 animate.css 官网找到

除此之外,还有一个 scroll-item 类,这是为了让 wowjs 获取该 DOM 的标记

注意!这里先不要为元素添加 animate__animated 类名,这个在后面留给 wowjs 动态添加!!!

<template>
  <div class="container">
    <div class="before">index</div>
    <div class="after scroll-item animate__fadeInRight">after</div>
  </div>
</template>

初始化 wowjs 代码,由于使用 vue3,对于 DOM 操作必须放在 onmounted 钩子执行

wowjs 的实现原理是:在滚动到指定元素位置时,动态的添加一个 class,使其具有动画切换效果,比如下方我们动态添加了类名 animate__animated ,这就使得 animate.css 得以启动并执行动画

<script setup>
import "animate.css";
import Wow from "wow.js";
import { onMounted } from "vue";

onMounted(() => {
  const wow = new Wow({
    // 对所有拥有该class的元素挂载动画
    boxClass: "scroll-item",
    // 需要挂载的动画元素
    animateClass: "animate__animated",
    // 偏移值(即偏移一定距离后再执行动画,推荐设置!)
    offset: 100,
    // 移动设备是否生效
    mobile: true,
    // 是否支持异步
    live: true,
  });
  wow.init();
});
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhillerDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值