vue动画心得

熵烬
• 阅读 2157

最近学习到vue的动画,觉得挺有意思,写了一个小demo,话不多说,上代码~

<template>
    <div id="example">
        <p class="toggle" @click="show=!show">{{show?'移出':'移入'}}</p>
        <transition
            name="fade">
            <div v-if="show" class="showBox">
                <h2>主标题是我</h2>
                <ul>
                    <li>我是标题标题标题标题标题1</li>
                    <li>我是标题标题标题标题标题1</li>
                    <li>我是标题标题标题标题标题1</li>
                    <li>我是标题标题标题标题标题1</li>
                    <li>我是标题标题标题标题标题1</li>
                </ul>
            </div>
        </transition>
    </div>
</template>
<script>
    export default{
        data(){
            return{
                // 赋值显示下面内容
                show:true,
            }
        },
    }
</script>
<style>
    #example{
        width:300px;
        margin:0 auto;
    }
    .toggle{
        padding:10px 10px;
        background:green;
        color:#EFEFEF;
        cursor:pointer;
        font-size:16px;
        margin-bottom:20px;
    }
    .showBox{
        padding:10px 0;
        border:1px dashed #008000;
    }
    .fade-enter{
        opacity: 0;
        transform: translateX(50px);
    }
    .fade-leave-to{
        opacity: 0;
        transform: translateX(-50px);
    }
    .fade-enter-active,.fade-leave-active{
        color:#eee;
        transition:all 0.8s;
    }
</style>

效果:
点击移出按钮,列表块往左移动,同时渐渐消失,点击移入按钮,代码块由右往左移动,同时渐渐显示。

笔者还不会上传动态图片,看看截图吧 ~…~


vue动画心得vue动画心得vue动画心得


实现思路:
1.通过show的true和false控制列表是否显示。
2.使用<transition>封装好的组件,给元素添加进入和离开的过渡效果。
实现原理:我在动画插入的初始状态前,把列表透明度调整成0,同时让他向右平移了50px。因为,<transition>的过渡效果在动画完成后,会移除class,回到最初的效果。我点击触发动画的时候,给过渡效果添加了动画的时长(动画曲线之类)。就相当于,慢慢的从translateX(50px)和opacity:1回到最初的状态translateX(0px)和opacity:1。同理,移除的动画就是向左平移50px,透明度为0,给移除的过渡效果添加动画时长。就实现了向左渐渐消失的效果。

很简单吧?好吧,例子就很简单~,那重点来了,咱们去复习下vue的动画吧。

关于过渡的类名(.class):

我画了一个类名过渡状态的泳道图,看这儿~

vue动画心得

怎么样~,有点花是不~,嗯...,我喜欢胡里花哨的东西...

总的来说 :

v-enter  元素被插入前生效。下一帧移除
v-enter-active 元素被插入前 ~ 过渡/动画完成后。 动画完成后,被移除。
v-enter-to  元素被插入后 ~ 过渡/动画完成后。 动画完成后,被移除。
v-leave  离开过渡被触发即生效。下一帧被移除
v-leave-active  离开过渡被触发即生效 ~ 在过渡/动画完成之后。 动画完成后,被移除。
v-leave-to  在离开过渡被触发之后下一帧 ~ 过渡/动画完成之后。 动画完成后,被移除。

<transition> 组件会有默认的v-前缀,如果使用了<transition name="name">,则,v-enter会替换成了 name-enter。

有同学,看到这里就会想,可以在上面.class中写transform,那么是否能写animation呢?
当然~,当然区别还是有的。官方给出的答案:css动画用法同css过渡,区别是在动画中v-enter类名在节点插入dom后不会立刻删除,而是在animationend事件触发时删除。

好吧,该下班了~,今天先到这吧~

有没有同学,看到.class,想到了attribute属性自定过渡类名,javascript钩子函数在function写动画,多个组件过渡,列表过渡... 附上vue官网网址:https://cn.vuejs.org/v2/guide...

再次感谢这个开源时代!给我们提供如此清晰的官方文档~

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
ASMSupport教程4.7 生成关系运算符
<p在java中,关系运算符是很常用的,分别是&gt;,,&lt;,&gt;,&lt;,!这六种,我们按照惯例看看我们需要生成的代码:</p<divid"scid:9D7513F9C04C4721824A2B34F0212519:dfec0f1ca2ec4ebabc9b91c161fbfa47"class"wlWri
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这