目前最流行的 5 大 Vue 动画库,使用后太炫酷了

news2025/2/24 3:54:36

⭐️ 本文首发自 前端修罗场(点击加入),是一个由 资深开发者 独立运行 的专业技术社区,我专注 Web 技术、答疑解惑、面试辅导以及职业发展现在加入,私聊我即可获取一次免费的模拟面试机会,帮你评估知识点的掌握程度,获得更全面的学习指导意见,交个朋友,少走弯路,少吃亏!

🔥 本文作者已创建广受全网好评的 《前端面试题库》(点击收藏),该题库 针对准备找工作的应届生、初中高级前端工程师设计,以及想要巩固前端基础知识的开发者文章中包含 90% 的面试考点和实际开发中需要掌握的知识,内容按点分类,环环相扣重要的是,形成了前端技能树,提升了自己的前端技术水平。
作者对重点考题做了详细解析和重点标注(建议在 PC 上阅读),并通过图解、思维导图的方式帮你降低了学习成本,节省备考时间,尽可能快地提升。可以说目前市面上没有像这样完善的面试备考指南!

动画在交互方式中发挥着重要作用,它们可通过添加一些视觉风格来增强用户体验。 在本文中,我们将研究和比较目前最流行的 Vue.js 动画库。

vue-kinesis

首先是 vue-kinesis,它是一个强大的动画库,它提供了一系列组件,允许我们将交互式动画添加到我们的 Vue 应用程序中。 这个库会自然地对光标变化做出反应,并根据鼠标事件调用动画,但有趣的是,除此之外,vue-kinesis 还允许我们根据音频变化控制动画。

gif

它的组件具有广泛的自定义属性,我们可以使用它们以编程方式控制动画,从而使我们能够轻松实现所需的效果。

安装

vue-kinesis 可用于 Vue 2 和 Vue 3。 要将这个库包含在 Vue 3 项目中,必须首先安装包:

​​npm install vue-kinesis@next

然后将其导入到文件中,如下所示:

import { createApp } from "vue";
import App from "./App.vue";
import VueKinesis from "vue-kinesis";

const app = createApp(App);
app.use(VueKinesis);

app.mount("#app");

您还可以安装 Vue 2 版本:

npm install vue-kinesis

然后选择导入整个库,以便在项目中的任何位置都可以使用它:

// src/main.js
import Vue from 'vue'
import VueKinesis from 'vue-kinesis'

Vue.use(VueKinesis);

或者只导入一个特定的组件:

import { KinesisContainer } from 'vue-kinesis'

用法

这个库包括三个组件,每个组件都有自己的属性来控制交互流程:

  • Kinesis-container — 用于禁用或启用交互的包装器组件。 此外,为了附加触发动画的事件,支持移动(鼠标交互)和滚动。 但是,移动设备不支持 move 事件

  • Kinesis-element — 要应用动画的元素的包装组件,以及指定动画类型或来源

  • Kinesis-audio — 此组件用于指定在将音频源添加到 kinesis 容器时要响应的音频频率

示例:

<template>
  <div id="app">
    <kinesis-container>
      Here, you can put
      <kinesis-element :strength="10"> whatever </kinesis-element>
      <kinesis-element :strength="20"> content! </kinesis-element>
    </kinesis-container>
  </div>
</template>

<script>
import { KinesisContainer, KinesisElement } from "vue-kinesis";
export default {
  name: "App",
  components: {
    KinesisContainer,
    KinesisElement,
  },
};
</script>

输出:

img

同样,下面是关于音频的示例:

<template>
  <div id="app">
    <div class="main">
      <div style="padding: 40px">
        <button class="play-button" @click="togglePlaying">
          {{ isPlaying ? "Stop" : "Play" }}
        </button>
      </div>
      <div style="padding: 40px">
        <kinesis-container :audio="audioFile" :playAudio="isPlaying">
          <kinesis-audio :audioIndex="50" type="scale">
            <kinesis-element :strength="10" type="depth">
              <div class="circle"></div>
            </kinesis-element>
          </kinesis-audio>
        </kinesis-container>
      </div>
    </div>
  </div>
