Vue中transition标签的基本使用教程

目录
  • transition 标签
    • 配合 animation
    • 配合 transition
  • transition-group 标签
  • 动画库 animate.css
  • 总结

transition 标签

transition 标签:Vue 的内置动画标签

作用:在 [插入] / [更新] / [移除] DOM 元素时,在合适的时候给元素添加样式类名(配合 CSS 样式使用,实现动画效果)

注意事项

transition 标签只能包含 1 个元素;如果里面写了多个元素,则只生效第一个

transition 包裹的标签需要设置 v-show / v-if 属性控制元素的显示

动画 CSS 样式对应的类名

进入:.v-enter 始状态、.v-enter-to 末状态、.v-enter-active 进入动画(Vue2)

离开:.v-leave 始状态、.v-leave-to 末状态、.v-leave-active 离开动画(Vue2)

进入:.v-enter-from 始状态、.v-enter-to 末状态、.v-enter-active 进入动画(Vue3)

离开:.v-leave-from 始状态、.v-leave-to 末状态、.v-leave-active 离开动画(Vue3)

配合 animation

<template>
    <div>
        <button @click="bol = !bol">隐藏/显示</button>
        <!-- Vue 的内置动画标签 transition -->
        <transition>
            <!-- 只能包含 1 个元素 -->
            <h1 v-show="bol">组件动画效果</h1>
            <!-- 需要设置 v-show / v-if 属性控制元素的显示 -->
        </transition>
    </div>
</template>

<script>
export default {
    name: "App",
    data() {
        return { bol: true };
    },
};
</script>

<style>
/* 进入动画 */
.v-enter-active {
    animation: move 1s;
}

/* 离开动画 */
.v-leave-active {
    animation: move 1s reverse;
}

@keyframes move {
    from {
        transform: translateX(-100%);
    }
    to {
        transform: translate(0);
    }
}
</style>

transition 标签的属性

1、name 属性:用于自动生成 CSS 动画类名

如果 transition 标签元素没有设置 name 属性,则对应的动画类名为 v-XXX

如果设置了 name 属性,则对应的动画类名为 属性值-XXX

2、appear 属性:一开始就生效显示动画

<template>
    <div>
        <button @click="bol = !bol">隐藏/显示</button>
        <!-- transition 标签元素设置了 name、appear 属性 -->
        <transition name="moveCartoon" appear>
            <!-- 动画会在一开始便生效 -->
            <h1 v-show="bol">组件动画效果</h1>
        </transition>
    </div>
</template>

<script>
export default {
    name: "App",
    data() {
        return { bol: true };
    },
};
</script>

<style>
/* 类名要对应回 name 的属性值 */
.moveCartoon-enter-active {
    animation: move 1s;
}
.moveCartoon-leave-active {
    animation: move 1s reverse;
}

@keyframes move {
    from {
        transform: translateX(-100%);
    }
    to {
        transform: translate(0);
    }
}
</style>

当存在多个 tansition 标签时,我们可以通过 name 属性给各个 transition 标签指定不同的 CSS 动画效果

配合 transition

<template>
    <div id="app">
        <button @click="bol = !bol">隐藏/显示</button>
        <transition appear>
            <h1 v-show="bol">组件动画</h1>
        </transition>
    </div>
</template>

<script>
export default {
    name: "App",
    data() {
        return { bol: true };
    },
};
</script>

<style>
/* 进入:始状态 */
.v-enter {
    transform: translateX(-100%);
}
/* 进入:末状态 */
.v-enter-to {
    transform: translateX(0);
}
/* 进入动画 */
.v-enter-active {
    transition: 1s;
}

/* 离开:始状态 */
.v-leave {
    transform: translateX(0);
}
/* 离开:末状态 */
.v-leave-to {
    transform: translateX(-100%);
}
/* 离开动画 */
.v-leave-active {
    transition: 1s;
}
</style>

也可以将 transition: 1s; 设置到标签上,就不用写 v-leave-activev-enter-active 对应的样式了

h1 {
    transition: 1s;
}

/* 进入:始位置 */
.v-enter {
    transform: translateX(-100%);
}
/* 进入:末位置 */
.v-enter-to {
    transform: translateX(0);
}

/* 离开:始位置 */
.v-leave {
    transform: translateX(0);
}
/* 离开:末位置 */
.v-leave-to {
    transform: translateX(-100%);
}

transition-group 标签

  • transition 标签只能包含 1 个元素、 transition-group 标签可以包含多个元素
  • transition-group 标签里面的元素需要设置 key 属性,作为当前元素的唯一标识
  • 除此之外,其他用法都和 transition 标签一样
<template>
    <div id="app">
        <button @click="isEditing = !isEditing">切换</button>
        <transition-group appear>
            <h1 v-if="isEditing" key="save">Save</h1>
            <h1 v-if="!isEditing" key="edit">Edit</h1>
        </transition-group>
    </div>
</template>

<script>
export default {
    name: "App",
    data() {
        return { isEditing: true };
    },
};
</script>

