首页 > 其他分享 >vue实现的常见的动画效果

vue实现的常见的动画效果

时间:2023-04-21 10:59:29浏览次数:79  
标签:动画 vue 常见 zoom transform leave slide enter ivy

本文包括的动画:

  • zoom-in
    • zoom-in-left
    • zoom-in-right
    • zoom-in-top
    • zoom-in-bottom
    • zoom-in-center-x
    • zoom-in-center-y
  • slide
    • slide-left
    • slide-right
    • slide-top
    • slide-bottom

zoom-in-left

.ivy-zoom-in-left-enter-active,
.ivy-zoom-in-left-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-left-enter-from,
.ivy-zoom-in-left-leave-to {
    transform-origin: top left;
    opacity: 0;
    transform: scaleX(0.5);
}

.ivy-zoom-in-left-enter-to,
.ivy-zoom-in-left-leave-from {
    transform-origin: top left;
    opacity: 1;
    transform: scaleX(1);
}

zoom-in-right

.ivy-zoom-in-right-enter-active,
.ivy-zoom-in-right-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-right-enter-from,
.ivy-zoom-in-right-leave-to {
    transform-origin: top right;
    opacity: 0;
    transform: scaleX(0.5);
}

.ivy-zoom-in-right-enter-to,
.ivy-zoom-in-right-leave-from {
    transform-origin: top right;
    opacity: 1;
    transform: scaleX(1);
}

zoom-in-top

.ivy-zoom-in-top-enter-active,
.ivy-zoom-in-top-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-top-enter-from,
.ivy-zoom-in-top-leave-to {
    transform-origin: top left;
    opacity: 0;
    transform: scaleY(0.5);
}

.ivy-zoom-in-top-enter-to,
.ivy-zoom-in-top-leave-from {
    transform-origin: top left;
    opacity: 1;
    transform: scaleY(1);
}

zoom-in-bottom

.ivy-zoom-in-bottom-enter-active,
.ivy-zoom-in-bottom-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-bottom-enter-from,
.ivy-zoom-in-bottom-leave-to {
    transform-origin: bottom left;
    opacity: 0;
    transform: scaleY(0.5);
}

.ivy-zoom-in-bottom-enter-to,
.ivy-zoom-in-bottom-leave-from {
    transform-origin: bottom left;
    opacity: 1;
    transform: scaleY(1);
}

zoom-in-center-x

.ivy-zoom-in-center-x-enter-active,
.ivy-zoom-in-center-x-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-center-x-enter-from,
.ivy-zoom-in-center-x-leave-to {
    transform-origin: center center;
    opacity: 0;
    transform: scaleY(0);
}

.ivy-zoom-in-center-x-enter-to,
.ivy-zoom-in-center-x-leave-from {
    transform-origin: center center;
    opacity: 1;
    transform: scaleY(1);
}

zoom-in-center-y

.ivy-zoom-in-center-y-enter-active,
.ivy-zoom-in-center-y-leave-active {
    transition: all 0.3s ease;
}

.ivy-zoom-in-center-y-enter-from,
.ivy-zoom-in-center-y-leave-to {
    transform-origin: center center;
    opacity: 0;
    transform: scaleX(0);
}

.ivy-zoom-in-center-y-enter-to,
.ivy-zoom-in-center-y-leave-from {
    transform-origin: center center;
    opacity: 1;
    transform: scaleX(1);
}

slide-left

.ivy-slide-left-enter-active,
.ivy-slide-left-leave-active {
    transition: all 0.3s ease;
}

.ivy-slide-left-enter-from,
.ivy-slide-left-leave-to {
    transform-origin: top left;
    opacity: 0;
    transform: translateX(-80%);
}

.ivy-slide-left-enter-to,
.ivy-slide-left-leave-from {
    transform-origin: top left;
    opacity: 1;
    transform: translateX(0);
}

slide-right

.ivy-slide-right-enter-active,
.ivy-slide-right-leave-active {
    transition: all 0.3s ease;
}

.ivy-slide-right-enter-from,
.ivy-slide-right-leave-to {
    transform-origin: top right;
    opacity: 0;
    transform: translateX(80%);
}

.ivy-slide-right-enter-to,
.ivy-slide-right-leave-from {
    transform-origin: top right;
    opacity: 1;
    transform: translateX(0);
}

slide-top

.ivy-slide-top-enter-active,
.ivy-slide-top-leave-active {
    transition: all 0.3s ease;
}

.ivy-slide-top-enter-from,
.ivy-slide-top-leave-to {
    transform-origin: top left;
    opacity: 0;
    transform: translateY(-100%);
}

.ivy-slide-top-enter-to,
.ivy-slide-top-leave-from {
    transform-origin: top left;
    opacity: 1;
    transform: translateY(0);
}

slide-bottom

.ivy-slide-bottom-enter-active,
.ivy-slide-bottom-leave-active {
    transition: all 0.3s ease;
}

.ivy-slide-bottom-enter-from,
.ivy-slide-bottom-leave-to {
    transform-origin: bottom left;
    opacity: 0;
    transform: translateY(100%);
}

