Vue - 关于v-wave 波浪动画组件

news2024/9/23 15:30:12

Vue - 关于v-wave 波浪动画组件

这个动画库可以在标签中添加新的v-wave属性,来让点击标签元素后添加漂亮的波纹效果,并且可以根据父元素自动形成波纹的颜色,也可以自定义波纹颜色,持续时间,透明度,触发的对象等。

一、安装v-wave

npm i v-wave

Vue2引入:

import Vue from 'vue'
import VWave from 'v-wave'

Vue.use(VWave)

Vue3引入:

import {createApp} from 'vue'
import VWave from 'v-wave'
import App from './App.vue'

createApp(App)
  .use(VWave)
  .mount('#app')

通过CDN

<script src="https://unpkg.com/v-wave"></script>
# With a CDN, `VWave` is made available as a global
Vue.use(VWave)

二、如何使用

要使用该动画组件,只需将v-wave属性添加到需要波纹效果的元素标签中,也可以对象的形式去自定义波纹的效果。

默认演示效果如下:

<template>
  <div class="box" v-wave>
    Click here
  </div>
</template>

<style scoped>
.box {
  display: grid;
  place-items: center;
  width: 200px;
  height: 200px;
  padding: 16px;
  box-shadow: 0px 0px 5px 1px #00000026;
  cursor: pointer;
}
</style>

在这里插入图片描述

自定义演示效果如下:

<template>
  <div
    class="box"
    v-wave="{
      color: 'blue',
      initialOpacity: 0.5,
      duration: 2,
      easing: 'ease-in',
    }"
  >
    Click here
  </div>
</template>

<style scoped>
.box {
  display: grid;
  place-items: center;
  width: 200px;
  height: 200px;
  padding: 16px;
  box-shadow: 0px 0px 5px 1px #00000026;
  cursor: pointer;
}
</style>

在这里插入图片描述

使用触发器示例(父子元素):

使用v-wave-trigger绑定在需要点击的子元素标签上,可触发父元素v-wave的动画效果。

<template>
  <label v-wave class="text-input">
    <input type="text" placeholder="Search" />
    <img
      v-wave-trigger
      src="https://justintaddei.github.io/v-wave/imgs/search.svg"
    />
  </label>
</template>

<style scoped>
.text-input {
  display: grid;
  grid-template: 1fr / 1fr auto;
  place-items: center;
  padding: 0 16px;
  height: 48px;
  border: 2px solid #aaa;
  border-radius: 8px;
  font-size: 20px;
}
.text-input> input {
    border: none;
    outline: none;
    background: transparent;
    font-size: inherit;
  }
</style>

在这里插入图片描述

使用触发器示例(根据ID触发,支持多对多):

设置v-wave-trigger:gridDemov-wave=“{trigger: ‘gridDemo’}”,可支持多对多关系,点击其中一个元素,相同trigger的元素也会同步触发。

<template>
  <div  class="waveGrid">
    <div class="box small" v-wave-trigger:gridDemo v-wave="{trigger: 'gridDemo',color:'blue',duration:1}" style=""></div>
   	......
    <div class="box small" v-wave-trigger:gridDemo v-wave="{trigger: 'gridDemo',color:'blue',duration:1}" style=""></div>
  </div>
</template>

<style scoped>
.waveGrid {
    display: inline-grid;
    grid-template: repeat(5, auto) / repeat(5, auto);
    place-items: center;
    gap: 32px;
}
.waveGrid .box.small {
    width: 50px;
    height: 50px;
    cursor: pointer;
}
.box {
    display: grid;
    place-items: center;
    width: 200px;
    height: 200px;
    padding: 16px;
    box-shadow: 0 4px 24px #00000026;
    cursor: pointer;
}
</style>

在这里插入图片描述
也可单击其中一个按钮将激活另一个按钮上的波浪:

<button v-wave="{trigger: 'button2'}" v-wave-trigger:button1>Button 1</button>

<button v-wave="{trigger: 'button1'}" v-wave-trigger:button2>Button 2</button>

三、组件参数Props

