Vue封装的过渡与动画

news2024/11/23 10:51:05

vscode中迅速创建Vue快捷键输入vue回车键即可

 

 

动画效果

如果在<transition name="hello"></transition>标签添加name属性,那么css属性名生效就得这样写.hello-enter-active和.hello-leave-active,没有name属性就直接.v-enter-active和.v-leave-active

src/App.vue

<template>
    <div>
        <Test/>
    </div>
</template>

<script>
import Test from './components/Test.vue'

export default {
    name: 'App',
    components: { Test }
}
</script>


src/components/Test.vue

<template>
    <div>
        <button @click="isShow = !isShow">显示/隐藏</button>
        <transition name="hello" appear>
            <h1 v-show="isShow">你好啊!</h1>
        </transition>
    </div>
</template>

<script>
export default {
    name: 'Test',
    data() {
        return{
            isShow: true
        }
    }
}
</script>
<style scoped>
h1 {
    background-color: orange;
}

.hello-enter-active {
    animation: atguigu 1s linear;
}

.hello-leave-active {
    animation: atguigu 1s linear reverse;
}

@keyframes atguigu {
    from {
        transform: translateX(-100%);
    }

    to {
        transform: translateX(0px);
    }
}
</style>

src/main.js

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

//创建vm
new Vue({
    el: '#app',
    render: h => h(App),
    beforeCreate(){
        Vue.prototype.$bus=this //安装全局事件总线
    }
})

 

过渡效果

src/components/Test2.vue

<template>
    <div>
        <button @click="isShow = !isShow">显示/隐藏</button>
        <transition name="hello" appear>
            <h1 v-show="isShow">你好啊!</h1>
        </transition>
    </div>
</template>

<script>
export default {
    name: 'Test2',
    data() {
        return{
            isShow: true
        }
    }
}
</script>
<style scoped>
h1 {
    background-color: orange;
}

/* 进入起点,离开终点 */
.hello-enter,.hello-leave-to{
    transform: translateX(-100%);
}

.hello-enter-active,.hello-leave-active{
    transition: 1s linear;
}

/* 进入终点,离开起点 */
.hello-enter-to,.hello-leave{
    transform: translateX(0);
}
</style>

src/App.vue

<template>
    <div>
        <Test/>
        <Test2/>
    </div>
</template>

<script>
import Test from './components/Test.vue'
import Test2 from './components/Test2.vue'

export default {
    name: 'App',
    components: { Test,Test2 }
}
</script>


 

<transition></transition>标签只能使用单一过渡,多个过渡必须使用<transition-group></transition-group>,而且children必须添加key属性

<template>
    <div>
        <button @click="isShow = !isShow">显示/隐藏</button>
        <transition-group name="hello" appear>
            <h1 v-show="!isShow" key="1">你好啊!</h1>
            <h1 v-show="isShow" key="2">黑马</h1>
        </transition-group>
    </div>
</template>

 

集成第三方动画

npm install animate.css

Animate.css | A cross-browser library of CSS animations.

src/components/Test3.vue 

<template>
    <div>
        <button @click="isShow = !isShow">显示/隐藏</button>
        <transition-group 
            name="animate__animated animate__bounce" 
            appear
            enter-active-class="animate__swing"
            leave-active-class="animate__backOutUp"
        >
            <h1 v-show="!isShow" key="1">你好啊!</h1>
            <h1 v-show="isShow" key="2">黑马</h1>
        </transition-group>
    </div>
</template>

<script>
import 'animate.css'
export default {
    name: 'Test3',
    data() {
        return{
            isShow: true
        }
    }
}
</script>
<style scoped>
h1 {
    background-color: orange;
}

</style>

注意点:import 'animate.css'和 enter-active-class和 leave-active-class

 

之前Todo-List添加过渡与动画在MyList.vue

(162条消息) Todo-List案例版本五_bubbleJessica的博客-CSDN博客

<template>
    <ul class="todo-main">
        <transition-group name="todo"appear>
            <MyItem
             v-for="todoObj in todos" 
             :key="todoObj.id" 
             :todo="todoObj" 
        />
        </transition-group>
        
    </ul>
</template>

