【Vue项目实战】Vue3动画神操作!教你如何实现PPT一样的动画效果!

2023-11-18


前言

最近写界面的时候,发现一个前端组件很好玩

他就是鼎鼎大名的Animate.css ← 点 击 跳 转 官 网

这篇主要详细介绍 Animate.css 的使用,还有一些简单实用的前端动画制作


提示:以下是本篇文章正文内容,下面案例可供参考,部分内容翻译于官网

一、Animate.css是什么?

提示:这边简短的介绍一下Animate.css

Animate.css是一个前端样式拆箱即用的库,跨浏览器动画可用于你的构建你的前端项目

非常适合用来强调一些信息,比如一些主页、滑块和引导提示

二、安装和使用

1.安装

使用 npm 进行安装,命令如下:

npm install animate.css --save

使用 yarn 进行安装,命令如下:

yarn add animate.css

导入到要使用的页面中,代码如下:

import 'animate.css';

使用cdn引入如下:

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
  />
</head>

2.基本用法

安装完成后,添加 animate__animated 到H5元素的class里面,然后追加前缀和动画名字,代码如下:

//这边演示的是bounce(弹)动画
<h1 class="animate__animated animate__bounce">一个动画元素</h1>

3.JavaScript用法

因为下边示例中会使用到此用法,这边展示并说明一下这个用法,代码如下:

//这边定义一个animateCSS方法
//第一个参数element为传入的H5元素对象
//第二个参数是对应的动画名称
//第三个参数可以不用传,默认参数即可
const animateCSS = (element, animation, prefix = 'animate__') =>
  //这边创建了一个Promise,用来执行动画
  new Promise((resolve, reject) => {
  	//给动画名加上前缀
    const animationName = `${prefix}${animation}`
    //获取H5元素节点
    const node = document.querySelector(element)
    
	//对元素节点添加class
    node.classList.add(`${prefix}animated`, animationName)

    //这边用来监听当动画运行完毕时,删除对应元素的class值
    function handleAnimationEnd(event) {
      event.stopPropagation()
      node.classList.remove(`${prefix}animated`, animationName)
      resolve('Animation ended')
    }
	
	//元素节点添加动画结束监听器
    node.addEventListener('animationend', handleAnimationEnd, {once: true})
  })

Animate.css使用说明到这边,其他详细用法请至官网查看


三、动画制作

1.弹入动画

左弹入动画,如下图演示:

在这里插入图片描述

这边图片使用Vite的标志图片演示动画

左弹入的动画名字是 【 bounceInLeft 】,相关代码如下:

以下代码在Vue3中实现,采用setup语法糖编写

<template>
  <div class="home" ref="home">
  	//这个图片你可以用任何无底图的png格式的图片代替
    <img class="vite" ref="vite" src="@/assets/vite.png">
  </div>
</template>
<script setup>
import {onMounted, ref} from 'vue';
//在utils文件夹中创建index.js文件里export上面的animateCSS方法
import {animateCSS} from '@/utils';
//延迟时间(毫秒),这边测试动画播放完的衔接时间间隔最好是1100毫秒
const timeout = 1100,
	vite = ref(),
	//动画方法
    viteAnime = () => {
      //传入img元素对象和动画名字
      animateCSS(vite.value, 'bounceInLeft')
      vite.value.style.display = 'block'
      //TODO 这边会补充上、右和下面的弹入动画实现代码
    }
onMounted(() => {
  viteAnime()
})
</script>
<style scope>
* {
  margin: 0;
  padding: 0;
}

img {
  display: none;
}

body {
  overflow: hidden;
  justify-content: center;
}