名称默认值类型描述
color“currentColor”string颜色
initialOpacity0.2number涟漪首次出现时的不透明度
finalOpacity0.1number当涟漪停止移动时,涟漪应该具有的不透明度
duration0.4number涟漪的总持续时间,以秒为单位
dissolveDuration0.15number“溶解动画”的持续时间,以秒为单位
waitForReleasetrueboolean鼠标释放点击之前,波纹不会溶解
easingease-outstring过度定时函数,具体查看
cancellationPeriod75number延迟,以毫秒为单位
trigger“auto”string 、boolean 、“auto”设置与触发器一起使用时波纹的行为
disabledfalseboolean无论 respectDisabledAttribute 如何,都禁用元素上的波形效果
respectDisabledAttributetrueboolean如果元素上存在 html 属性,则波形效果将被禁用
respectPrefersReducedMotiontrueboolean如果用户的 prefers-reduced-motion 设置为true ,则波形效果将被禁用
stopPropagationfalseboolean防止事件传播到父元素
tagName“div”string设置用作波形容器的元素的标记名称。这在默认值可能会干扰或类似的选择器的情况下非常有用

v-wave动画组件能提供比较漂亮的点击波纹动画效果,且组件自定义比较高,可支持多对多触发关系,有兴趣的可以尝试下!

官网链接: v-wave官网
github地址: v-wave - github

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

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

相关文章

JavaScript骚操作媒体查询攻略

背景 一讲到媒体查询&#xff0c;大家首先想到的可能都是都是CSS中media,这也没错&#xff0c;这确实是最常见的媒体查询方式&#xff0c;但是我们今天要讲的不是它&#xff0c;而是大家很少接触到的window.matchMedia()和window.resize 最近在做项目的时候拿到一个需求&…

MySQL笔记-基础篇(一):查询

博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 MySQL是一种广泛使用的关系型数据库管理系统&#xff0c;它基于结构化查询语言&#xff08;SQL&#xff09;来管理和操作数据。下面将依次探讨MySQL查询的各个方面&#xff0c;确保理解扎实&#xff0c;能够在实…

“阳光高考爬虫项目揭秘:增量爬虫与断点续抓的Python实战“

阳光高考项目 项目要求 爬取各大高校基本信息和招生简章&#xff08;招生简章要求存储为pdf格式并且入库&#xff09; 数据库表设计 idtask_urlstatus&#xff1a;0(未抓取)&#xff0c;1(抓取中)&#xff0c;2(抓取完毕)&#xff0c;3(错误)&#xff0c;4(更新中)&#xff…

C语言小练习(叁)

个人练习&#xff1a; 编程题&#xff1a; 1.编写一个函数&#xff0c;通过输入球的半径&#xff0c;返回球的体积&#xff1b; #include <stdio.h> #define pi 3.14 //计算球体积的函数 double v_ball(double r) {return 4.0 / 3.0 * pi * r * r * r; }int main() {d…

InfluxDB Studio 下载,时序数据库Windows图形界面操作

下载地址&#xff1a; https://github.com/CymaticLabs/InfluxDBStudio/releases解压缩后&#xff0c;双击 InfluxDBStudio.exe 运行。 参考 windows下 influxDB 操作工具 InfluxDBStudio 吐槽 现在 CSDN 太恶心了&#xff0c;动不动就让订阅或者积分下载资源。诚然&#…

【Python学习-UI界面】pyqt5页面布局

1、布局分类 序号类别描述1QBoxLayout可将小部件垂直或水平排列。它的派生类有QVBoxLayout&#xff08;用于垂直排列小部件&#xff09;和QHBoxLayout&#xff08;用于水平排列小部件&#xff09;。2QGridLayout对象呈现为行和列排列的单元格网格。该类包含addWidget()方法&am…

艾迈斯欧司朗推出突破性8通道915nm SMT脉冲激光器,开创激光雷达应用新时代

8通道915nm SMT脉冲激光器可增强自动驾驶汽车的远距离激光雷达系统&#xff1b;经过AEC-Q102认证的8通道QFN封装&#xff0c;具有高性能和高效率&#xff0c;采用艾迈斯欧司朗专有的波长稳定技术&#xff1b;基于20多年的脉冲激光器技术经验。 中国 上海&#xff0c;2024年8月8…

JAVA开发学习-day21

JAVA开发学习-day21 1. 删除表单数据 根据ElementUI的官方组件指南&#xff0c;为表单每列的数据添加删除按钮 <el-table :data"tableData" style"width: 100%"><el-table-column prop"id" label"ID" width"180"…

那些你应该掌握的linux命令

一、路径授权 要给 a 用户 b 路径的所有操作权限,可以使用以下命令&#xff1a; sudo chown -R a:a /b sudo chmod -R 770 /b1.sudo chown -R a:a /b chown 命令用于更改文件或目录的所有者和所属组。-R 选项表示递归地应用于目录及其内部的所有文件和子目录。a:a 表示将所有…

