Vue中的过渡和动画

1、vue动画的理解
(1)操作css的transition或animation
(2)vue会给目标元素添加/移除特点的class
(3)过渡的相关类名:
xxx-enter-active:指定显示的transition
xxx-leave-active:指定隐藏的transition
xxx-enter/xxx-leave-to:指定隐藏时的样式

2、基本过渡动画的编码
(1)在目标元素外包裹
(2)定义class样式
指定过渡样式:transition
指定隐藏时的样式:opacity/其他

过渡案例:

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        /*为显示和隐藏过程设置过渡效果*/
        .aa-enter-active, .aa-leave-active { 
            transition: opacity 1s;
        }
        /*隐藏时的样式*/
        .aa-enter, .aa-leave-to { 
            opacity: 0;
        }
  
         /*显示的过渡效果*/
        .move-enter-active { 
            transition: all 1s;
        }
         /*隐藏的过渡效果*/
        .move-leave-active {
            transition: all 3s;
        }
        .move-enter, .move-leave-to { 
            opacity: 0;
            transform: translateX(20px); /*X轴移动效果*/
        }
    </style>
    <script src="vue.js" type="text/javascript"></script><!--引入vue.js-->
</head>
<body>
    <div id="app1">
        <button @click="isShow = !isShow">toggle</button>
        <transition name="aa">
            <p v-show="isShow">hello</p> <!--v-show显示隐藏-->
        </transition>
    </div>

    <div id="app2">
        <button @click="isShow = !isShow">toggle</button>
        <transition name="move">
            <p v-show="isShow">hello</p>
        </transition>
    </div>
    
    <script type="text/javascript">
        var app1 = new Vue({
            el:"#app1",
            data:{
                isShow:true
            }
        })

        var app2 = new Vue({
            el:"#app2",
            data:{
                isShow:true
            }
        })
    </script>    
</body>

动画案例:

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .aa-enter-active { 
            animation: go 3s;  /*正向为显示*/
        }
        .aa-leave-active {
            animation: go 3s reverse;  /*反向为隐藏*/
        }
        @keyframes go { 
            0% {
                transform: scale(0);
            }
            50% {
               transform: scale(1.5);
            }
            100% {
               transform: scale(1);
            }
        }
    </style>
    <script src="vue.js" type="text/javascript"></script>
</head>
<body>
    <div id="app">
        <button @click="isShow = !isShow">Toggle show</button><br>
        <transition name="aa">
            <p v-show="isShow" style="display: inline-block;">hello</p>
        </transition>
    </div>

    <script type="text/javascript">
        var app = new Vue({
            el:"#app",
            data:{
                isShow:true
            }
        })
    </script>    
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值