</template>

<script>
import { KinesisContainer, KinesisElement, KinesisAudio } from "vue-kinesis";
export default {
  name: "App",
  components: {
    KinesisContainer,
    KinesisElement,
    KinesisAudio,
  },
  data() {
    return {
      audioFile: require("./aud.mp3"),
      isPlaying: false,
    };
  },
  methods: {
    togglePlaying() {
      this.isPlaying = !this.isPlaying;
    },
  },
};
</script>

输出:

gif

在此示例中,我们定义了音频文件的路径并将其附加到 kinesis-container,并且由于 kinesis-audio 组件由此触发,我们在其中放置了一个正方形 div,以便每当我们单击切换播放的按钮时 ,div 做出反应。

如前所述,该库通过向包含在其中的元素添加 kinesis 动画来对音频文件中的光标更改、滚动事件或频率做出反应。 因此,它对于在这些范围内创建动画最有用。 然而,一个值得注意的例子是一个简单的音乐应用程序,其中一些其他元素对当前正在播放的音频做出反应。

vue-prix

vue-prix 是另一个很棒的 vue 动画库,可以轻松地为图像添加视差滚动效果。 在视差效果中,前景图像及其背景元素都在移动,但背景移动得慢得多,从而产生深度错觉。

在这里插入图片描述

安装

npm i vue-prlx

然后在我们的入口文件中初始化它:

// src/main.js

import Vue from 'vue'

import VuePrlx from 'vue-prlx'
Vue.use(VuePrlx);

或者,通过其 CDN 引入,如下所示:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-prlx/dist/v-prlx.min.js"></script>

<script>
Vue.use(VuePrlx.VuePrlxPlugin);
</script>

用法

只需在图像标签中添加一个新的 v-prlx 属性,视差效果将立即启动:

<img src="path/to/img" v-prlx>

在移动设备上,默认禁用视差效果。 但是,您可以通过将 .mobile 附加到 v-prlx 属性来轻松启用它:

<img src="path/to/img" v-prlx.mobile>

此外,通过提供额外的对象,我们可以设置视差速度、反转其方向等等:

<img
  src="path/to/img"
  v-prlx="{ reverse: true, speed: 0.2, fromBottom: true }"
/>

在 Web 应用程序中,视差效果通常添加到特色(侧面)图像中。

vue-fake3D-image

这是另一个轻量级的 Vue 库,它允许我们在 Vue 应用程序中为图像添加模拟的交互式 3D 效果。 而且,与我们讨论过的其他一些动画库不同,这个是 SSR 兼容的,这意味着它可以与服务器端渲染一起使用。

gif

安装