<style>
h1 {
    transition: 0.5s;
    position: absolute;
}
.v-leave {
    opacity: 1;
}
.v-leave-to {
    opacity: 0;
}
.v-enter {
    opacity: 0;
}
.v-enter-to {
    opacity: 1;
}
</style>

如果只有两个元素,也可以给一个元素的 key 设置不同的状态来代替 v-ifv-else,上面的例子可以重写为:

<transition>
    <h1 :key="isEditing">
        {{ isEditing ? "Save" : "Edit" }}
    </h1>
</transition>

动画库 animate.css

  1. 下载:npm install animate.css
  2. 引入样式库:import "animate.css"
  3. 给指定的 transition 标签添加 name 属性 animate_animate、animate__bounce
  4. 配置 enter-active-class 属性,指定进入动画:
    在样式库中挑一个进入的样式值,作为 enter-active-class 属性值
  5. 配置 leave-active-class 属性,指定退出动画:
    在样式库中挑一个退出的样式值,作为 leave-active-class 属性值
<template>
    <div>
        <button @click="bol = !bol">隐藏 / 显示</button>
        <transition
            name="animate__animated animate__bounce"
            enter-active-class="animate__bounceIn"
            leave-active-class="animate__bounceOut"
        >
            <h1 v-show="bol">动画库的使用</h1>
        </transition>
    </div>
</template>

<script>
import "animate.css"; // 引入样式库
export default {
    name: "App",
    data() {
        return { bol: true };
    },
};
</script>

总结