<script>
import MyItem from './MyItem.vue'

export default {
    name: 'MyList',
    props:['todos'],
    components: { MyItem }
}
</script>

<style scoped>
/*main*/
.todo-main {
    margin-left: 0px;
    border: 1px solid #ddd;
    border-radius: 2px;
    padding: 0px;
}

.todo-empty {
    height: 40px;
    line-height: 40px;
    border: 1px solid #ddd;
    border-radius: 2px;
    padding-left: 5px;
    margin-top: 10px;
}

.todo-enter-active {
    animation: atguigu 1s linear;
}

.todo-leave-active {
    animation: atguigu 1s linear reverse;
}

@keyframes atguigu {
    from {
        transform: translateX(100%);
    }

    to {
        transform: translateX(0px);
    }
}
</style>

 

 

 

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

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

相关文章

Mac搭建安卓模拟器(支持M1/M2)

引言 最近在研究Vue打包成app&#xff0c;给我的报价器搞一个移动端&#xff0c;奈何没有安卓手机用于测试。所以想到安装一个安卓模拟器。 看了下目前主流的安卓模拟器基本都不支持Mac版本。网易的mumu目前来看还是只支持Intel芯。 1. 简单版&#xff08;仅M系&#xff09;…

3. CSS三角

网页中常见的一些三角形, 使用CSS直接画出来就可以, 不必做成图片或者字体图标。 CSS三角做法代码: div {width: 0;height: 0;/* 兼顾兼容性 line-height: 0;font-size: 0; */border: 50px solid transparent;border-left-color: pink; }

【Linux】初步理解操作系统和进程概念

一.认识操作系统 操作系统是一款纯正的 “搞管理” 的文件。 那操作系统为什么要管理文件&#xff1f; “管理” 又是什么&#xff1f; 它是怎么管理的&#xff1f; 为什么&#xff1f; 1.操作系统帮助用户&#xff0c;管理好底层的软硬件资源&#xff1b; 2.为了给用户提供一个…

搞清楚@RequestBody和@RequestParam的异同,让你的面试不再被问倒!

大家好&#xff0c;我是小米。今天我要给大家分享一个常见的面试题&#xff1a;“RequestBody和RequestParam之间有什么区别&#xff1f;”这个问题在Java Web开发中非常常见&#xff0c;对于初学者来说可能会有些混淆。那么&#xff0c;让我们一起来揭开这个谜团&#xff0c;深…

浅谈变配电监控系统在某火车站中的应用

安科瑞 华楠 摘要&#xff1a;现代变配电监控系统是利用计算机控制技术、通信技术和网络技术等&#xff0c;对智能变配电设备进行数字化信息采集、处理和传输&#xff0c;从而实现对变配电系统高、低压电气设备的远程监控管理&#xff0c;达到配电室的少人或无人值守的目的&am…

【报错】jar包丢失以及project标签报错解决方案

报错&#xff1a; “dependencies.dependency.version for org.springframework.boot:spring-boot-starter-web:jar is missing” “标记名称: project 描述 : The <project> element is the root of the descriptor. The following table lists all of the possible c…

剑指offer(C++)-JZ41:数据流中的中位数(算法-排序)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 如何得到一个数据流中的中位数&#xff1f;如果从数据流中读出奇数个数值&#xff0c;那么中位数就是所有…

scrapy

scrapy介绍安装--架构 Scrapy 是一个爬虫框架&#xff08;底层代码封装好了&#xff0c;只需要在固定位置写固定代码即可&#xff09;&#xff0c;应用领域比较广泛---》爬虫界的django# 安装 #Windows平台1、pip3 install wheel #安装后&#xff0c;便支持通过wheel文件安装软…

Java的强引用和弱引用

介绍 强引用&#xff1a;引用的对象不会被Java虚拟机强制回收。平时绝大部分对象引用是强引用。 弱引用&#xff1a;在垃圾回收时&#xff0c;弱引用的对象会被Java虚拟机强制回收。 Java API中关于几种引用的类&#xff1a; https://docs.oracle.com/en/java/javase/19/docs…

【JavaSE】- 异常处理