.ivy-slide-bottom-enter-to,
.ivy-slide-bottom-leave-from {
    transform-origin: bottom left;
    opacity: 1;
    transform: translateY(0);
}

在vue中使用

<template>
    <transition name="ivy-slide-bottom">
        <div v-show="visible"></div>
    </transition>
</template>
<script setup>
import { ref } from "vue";
const visible = ref(false);
</script>
<style>
.ivy-slide-bottom-enter-active,
.ivy-slide-bottom-leave-active {
    transition: all 0.3s ease;
}

.ivy-slide-bottom-enter-from,
.ivy-slide-bottom-leave-to {
    transform-origin: bottom left;
    opacity: 0;
    transform: translateY(100%);
}

.ivy-slide-bottom-enter-to,
.ivy-slide-bottom-leave-from {
    transform-origin: bottom left;
    opacity: 1;
    transform: translateY(0);
}
</style>

查看动画演示

标签:动画,vue,常见,zoom,transform,leave,slide,enter,ivy
From: https://www.cnblogs.com/guojikun/p/17339534.html

相关文章

  • vue3打包后一片空白控制台报错
    问题原因是路径不对,加上一行代码就可完美解决问题。在vue.config文件中加上  publicPath:'./' 即可解决问题。问题如图所示: 如何解决问题呢?     ......
  • Vue&Element-Ui(支技VUE2)&解决ttf, woff 文件报错的问题
    一、Vue&Element-Ui(支技VUE2)Vue是一套用于构建用户界面的渐进式JavaScript(主张最少)框架,开发者只需要关注视图层,它不仅易于上手,还便于与第三方库或既有项目的整合。是基于MVVM(Model-View-ViewModel即:视图层-视图模型层-模型层)设计思想。提供MVVM数据双向绑定的库,专注于UI......
  • vue3 源码
     这文章写的很好 Compiler模块:编译模板系统。主要职责是将template编译成虚拟节点。Runtime模块:也可以称之为Renderer模块,真正负责渲染的模块。主要职责是将虚拟节点渲染成真实元素,然后显示到浏览器上。Reactivity模块:响应式系统。主要职责是监听响应式的数据,然后通过di......
  • SQL JOIN的常见连接算法(转载)
    原文:https://zhuanlan.zhihu.com/p/495442432在数据库和大数据领域,通过SQL中的JOIN连接将两个及两个以上的表(或中间表、视图、物化视图)中的数据按指定的连接条件关联起来,是很常用也很方便的操作。我们前面学习了JOIN有多种常见连接方式如内连接INNERJOIN、左外连接LEFTJOIN等......
  • vue全家桶进阶之路47:Vue3 Axios拦截器封装成request文件
    可以将Axios拦截器封装成一个单独的request文件,以便在整个应用程序中重复使用。以下是一个示例,展示如何将Axios拦截器封装成一个request文件:1、创建一个名为request.js的新文件,并导入Axios:importaxiosfrom'axios';2、创建一个名为request的函数,并将其导出:这将创建一个名......
  • vue中的ref 和 reactive--今天学了啥 23/3/12
     这两者都是默认deepreactive,不同的是reactive使用es6的proxy,只能使对象reactive。ref不仅支持对象还支持基本数组,不能说ref是reactive的超集,因为这两者返回的类型就不一样。 Reftype:functionref<T>(value:T):Ref<UnwrapRef<T>>interfaceRef<T>{value:T}如......
  • 关于vue3中Scope slot实战中使用
    今天学了啥-23/03/28 vue提供slot机制让组件可以接收模板片段,来渲染模板片段。比如最常见的button组件,基本是如下这样使用。<FancyButton>Clickme!<!--插槽内容--></FancyButton>FancyButton组件则是这样:<buttonclass="fancy-btn"><slot></slot><!--插......
  • vue全家桶进阶之路46:Vue3 Axios拦截器和globalProperties全局设置
    在Vue.js3中,使用Axios与Vue.js2.x中类似,但是需要进行一些修改和更新,下面是Vue.js3中Axios的定义和使用方式:首先,你需要安装Axios和Vue.js3.x,可以使用npm或yarn等包管理工具安装:npminstallaxiosvue@next然后,在你的Vue.js3应用程序中,你可以使用以下代码来导入和使用Axio......
  • MySQL 中常见的几种高可用架构部署方案
    MySQL中的集群部署方案前言MySQLReplicationInnoDBClusterInnoDBClusterSetInnoDBReplicaSetMMMMHAGaleraClusterMySQLClusterMySQLFabric参考MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication是......
  • udp编程及udp常见问题处理
    前言UDP协议是UserDatagramProtocol的缩写,它是无连接,不可靠的网络协议。一般使用它进行实时性数据的传输,主要是因为它快,但因为它是不可靠的一种传输协议,所以不可避免的会出现丢包现象。本文就具体讨论导致UDP传输数据包丢失的原因以及一些基本的规避方法:路由器转发造成的数据......