Vue - 关于vue-kinesis 移动动画组件

news2024/9/21 0:27:35

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

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

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

相关文章

kotlin简介

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言&#xff0c;被称之为 Android 世界的Swift&#xff0c;由 JetBrains 设计开发并开源。 Kotlin 可以编译成Java字节码&#xff0c;也可以编译成 JavaScript&#xff0c;方便在没有 JVM 的设备上运行。 在Google I/O 2017…

LabVIEW机器人神经网络运动控制系统

LabVIEW机器人神经网络运动控制系统 介绍了如何使用LabVIEW软件和中枢模式发生器(CPG)神经网络实现对舵机驱动爬壁机器人的精准运动控制。通过结合仿生控制理念与高级程序设计&#xff0c;本项目旨在开发一种能自动完成复杂墙面移动任务的机器人。 项目背景 现代机器人技术中…

股市中的“黄金分割线”(原理、画法、用法)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 黄金分割线 📒📝 黄金分割线的基本原理📝 黄金分割线的画法📝 黄金分割线的用法⚓️ 相关链接 ⚓️📖 介绍 📖 股市风云变幻,寻找股价的支撑位和压力位是每位投资者的必修课。在众多分析方法中,有一种名为“黄金分…

算法力扣刷题记录 七十二【93.复原IP地址】

前言 本文练习回溯章节。回溯章节第七篇。 记录 七十二【93.复原IP地址】。 一、题目阅读 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2…

前端面试题整合

一、HTML篇 1、简述一下你对HTML语义化的理解&#xff1f; 用正确的标签做正确的事情&#xff1b; HTML语义化让页面内容结构清晰&#xff0c;便于浏览器、搜索引擎解析&#xff1b; 搜索引擎的爬虫依赖HTML标记来确定上下文和关键字的权重&#xff0c;利于SEO&#xff1b; 便于…

Typro + PicGo 图床 + Docsify + GitHub Pages,玩转个人知识库搭建,写给小白的建站入门课

自动开了这个号以后&#xff0c;陆陆续续写了很多干货文章&#xff0c;一方面是可以帮助自己梳理思路&#xff0c;另一方面也方便日后查找相关内容。 但是&#xff0c;我想检索某个关键词是在之前哪篇文章写过的&#xff0c;就有点捉急了。CSDN 还好&#xff0c;可以检索到相关…

趋动科技陈飞:从小模型到大模型,AI时代下的数据中心建设

自AI大模型横空出世&#xff0c;不断推动着AI从学术界到产业界向大众破圈&#xff0c;新的时代正在来临。11月15-16日&#xff0c;由CDCC主办的“2023第11届数据中心标准大会”在北京国家会议中心盛大开幕。 本届大会的主题围绕“AI时代 重塑未来”&#xff0c;聚焦数据中心领…

pycharm使用fastapi/uvicorn无法reload的问题

pycharm使用fastapi/uvicorn无法reload的问题 一、前言 1、解决方法 &#xff08;1&#xff09;控制台执行uvicorn指令 pycharm的问题&#xff0c;建议控制台直接输uvicorn main:app --reload&#xff0c;而不是在代码里 uvicorn.run() 运行 &#xff08;2&#xff09;将uv…

sharded_inference_engine:MLXDynamicShardInferenceEngine;step

目录 sharded_inference_engine:MLXDynamicShardInferenceEngine 类属性 方法 __init__(self) async def infer_prompt(self, shard: Shard, prompt: str, inference_state: Optional[str] = None) -> (np.ndarray, str, bool) async def infer_tensor(self, shard: …

小白零基础学数学建模系列-Day1-数学建模入门介绍

目录 第1天&#xff1a;数学建模入门介绍一、介绍数学建模的定义和重要性二、常见的数学建模方法概述三、确定问题和建立假设四、模型构建步骤及求解模型的方法五、模型的验证与检验的必要性 作业作业案例分析&#xff1a;实际问题&#xff1a;城市交通拥堵预测问题描述建模方案…

【大模型学习】多模态大模型进行偏好优化

一、简介 训练模型以理解并预测人类偏好是一项复杂的任务。传统方法如SFT&#xff08;监督微调&#xff09;通常需要较高的成本&#xff0c;因为这些算法需要对数据进行特定标签的标注。偏好优化&#xff08;Preference Optimization&#xff09;作为一种替代方案&#xff0c;…

云计算任务调度优化matlab仿真,对比蚁群优化和蛙跳优化

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 ACO蚁群优化 4.2 蛙跳优化 5.完整程序 1.程序功能描述 云计算任务调度优化,优化目标位任务消耗时间&#xff0c;调度后的经济效益以及设备功耗&#xff0c;对比蚁群优化算法和蛙跳优化…

【IEEE独立出版 | EI稳定检索】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024)

【IEEE独立出版 | EI稳定检索】 第三届人工智能、物联网和云计算技术国际会议&#xff08;AIoTC 2024&#xff09; 2024 3rd International Conference on Artificial Intelligence, Internet of Things and Cloud Computing Technology 2024年9月13-15日 | 中国武汉 AIoTC …

mysql 日志爆满,删除日志文件,定时清理日志

今天发现网站不能正常访问&#xff0c;于是登陆服务器查找问题。 机智的我随手用命令&#xff1a;df -l 发现 硬盘爆满了&#xff0c;于是就知道问题所在了。 Filesystem 1K-blocks Used Available Use% Mounted on/dev/xvda1 20641404 16963004 16929876 10…

使用 Elastic 和 Mistral 构建多语言 RAG(二)

这篇文章是之前的文章 “使用 Elastic 和 Mistral 构建多语言 RAG&#xff08;一&#xff09;” 的续篇。在这篇文章中&#xff0c;我将展示如何在本地部署中完成在那篇文章中的实现。 注意&#xff1a;由于 semantic text 从 8.15 版本开始提供&#xff0c;你需要至少 8.15 及…

Go框架选战:Gin、Echo、Fiber的终极较量

Gin 优点: 高性能: 优化以处理高并发和低延迟请求。易于上手: 对于熟悉 Go 的开发者来说&#xff0c;API 设计直观&#xff0c;学习曲线低。社区支持强: 广泛使用&#xff0c;有大量第三方中间件和教程。 缺点: 相比于其他框架如 Echo&#xff0c;Gin缺乏内置的验证支持Gin…

万字长文揭秘高性能架构

从零开始学架构系列文章&#xff1a; 从零开始学架构——概念和基础 从零开始学架构——万字长文揭秘高性能架构 从零开始学架构——高可用架构 从零开始学架构——可扩展架构 高性能存储 关系数据库 互联网业务兴起之后&#xff0c;海量用户加上海量数据的特点&#xff0…

无人机之民用无人机用途分类篇

一、航拍无人机 用于航拍摄影和电影制作&#xff0c;提供空中视角的拍摄服务。可用于电影制作、广告拍摄、房地产销售等。 二、物流无人机 用于快递和货物运输&#xff0c;提高物流效率&#xff0c;可以到达传统配送方式难以覆盖的地区&#xff0c;在突发事件如自然灾害、疫…

keepalived工作原理和使用方式

keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 keepalived主要有三个模块 分别是core、check和vrrp。core模块为keepalived的核心&#xff0c;负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检…

怎么根据企业特点提供个性化的六西格玛培训?

近年来&#xff0c;六西格玛作为一种强大的质量管理方法&#xff0c;以其数据驱动、流程优化和减少缺陷为核心&#xff0c;被众多企业视为提升竞争力的关键工具。然而&#xff0c;并非所有企业都能直接套用标准的六西格玛培训体系&#xff0c;因为每个企业的文化、行业特性、发…