npm install @luxdamore/vue-fake3d![在这里插入图片描述](https://img-blog.csdnimg.cn/792cc8cfd65542df8c689897c8ff3f13.gif)
-image-effect

要开始将 3D 效果添加到我们的图像文件中,我们需要导入 Fake3dImageEffect 组件以及库 CSS 文件:

import { Fake3dImageEffect } from "@luxdamore/vue-fake3d-image-effect";
import "@luxdamore/vue-fake3d-image-effect/dist/Fake3dImageEffect.css";

export default {
  components: {
    "fake3d-image-effect": Fake3dImageEffect,
  },
};

或者,如果您想让它成为可以从应用程序中的任何位置访问的全局插件,我们可以使用以下代码来实现:

// src/main.js
import Fake3dImageEffect from "@luxdamore/vue-fake3d-image-effect";
import "@luxdamore/vue-fake3d-image-effect/dist/Fake3dImageEffect.css";

Vue.use(Fake3dImageEffect);

示例:

<template>
  <div id="app">
    <fake3d-image-effect
      fill-height-content
      tag="div"
      :image="require('./path/to/aquarium.jpeg')"
    >
      <div class="container">
        <h1>Boy at <u>Aquarium</u></h1>
        <p class="m-5">
          Lorem ipsum dolor sit amet consectetur adipisicing elit.
          delectus!
        </p>
        <p>Photo by Biljana Martinić on Unsplash</p>
      </div>
    </fake3d-image-effect>
    <img alt="Vue logo" src="./assets/logo.png" />
  </div>
</template>

<script>
import { Fake3dImageEffect } from "@luxdamore/vue-fake3d-image-effect";
import "@luxdamore/vue-fake3d-image-effect/dist/Fake3dImageEffect.css";

export default {
  name: "App",
  components: { Fake3dImageEffect },
};
</script>

在这个例子中你可能已经注意到了,fake3dimage 组件还支持一些其他的 props,比如 fill-height-content prop,它将元素高度设置为 100vh(全高),以及 tag 属性,它允许我们选择 用于包装其他子元素的首选语义元素。

v-wave

在这里插入图片描述

这个库允许我们通过简单地添加一个新的 v-wave 属性在单击标记元素时为标记元素添加漂亮的波纹效果,类似于材质设计中的波纹效果。

这个库有一个有趣的特性,它可以很好地处理静态定位的元素,并且可以根据父元素自动猜测波浪的颜色。 但是,如果认为合适,您也可以设置首选颜色。

安装

npm i v-wave
  • Vue3
import {createApp} from 'vue'
import VWave from 'v-wave'
import App from './App.vue'

createApp(App)
  .use(VWave)
  .mount('#app')
  • Vue2
import Vue from 'vue'
import VWave from 'v-wave'

Vue.use(VWave)

用法

要开始使用这个库,只需将 v-wave 属性添加到要添加波纹效果的任何元素上:

<button v-wave>Click me!</button>
<button v-wave="{ color: 'blue' }">Click me too!</button>

结果:

在这里插入图片描述

我们可以通过更改其初始不透明度、持续时间、缓动和许多其他参数来进一步自定义涟漪效果:

<div
  v-wave="{
  color: 'rebeccapurple',
  initialOpacity: 0.5,
  duration: 2,
  easing: 'ease-in',
}"
>
  Click me!
</div>

结果:

gif

vue-animate-onscroll

该库包含用于在元素滚动到视口时为其设置动画的指令。 然而,与之前的库不同的是,这个库没有直接提供帮助类或组件来允许我们向应用程序添加动画。 相反,它提供了指令,允许我们在应用程序的一部分滚动到视图中时调用动画。

安装

npm install vue-animate-onscroll

引入:

import Vue from 'vue'
import VueAnimateOnScroll from 'vue-animate-onscroll'

Vue.use(VueAnimateOnScroll)

用法

一旦作为 Vue 插件导入,我们可以通过向元素添加 v-animate-onscroll 属性以及我们的动画名称来在滚动时为元素设置动画:

<div v-animate-onscroll="'rotate">Rotate me once upon scroll</div>

但是,如前所述,我们仍然需要定义 CSS 动画 animation 才能触发动画。 一个更相关的例子如下所示:

<template>
  <div id="app">
    <div class="flex-center">
      <div>
        <h1>Awesome application</h1>
        <p>
          Lorem ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis,
          eum.
        </p>
      </div>
    </div>
    <div class="main">
      <img src="path/to/img" v-animate-onscroll="'swing'" />
    </div>
  </div>
</template>

<style>
/* create swing animation */
@keyframes swing {
  10% {
    transform: rotate(10deg);
  }

  40% {
    transform: rotate(-10deg);
  }

  60% {
    transform: rotate(5deg);
  }

  80% {
    transform: rotate(-5deg);
  }
}
</style>

输出:

gif

还值得一提的是,默认情况下,当一个元素滚动到视图中时,其对应的动画只会触发一次。 但是,我们可以使用 v-animate-onscroll.repeat 代替后者,这样只要元素滚动到视图中,就会触发动画:

<img src="path/to/img" v-animate-onscroll.repeat="'swing'" />

此外,您可以自定义要触发动画的滚动方向(向上或向下):

<div v-animate-onscroll="{up: 'animationName'}">Animate me once on scroll up</div>
<div v-animate-onscroll="{down: 'animationName'}">Animate me on upon scroll down</div>

<!-- Different animations for up and down directions -->
<div v-animate-onscroll="{down: 'animationName', up: 'anotherAnimationName'}">Animate me on scroll</div>

从头开始创建 CSS 动画可能很耗时。 出于这个原因,将此库与其他动画库(例如流行的 Animate.css)互换使用是一种常见的方法。

结尾

每个动画库都是不同的,并且有不同的方法使事情变得更容易。 还有许多动画库可供选择。

有了这篇文章,希望您能够从各种可用的动画库中进行选择,并找到一个完美地补充您的 Vue.js 应用程序的动画库。

如果你觉得这篇文章还不错,请点击下方小红心 👍🏻 ❤️,鼓励一下!我会继续为你带来优质的内容~我是前端修罗场,一个独立运行的专业技术社区,感谢你的关注与支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3 antd项目实战——table表格的自定义筛选【纯前端filters过滤、自定义筛选table表格数据】

vue3 antd项目实战——table表格自定义筛选&#xff08;使用filters属性实现表头列columns自定义筛选&#xff09;往期知识调用&#xff08;步骤不懂就看这儿&#xff09;场景复现实战演示实例1——筛选发布状态&#x1f525;1、双向绑定表格列目录、表格数据2、编写列目录内容…

vue控制滚动条滑到某个位置

一.关于web开发的各种高度的计算介绍 设置当前滑动到的距离 语法一&#xff1a;window.scrollTop(x,y) 传俩个值 //x横坐标 y纵坐标 例&#xff1a;window.scrollTop(0&#xff0c;1000) 语法二&#xff1a;window.scrollTop(options) 传对象&#xff0c;对象里面放属性 w…

js遍历map(js遍历map对象)

javascript怎么遍历map var map new HashMap();map.put(a,1);map.put(b,2);遍历&#xff1a;var key map.keySet();for (var i in key){ alert(map.get(key[i]));&#xff5d;注&#xff1a;js 中使用map&#xff0c;要先导入一个HashMap.js文件 没要求&#xff0c;引入这个文…

【深入浅出imx8企业级开发实战 | 04】嵌入式Linux设备掉电数据容错研究

这是机器未来的第58篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126924015 《深入浅出i.MX8企业级开发实战》快速导航 【01】imx8qxp yocto工程构建指南 【02】Yocto工程repo源码gitee加速配置方法 【03】imx8qxp一键独立编译指南 【04】嵌入式…

三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】

像做PPT一样的可视化编程语言你想拥有吗&#xff0c;可以自己尝试一下。像PPT一样的编程语言 文章目录&#x1f353;&#x1f353;用ivx创建一个新的应用&#xff08;零基础&#xff09;&#x1f680;&#x1f680;&#x1f96d;&#x1f96d;点击链接&#xff0c;跳转到官网&a…

【Vue 路由(vue—router)二】路由传参(params的类型 、Query参数的类型、路由name)

目录 前言 一、路由传参 效果展示 1.params的类型 &#xff08;后附源码&#xff09; params的类型源码不要在意注释代码 2.​​​​​​query参数的类型&#xff08;后附源码&#xff09; query参数的类型源码同样无视注释代码 3.路由name 前言 此内容为连载&#xff0c…

一文搞懂JS-Web-API——DOM

&#x1f308;本系列文章是博主精心整理的面试热点问题&#xff0c;吸收了大量的技术博客与面试文章&#xff0c;总结多年的面试经历&#xff0c;带你快速建立前端面试知识体系。抓住每一场面试的机会&#xff0c;知己知彼才能百战百胜。直击技术痛点&#xff0c;主动出击&…

