Vue - 关于vue-kinesis 动画组件

Vue - 关于vue-kinesis 动画组件

vue-kinesis可以根据鼠标移动或滚动条来控制元素动画的动画效果;除此之外,vue-kinesis 还可以设置音频文件,根据音频频率来控制动画的跳动效果。
在这里插入图片描述

一、安装vue-kinesis

Vue2版本:
1.安装
npm install --save vue-kinesis

2.默认导入
import Vue from 'vue'
import VueKinesis from 'vue-kinesis'

Vue.use(VueKinesis)
Vue3版本:
1.安装
npm install --save vue-kinesis@next

2.默认导入
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-kinesis包括三个组件,每个组件都有自己的属性来控制交互流程:

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

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

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

关于文字简单演示(Vue3):

<template>
    <kinesis-container>
      <kinesis-element :strength="10"> 我会偏移! </kinesis-element>
      <kinesis-element :strength="20"> 我比它更偏移! </kinesis-element>
    </kinesis-container>
</template>

<script setup>
import { KinesisContainer, KinesisElement } from "vue-kinesis";
</script>

在这里插入图片描述
关于图片简单演示(Vue3):

<template>
    <kinesis-container class="image-container">
    <kinesis-element
        class="img_2"
      tag="img"
      :src="a3"
      :strength="-12"
      type="rotate"
      transformOrigin="50% 300%"
      axis="x"
    />
    <kinesis-element
        class="img_2"
      tag="img"
      :src="a2"
      :strength="12"
      type="rotate"
      transformOrigin="50% 300%"
      axis="x"
    />
    <kinesis-element

      tag="img"
      :src="a4"
      :strength="25"
      type="rotate"
      transformOrigin="50% 300%"
      axis="x"
    />
    <kinesis-element
   
      tag="img"
      :src="a5"
      :strength="-25"
      type="rotate"
      transformOrigin="50% 300%"
      axis="x"
    />
    <kinesis-element
      class="img_depth"
      tag="img"
      :src="a1"
      :strength="10"
      type="depth"
      transformOrigin="50% 300%"
    />
  </kinesis-container>
</template>

<script setup>
import { KinesisContainer, KinesisElement } from "vue-kinesis";

var a1 = new URL("./assets/1.jpg", import.meta.url).href;
var a2 = new URL("./assets/2.jpg", import.meta.url).href;
var a3 = new URL("./assets/3.jpg", import.meta.url).href;
var a4 = new URL("./assets/4.jpg", import.meta.url).href;
var a5 = new URL("./assets/5.jpg", import.meta.url).href;

</script>

<style scoped>
.image-container {
  position: relative;
  width: 100px;
  margin: auto;
  text-align: center;
}
img {
  position: absolute;
  left: 0;
  top: 0;
  height: 100px;
  border-radius: 10px;
}
.img_depth{
  position: relative;
  z-index: 3;
}
.img_1{
  z-index: 1;
}
.img_2{
  z-index: 2;
}
</style>

在这里插入图片描述
关于音频简单演示(Vue3):

<template>
     <kinesis-container :audio="audioFile" :playAudio="isPlaying">
      <kinesis-audio :audioIndex="50" :strength="50" type="scale">
        <kinesis-element :strength="10" type="depth">
          <div class="circle" @click="togglePlaying">
            {{ isPlaying ? "Stop" : "Play" }}
          </div>
        </kinesis-element>
      </kinesis-audio>
    </kinesis-container>
</template>

<script setup>
import { KinesisContainer, KinesisElement, KinesisAudio } from "vue-kinesis";
import { ref } from "vue";

var audioFile = new URL("./assets/audo.mp3", import.meta.url).href;
const isPlaying = ref(false);

function togglePlaying() {
  isPlaying.value = !isPlaying.value;
}
</script>

<style scoped>
.circle {
  width: 100px;
  height: 100px;
  border-radius: 10px;
  background: red;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  box-shadow: 0 0 2px 1px rgba(0,0,0,0.2);
}
</style>

在这里插入图片描述

三、组件参数Props

kinesis-container

PropTypeDefault ValueDescription
activeBooleantrue启用或禁用交互
durationNumber1000视差动画的速度(毫秒)
easingString“cubic-bezier(0.23, 1, 0.32, 1)”简化视差动画
tagtagdiv接受任何有效的html标签
eventString“move”容器将作出反应的事件。可能的值是 “move” 和 “scroll”
perspectiveNumber1000适用于“depth”视差类型
audioString指向音频文件的路径
playAudioBoolean启动/停止附加的音频文件

kinesis-element

PropTypeDefault ValueDescription
strengthNumber10运动效果的强度
typeString“translate”动画类型:translate - rotate - scale - scaleX - scaleY - depth - depth_inv
tagString“div”接受任何有效的html标签
transformOriginString“center”类似于CSS的transform-origin属性,具体查看
originXNumber50运动相对于容器的原点位于X轴上。50是容器的中心,0是左侧,100是右侧。
originYNumber50运动相对于容器的原点位于Y轴上。50是容器的中心,0是顶侧,100是底侧。
axisStringnull将移动限制在一个轴上。可能的值:“x”-“y”
maxXNumbernull限制X轴上的最大移动范围
maxYNumbernull限制Y轴上的最大移动范围
minXNumbernull限制X轴上的最小移动范围
minYNumbernull限制Y轴上的最小移动范围
cycleNumber0动作重复次数

kinesis-audio

PropTypeDefault ValueDescription
audioIndexNumber50在0到127的整数值范围内,对哪个频率做出反应。
strengthNumber10运动效果的强度
typeString“translate”动画类型:translate - rotate - scale - scaleX - scaleY - depth - depth_inv
tagString“div”接受任何有效的html标签
transformOriginNumber“center”类似于CSS的transform-origin属性,具体查看
originXNumber50运动相对于容器的原点位于X轴上。50是容器的中心,0是左侧,100是右侧。
originYNumber50运动相对于容器的原点位于Y轴上。50是容器的中心,0是顶侧,100是底侧。
axisStringnull将移动限制在一个轴上。可能的值:“x”-“y”
maxXNumbernull限制X轴上的最大移动范围
maxYNumbernull限制Y轴上的最大移动范围
minXNumbernull限制X轴上的最小移动范围
minYNumbernull限制Y轴上的最小移动范围
cycleNumber0动作重复次数

如前所述,除了鼠标移动"move"触发事件,对于滚动条"scroll"触发事件也是可以的,使用type+transformOrigin参数,能搭配出各种动画效果。

官网链接: vue-kinesis官网
github地址: vue-kinesis - github

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值