24/8/8算法笔记 条件筛选决策树根节点

筛选决策树的根节点是建立决策树过程中的一个重要步骤&#xff0c;主要原因包括&#xff1a; 减少计算量&#xff1a;选择合适的根节点可以减少树的深度&#xff0c;从而减少模型训练和预测时的计算量。 提高模型性能&#xff1a;选择最佳分裂点可以最大化模型的性能&#xff…

更换低版本jdk8后的idea页面怎么换回来

一、问题阐述 一开始我的idea是下面的界面&#xff1a; 这个页面美观&#xff0c;简洁。后来因为工作需要&#xff0c;从jdk17切换到jdk8的时候&#xff0c;页面变了 这个没有前面的好看&#xff0c;怎么回事&#xff1f; 二、解决方案 1、file——setting 2、搜索ui——New UI…

全新博客X主题/简约WordPress主题模板/主题巴巴/免授权版源码+自适应设计

源码简介&#xff1a; 博客X这款超酷的Wordpress主题&#xff0c;是主题巴巴团队打造的设计杰作。想象一下&#xff0c;你的博客首页能展示那些炫酷的幻灯片置顶文章、还有各种精心策划的专题列表&#xff0c;这些内容模块的设计简直吸睛了&#xff0c;能让来访的用户眼前一亮…

JAVA集中学习第四周学习记录(三)

系列文章目录 第一章 JAVA集中学习第一周学习记录(一) 第二章 JAVA集中学习第一周项目实践 第三章 JAVA集中学习第一周学习记录(二) 第四章 JAVA集中学习第一周课后习题 第五章 JAVA集中学习第二周学习记录(一) 第六章 JAVA集中学习第二周项目实践 第七章 JAVA集中学习第二周学…

SSL VPN综合实验

一、实验目的及拓扑 实验目的&#xff1a;构建企业内网和企业分支站点&#xff0c;其中企业内网通过防火墙实现双机热备并且与企业分支固定站点实现站点到站点IPsec VPN互联&#xff0c;与企业分支移动站点实现SSL VPN互联&#xff0c;企业内网各主机可以实现对分支站点内网的…

可观测性(observability)

一、定义 wiki百科的定义 In software engineering, more specifically in distributed computing, observability is the ability to collect data about programs’ execution, modules’ internal states, and the communication among components.[1][2] To improve obser…

8月最新ChatGPT系统源码SparkAi系统,支持AI换脸+智能体GPTs应用+AI绘画+AI视频+文档分析

一、文章序言 人工智能技术正在快速发展&#xff0c;AI语言模型、AI绘画和AI视频已经在多个领域得到了广泛应用。这些技术不仅在科技创新方面表现出色&#xff0c;还在艺术创作、内容生产和商业应用中展示出巨大的潜力。 SparkAi创作系统是一款基于ChatGPT和Midjourney开发的…

矩阵乘法的结合律的证明

矩阵的乘法在矩阵运算中相较于加法更加复杂&#xff0c;对矩阵乘法的运算律的证明也更复杂&#xff0c;但其中对结合律的证明是最难的&#xff0c;因为它涉及到3个矩阵的相乘。本证明不同于其他一些比较粗浅的用方阵去证明或者用三个含很少元素的简单矩阵做一个例证&#xff0c…

App渗透测试(工具使用)

Python工具 在文件中打开终端&#xff0c;执行如下命令进行装库。 python3 -m pip install -r txt文件 执行如下命令扫描 python3 .py -i apk文件

Docker最佳实践(七):安装MinIO文件服务器

大家好&#xff0c;欢迎各位工友。 Minio是一个开源免费的高性能对象存储服务器&#xff0c;专为大规模数据集和高并发访问而设计。它具有出色的读写性能和低延迟&#xff0c;可以满足对数据速度和效率要求较高的应用场景。本篇呢我们就来演示一下如何在Docker中搭建Minio容器&…

MySQL数据库基础:约束

&#x1f48e;我的主页&#xff1a;MySQL &#x1f48e;1. 约束的概述 约束是作用于表中字段的规则&#xff0c;用于限制存储在表中的数据 目的&#xff1a;保证数据库中数据的正确性&#xff0c;有效性和完整性 &#x1f48e;2. 约束的分类 &#x1f48e;2.1 非空约束 非空…