到此这篇关于Vue中transition标签基本使用的文章就介绍到这了,更多相关Vue transition标签使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Vue运用transition实现过渡动画

    vue的过渡动画,主要是transition标签的使用,配合css动画实现的.官方文档css过渡 通过点击事件来切换show的值来改变显示的文本,下面的css通过进入离开时的在匀速状态下xxs(秒)下来转换在x轴上位移的距离, transition包括的是位移的内.key是必须有的,用来标记位移的哪一个,这个方法有一点,用v-if时会频繁的建立销毁.name是你定义的名字必须有,和css里面的名字是保持一致的,你可以自定义名字. 使用它时有时候切换的并不是标签,而是一个组件,这时候应该使用tra

  • Vue中的transition封装组件的实现方法

    vue版本信息:2.5.2 问题起源于使用Vue做网站时涉及到的一个小部件显示动画,阅读了Vue的文档后结合网上各位的经验,花了点时间研究了下. 最终的效果如上图所示,当鼠标移入灰色方块时弹出层会至上而下显示出来,类似于 拉链式窗帘(?). 实例 实现上图所示的效果代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta

  • 深入理解Vue transition源码分析

    这两天学习了Vue transition感觉这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记. 本来打算自己造一个transition的轮子,所以决定先看看源码,理清思路.Vue的transition组件提供了一系列钩子函数,并且具有良好可扩展性. 了解构建过程 既然要看源码,就先让Vue在开发环境跑起来,首先从GitHub clone下来整个项目,在文件./github/CONTRIBUTING.md中看到了如下备注,需要强调一下的是,npm run dev构建的是runtime +

  • Vue 过渡(动画)transition组件案例详解

    Vue过度(动画),本质走的是CSS3:transtion,animation. 控制器div显示/隐藏,代码如下: <div id="box"> <input type="button" value="按钮" @click="toggle"> <div id="div1" v-show="isShow"></div> </div&g

  • vue transition 在子组件中失效的解决

    错误代码: 子组件: <template> <div v-show="showMine"> <div class="mask" @click.self="onMask"></div> <transition name="slide-fade"> <div class="my_group" v-if="showMine"&g

  • 关于vue状态过渡transition不起作用的原因解决

    总所周知,vue中的transition标签可以方便得进行动画过渡,使用的方法也很简单. <transition name="你要的名字"> 过渡的元素... </transition> 这里需要主要一点的是:过渡的元素只能是以下之一: 条件渲染 (使用 v-if) 条件展示 (使用 v-show) 动态组件 组件根节点 常用的过渡名称有fade等 你可以这样用 <transition name="fade"> 过渡的元素...

  • vue页面切换过渡transition效果

    首先得有你想要的过渡效果css代码: .vux-pop-out-enter-active, .vux-pop-out-leave-active, .vux-pop-in-enter-active, .vux-pop-in-leave-active { will-change: transform; transition: all 500ms; height: 100%; position: absolute; backface-visibility: hidden; perspective: 1

  • vue2.0 中使用transition实现动画效果使用心得

    实践 这里将通过四个实践小案例来体验和学习css过渡,css动画,javascript钩子,列表过渡的应用.至于案例用到的知识点就请自行学习官网文档. 1.css过渡–实践 先来看看demo效果: 这个案例其实很简单,通过一个transition来触发多个子元素的过渡效果,我们只需要定义元素对应的过渡效果就可以,其他事情vue会帮我们搞定,由此可以扩展出其他酷炫的过渡场景效果.先来看看这个简单案例的代码实现: <template> <div class="app"&g

  • Vue中transition标签的基本使用教程

    目录 transition 标签 配合 animation 配合 transition transition-group 标签 动画库 animate.css 总结 transition 标签 transition 标签:Vue 的内置动画标签 作用:在 [插入] / [更新] / [移除] DOM 元素时,在合适的时候给元素添加样式类名(配合 CSS 样式使用,实现动画效果) 注意事项 transition 标签只能包含 1 个元素:如果里面写了多个元素,则只生效第一个 transition

  • Vue中$attrs与$listeners的使用教程

    目录 介绍 举例 总结  介绍 $attrs 继承所有的父组件属性(没有通过 props 接收的属性还有 class 类名 和 style 样式 ). inheritAttrs: 是否非 props 属性显示在标签最外层,默认值 true ,就是继承所有的父组件属性(除了 props 特定绑定外)作为普通的HTML特性应用在子组件的根元素上,如果你不希望组件的根元素继承特性就设置 inheritAttrs: false  ,但是 class 还是会继承. $listeners 它是一个对象,能接

  • vue中transition组件在项目中运用小结

    ​vue中的transtion是一个动画过渡封装组件,常见的情景时用transition标签包裹的DOM含有动画效果.transition组件的动画效果过渡设置基于css的transition属性设置.下面给大家介绍下vue中transition组件在项目中运用. 单个弹入弹出运用 注意: name的名字为多少,则下面的样式class开头就要为多少 通过v-if来配合执行动画效果 <template> <div> <button v-on:click="show =

  • vue中的router-view组件的使用教程

    开发的时候有时候会遇到比如 点击这个链接跳转到其他组件的情况,氮素,我们不想跳转到新页面,只在当前页面切换着显示,那么就要涉及到路由的嵌套了,也可以说是子路由的使用. 比如我们在一个导航组件中写了三个导航链接,他们的地址分别为:/food,/rating,/seller,点击每个导航链接都会跳转到不同的组件,我们通过<router-view></router-view> <template> <div class="navbar"> &l

  • Vue 中 a标签上href无法跳转的解决方式

    问题: 使用vue-router 在IE下 a标签里的路由不跳转,火狐,chrome工作正常. 解决: 在App.vue 里增加判断IE浏览器手动修复-- export default { name: 'App', mounted(){ function checkIE(){ return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.s

  • 详解vue中router-link标签所必备了解的属性

    to 表示目标路由的链接. 当被点击后,内部会立刻把 to 的值传到 router.push(),所以这个值可以是一个字符串或者是描述目标位置的对象. <!-- 字符串 --> <router-link to="home">Home</router-link> <!-- 渲染结果 --> <a href="home" rel="external nofollow" >Home</a

  • Vue中component标签解决项目组件化操作

    一. 啰嗦几句 在vue项目组件化的过程中,遇到了一些问题,什么问题呢?就是在做一个多功能,多可用,多兼容的大组件的时候,发现在这个组件内部,实现了太多的if.for逻辑,包括大量的html元素,虽然说每段功能块都有批注,但是体积还是比较庞大,最近有些需求,需要将页面上的一大块筛选功能剥离开,形成单独的组件,统一数据渲染,统一组件管理,且这些功能无论是样式,或者是从结构来说,差异性都很大,所以考虑了以下几种开发方式: 1. 大容量单组件开发,渲染和传入的数据使用各种type.ctype判断 2.

  • Vue中el-form标签中的自定义el-select下拉框标签功能

    页面写死el-select下拉框标签: 通过v-for="item in stateArr"绑定,stateArr声明在Vue组件里面的data参数里面代码如下: 到此这篇关于Vue中el-form标签中的自定义el-select下拉框标签功能的文章就介绍到这了,更多相关Vue el-form标签 自定义el-select下拉框标签内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • vue中使用vuex的超详细教程

    目录 一.适合初学者使用,保存数据以及获取数据 二.模块化(适合有部分基础的人) vuex是使用vue中必不可少的一部分,基于父子.兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,它相当于一个公共仓库,保存着所有组件都能共用的数据. 那么,我们一起来看看vue项目怎么使用它吧.(如果你对vuex有一定了解,不是刚接触的小白,请忽略第一步,直接查看第二步) 一.适合初学者使用,保存数据以及获取数据 1.在sto

  • Vue中video标签如何实现不静音自动播放

    由于浏览器厂商为了提高用户体验禁止video标签可以有声的自动播放,也就是说如果想让video标签能够自动播放必须给video标签添加muted属性. 但是在开发的过程中我们需要用视频自动有声播放,比如一些学习网站,需要老师或同学进入页面就可以播放学习视频,那么如何去实现呢? 我是在Vue框架下实现的,其他框架仅供参考. 首先我们要让video标签能够自动播放,也就是让video标签静音条件下自动播放. <video ref="videoPlayer" id="vide

随机推荐