.home {
  background-color: #000;
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.vite {
  width: 50%;
}
</style>

这边要实现【动画衔接播放

就是第一个左弹入的动画播放完,再播放下弹入(从上往下弹入)

代码【TODO】地方填写代码如下:

	  //设一个延迟触发器
      setTimeout(() => {
      	//要先设置隐藏
        vite.value.style.display = 'none'
        animateCSS(vite.value, 'bounceInDown')
        //开始播放动画就显示
        vite.value.style.display = 'block'
      }, timeout)

页面动画效果如下:

在这里插入图片描述
接下来我们要实现完整的动画效果

就是实现左、下、右和上四个方向弹入的动画

这边代码是 【viteAnime 方法】的所有内容,如下:

	viteAnime = () => {
	  //第一次播放动画,左弹入(由左向右弹入)
      animateCSS(vite.value, 'bounceInLeft')
      vite.value.style.display = 'block'
      //第二次播放动画,下弹入(由上往下弹入)
      setTimeout(() => {
        vite.value.style.display = 'none'
        animateCSS(vite.value, 'bounceInDown')
        vite.value.style.display = 'block'
      }, timeout)
      //第三次播放动画,右弹入(由右向左弹入)
      setTimeout(() => {
        vite.value.style.display = 'none'
        animateCSS(vite.value, 'bounceInRight')
        vite.value.style.display = 'block'
      }, timeout * 2)
      //第四次播放动画,上后入(从后边上来然后往前)
      //这边最后一次改用上后入比较有结束的感觉
      setTimeout(() => {
        vite.value.style.display = 'none'
        //backInUp是上后入动画的动画名字
        animateCSS(vite.value, 'backInUp')
        vite.value.style.display = 'block'
      }, timeout * 3)
      //最后一次上后入之后,配合后入动画,来个心跳做个完美Ending
      setTimeout(() => {
        vite.value.style.display = 'none'
        //heartBeat是心跳动画的动画名字
        animateCSS(vite.value, 'heartBeat')
        vite.value.style.display = 'block'
      }, timeout * 4)
    },

接下来演示的是最后完成的动画效果:
在这里插入图片描述

是不是感觉还不错呀,嘻嘻 (♥◠‿◠)ノ


总结

这篇简单教学了如何使用Animate.css的简单功能使用

下一篇会延续本篇前端动画实现教学,将会有部分简单@keyframes动画教学

也会将本篇代码上传到Github进行公开

敬请期待


在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Vue项目实战】Vue3动画神操作!教你如何实现PPT一样的动画效果! 的相关文章

随机推荐

  • 其他需要整理

    1 Kinect OpenNI学习笔记之6 获取人体骨架并在Qt中显示 http www cnblogs com tornadomeet archive 2012 10 03 2710737 html
  • 人脸识别产品相关知识整理

    引言 这个文章是我18年初整理的一个基础人脸识别产品知识 人脸识别规范 标准和白皮书 我在工标网站上找到了公安部的 GA T 1093 2013 出入口控制人脸识别系统技术要求 和 GA T 1126 2013 近红外人脸识别设备技术要求
  • 理解Java的IO 流

    按照流的流向来分 可以分为输入流和输出流 输入流 只能从中读取数据 而不能向其中写数据 输出流 只能向其写出数据 而不能从中读取数据 对于上面的左图来说 数据从内存到硬盘 通常我们称为输出流 也就是说 这里的输出 都是从程序运行所在的内存角
  • hive中如何取到每个顾客最新交易

    hive e use db select t advertId t exposureNum from select advertId exposureNum ROW NUMBER OVER PARTITION BY advertId ORD
  • 《计算机网络》——第四章知识点

    第四章思维导图如下 网络层向上只提供灵活的 无连接的 尽最大努力交付的数据报服务 主要任务是把分组 IP数据报 从通过路由选择与转发从源端传到目的端 为分组交换网上的不同主机提供通信服务 互联网可以由多种异构网络互连组成 IP数据包格式 I
  • 【突变检验方法二】MATLAB实现贝叶斯突变检测

    MATLAB实现贝叶斯突变检测 1 贝叶斯突变检测 2 原理 3 MATLAB相关代码 3 1 调用函数 3 2 案例 参考 另 其它语言实现贝叶斯突变检测 1 贝叶斯突变检测 贝叶斯突变检测属于概率突变检测方法 其特点是能给出突变点的概率
  • json数据如何存入到cookie中,如何获取

    1 引入相对应的cookie js插件如下 例如 button click function var username input name username val var password input name password val
  • scrapy爬虫爬取多网页内容

    摘要 此案例是爬取目标网站 https tipdm com 的新闻中心板块的公司新闻中所有新闻的标题 发布时间 访问量和新闻的文本内容 1 创建scrapy项目 我使用的是 Anaconda prompt 我们使用如下命令创建scrapy项
  • 视线估计、凝视目标估计相关评价指标

    1 TP TN FP FN qquad T F表示待分类目标的GT值 qquad P N表示预测到目标的正反例 在目标检测类任务中 qquad TP 表示正确检测到待检测目标
  • vcruntime140_1.dll丢失怎么办?vcruntime140_1.dll丢失最新解决方法

    如果您在使用某些软件或游戏时遇到了 vcruntime140 1 dll丢失 的错误提示 那么您需要采取一些措施来解决这个问题 以下三种解决方案都能解决vcruntime140 1 dll丢失问题 第一种解决方法 直接使用dll修复程序进行
  • C语言 mktime() gmtime()实现——亲测正确性

    前言 写此文章是因为有的嵌入式设备编程时不支持
  • node_modules安装及卸载

    1 安装 npm install 安装tb镜像 npm install g cnpm registry https registry npm taobao org 2 卸载 1 npm install rimraf g 2 rimraf n
  • Vue3 + Element-UI 搭建一个后台管理系统框架模板

    概述 本文将介绍如何基于Vue3和element ui搭建一个后台管理系统框架模板 我们将详细讲解代码流程 并提供详细的说明 技术栈 Vue3 Element ui Axios 前置知识 本文假设读者已经熟悉Vue3和Element ui的
  • Bootstrap插件(六)——警告框(alert.js)

    bootstrap中的alert和原本的alert弹框可不太一样 原来我们熟悉的弹框是在执行某个动作的时候 浏览器和我们弹出来的一个提示框 比如下面这样 而我们这里的警告框是在html内容之间的提示内容 只是他有着醒目的颜色 以此来达到提醒
  • h5标签上实现文字空格

    在vue项目中实现文字之间的空格 div class top p class groupLeader 组 xa0 xa0 xa0 长 span xxx span p p class standingGroupLeader 副组长 span
  • [YOLO专题-23]:YOLO V5 - ultralytics代码解析-网络子结构详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122369993 目录 第1章 网络总
  • [QT编程系列-2]:C++图形用户界面编程,QT框架快速入门培训 - 1- 预备知识

    目录 概述 1 前置条件 1 1 C 1 2 图形界面 1 3 图形程序集成开发环境 1 4 图形程序开发框架 1 5 跨平台特性 1 6 QT快速感知 1 6 1 QT的典型应用 1 6 2 QT的特点 1 6 3 QT跨平台集成开发环境
  • Qt QProcess

    目录 概述 实 现 一 函数接口 二 执行命令 三 管 道 概述 本文介绍 在Linux环境下 使用Qt中的QProcess类执行shell命令并获取输出 头文件 include
  • 区块链数字签名详解

    有一点比较难以理解的答案就是 私钥加密公钥可以解密 公钥加密私钥可以解密 RSA的原理 两个大质数 p q 乘积 n 难以逆向求解 所以pq是对等的 公钥和私钥也是对等的 区块链 从数字货币到信用社会 读书笔记 这张图来自于新生大学的周兵
  • 【Vue项目实战】Vue3动画神操作!教你如何实现PPT一样的动画效果!

    文章目录 前言 一 Animate css是什么 二 安装和使用 1 安装 2 基本用法 3 JavaScript用法 三 动画制作 1 弹入动画 总结 前言 最近写界面的时候 发现一个前端组件很好玩 他就是鼎鼎大名的 Animate cs