Pinia 数据持久化储存(pinia-plugin-persistedstate)

pinia需要使用pinia-plugin-persistedstate插件来进行数据的存储 插件官网地址&#xff1a; https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html 1、安装 这里对插件的安装就不多赘述了&#xff0c;放两张官网的截图 使用命令&#xff1a;npm i pi…

Vue--》计算属性与监视(侦听)属性的使用

目录 计算属性(computed) 监视属性(watch) 监视的两种方法 immediate选项 深度监视 计算属性(computed) 计算属性指的是通过一系列运算之后&#xff0c;最终得到一个值。这个动态计算出来的属性值可以被模板结构或methods方法使用&#xff0c;案例如下&#xff1a; <…

前端实战|React18极客园——登陆模块(token持久化、路由拦截、mobx、封装axios)

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React框架React框架React框架&#x1f525…

vite搭建vue2项目

问题提出 最近在做一个练习的小项目&#xff0c;由于要配合组成员的其它成员来搭建项目&#xff0c;大多掌握的技术栈都在vue2&#xff0c;用惯了vite来搭建&#xff08;vite真香~&#xff09;,就想着来搭建一个vue2的项目。原本以为查下百度很快可以搭好&#xff0c;没想到折…

【小程序从0到1】WXSS模版语法汇总

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React/小程序React/小程序React/小程序&am…

微前端vue项目实战 -- 乾坤qiankun框架 (一)

背景&#xff1a; 公司研发的项目主要是 GIS地图为基础的管理系统&#xff0c;由主体项目&#xff08;管理业务模块&#xff09; GIS地图应用&#xff0c;由于 GIS地图应用模块 会在多个地方使用&#xff0c;所以单独构建一个项目&#xff0c;分别在不同的业务场景中引用、交互…

JavaScript鼠标移动事件及案例

一、鼠标点击事件 1.onclick单击事件 鼠标单击时事件处理函数 <input type"button" id"bt" value"点击"> <script> //找到按钮并设置点击事件 document.getElementById("bt").onclick function (){ //被点击…

kkFileView部署及使用

Windows:kkFileView部署及使用前言部署Web引用普通webVue &#xff1a;需要引入base64.js前言 kkFileView支持主流文档的在线预览服务。官网地址 部署 kkFileView不需要集成&#xff0c;只需要部署到服务器即可。 从 Gitee 上下载最新的压缩包&#xff0c;或者从代码仓库中下…

【Vue+element-ui搭建前端页面】适用于初学者学习

作者有话说&#xff1a; 学习编程我们必不可少的就是做项目&#xff0c;在学习后端的同时&#xff0c;前端知识也是要学习滴&#xff0c;这篇文章将展示如何利用Vue和element-ui搭建前端界面。话不多说&#xff0c;进入主题&#xff01;&#xff01;&#xff01; 目录 首先是…

网页报错“Form elements must have labels”的处理

网页报错“Form elements must have labels”的处理 先给出错误现象源码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width&quo…

uniapp中单选按钮的实现

标签说明&#xff1a; radio-group&#xff1a;单项选择器&#xff0c;内部由多个 <radio> 组成。通过把多个radio包裹在一个radio-group下&#xff0c;实现这些radio的单选。 radio&#xff1a;单选项目 属性说明&#xff1a; change&#xff1a;<radio-group>…

Vue中使用element-ui 给按钮绑定一个单击事件,实现点击按钮就弹出一个dialog对话框

1.需求描述 想要实现点击一个按钮就弹出一个对话框&#xff0c;在对话框中可输入数据进行提交&#xff0c;在点击取消时对话框关闭 2.功能实现 1.创建按钮 在element中把找到按钮的代码放到div里 <el-row><el-button type"primary" plain>新增</el…

Java支付宝沙箱环境支付,SDK接口远程调试【内网穿透】

文章目录1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名6. 使用固定二级子域名进行访问1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,ma…