异常处理 1.1异常概念1.2 编译异常1.3 异常处理的方式2.1 try-catch2.2 throws2.3 throw(自定义异常) 1.1异常概念 常见的运行时异常包括 NullPointerException 空指针异常 String name null;System.out.println(name. Length());ArithmeticException 数学运算异常 int num1 …

python_pyqtgraph折线图工具协助分析数据

目录 写在前面&#xff1a; 结果显示 代码实现 导入包、字符串横坐标控件 单边折线图控件 主界面 使用过程 写在前面&#xff1a; 本文开发的工具主要是在平时事务处理中需要查看多列数据差异很大的数据&#xff0c;需要横向对比纵向对比&#xff0c;并且要能及时感知数…

Linux和Shell笔记-1相关概念理解

Unix和Linux关系 UNIX是最早的商业操作系统之一&#xff0c;由贝尔实验室&#xff08;AT&T Bell Laboratories&#xff09;于 1970 年代开发。UNIX 是一个多用户、多任务的操作系统&#xff0c;具有强大的命令行界面和可扩展性。 Linux 是一个开放源代码的类 UNIX 操作系统…

屏蔽表面电阻试验仪

一、产品概述 KDZD608A屏蔽服效率测试装置是对屏蔽服进行屏蔽效率测试的专业设备&#xff0c;用于电力系统、生产厂家、科研单位等。 KDZD608A屏蔽服效率测试装置根据国家标准GB/T 6568-2008《带电作业用屏蔽服装》要求而设计&#xff0c;再结合电力行业标准DLT 976-201…

二、RocketMQ消息存储源码分析

RocketMQ源码深入剖析 6 Broker源码分析 Broker模块涉及到的内容非常多&#xff0c;本课程重点讲解以下技术点&#xff1a; 1、Broker启动流程分析 2、消息存储设计 3、消息写入流程 4、亮点分析&#xff1a;NRS与NRC的功能号设计 5、亮点分析&#xff1a;同步双写数倍性…

视频孪生赋能智慧水利数智化管理

在《关于大力推进智慧水利建设的指导意见》、《“十四五”智慧水利建设规划》中&#xff0c;水利部明确智慧水利建设目标&#xff1a;到2025年建成七大江河数字孪生流域&#xff0c;即&#xff1a; 到2025年&#xff0c;通过建设数字孪生流域、“2N”水利智能业务应用体系、水…

编程会不会被中英文转换干扰?

目录 引言&#xff1a; 解决办法&#xff1a; 图片&#xff1a; 引言&#xff1a; 我在编程的时候总是容易误触&#xff53;&#xff48;&#xff49;&#xff46;&#xff54;&#xff0c;导致代码编译错误&#xff0c;我都不知道哪里出了问题&#xff0c;每次基本要重…

2023志愿填报区块链专业

随着区块链技术的迅速发展&#xff0c;区块链专业毕业生在就业市场上拥有广阔的前景。他们可以在多个领域找到就业机会&#xff0c;从而实现职业发展和稳定的薪资待遇。 首先&#xff0c;金融行业是区块链专业毕业生的主要就业领域之一。银行、证券公司和支付机构等金融机构对…

【Lesson 02】 TiDB Server

目录 0 章节目标 一 TiDB Server架构 二 TiDB Server 作用​ 三 TiDB Server 的进程 1 SQL语句的解析和编译 2 SQL读写相关模块 3 在线DDL相关模块 4 GC机制与相关模块 四 TiDB Server的缓存 1 TIDB的缓存组成 2 TiDB 缓存管理 3 热点小表缓存 4 热点小表缓存-原理 0…

node基于express+mongodb项目的整体结构搭建和逻辑抽离

一、为什么需要逻辑抽离 这是我用express实现的一个缩减版的注册功能,如下&#xff1a; app.js const express require("express"); const app express();// 连接数据库 const mongoose require("mongoose"); // 连接数据库myTest mongoose.connect(…

python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)

简介 上一篇已经给大家都介绍过了流程类接口关联&#xff0c;但是由于博客的登录机制改变&#xff0c;所以没有办法给小伙伴们实战演练一下&#xff0c;那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用&#xff0c;其实很简单&#xff0c;就是…