【Vue】动画与过渡-trasition-enter-leave

1. vue动画的理解

操作css的trasition或animation
vue会给目标元素添加/移除特定的class-

2. 基本过渡动画的编码

1). 在目标元素外包裹
2). 定义class样式
1>. 指定过渡样式: transition
2>. 指定隐藏时的样式: opacity/其它

3. 过渡的类名

xxx-enter-active: 指定显示的transition
xxx-leave-active: 指定隐藏的transition
xxx-enter: 指定隐藏时的样式

https://cn.vuejs.org/images/transition.png

过渡代码示例

/* 显示/隐藏的过渡效果 */
.xxx-enter-active, .xxx-leave-active{
    
    
    transition: opacity 0.5s;
}
/* 隐藏时的样式  */
.xxx-enter, .xxx-leave-to{
    
    
    opacity: 0;
}

.move-enter-active {
    
    
    transition: all 1s;
}
.move-leave-active {
    
    
    transition: all 3s;
}
.move-enter, .move-leave-to {
    
    
    opacity: 0;
    transition: translateX(20px);
}
<body>
    <div id="demo1">
        <button @click="isShow=!isShow">过渡1</button>
        <transition name="xxx">
            <p v-show="isShow">YK菌学前端</p>
        </transition>   
    </div>

    <div id="demo2">
        <button @click="isShow=!isShow">过渡2</button>
        <transition name="move">
            <p v-show="isShow">YK菌天天学前端</p>
        </transition>
    </div>

    <script src="../js/vue.js"></script>
    <script>  
        new Vue({
     
     
            el: "#demo1",
            data() {
     
     
                return {
     
     
                    isShow: true
                }
            }
        })

        new Vue({
     
     
            el: "#demo2",
            data: {
     
     
                isShow:true
            }
        })

    </script>
</body

在这里插入图片描述

动画代码示例

.bounce-enter-active {
    
    
    animation: bounce-in .5s;
}
.bounce-leave-active {
    
    
    animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
    
    
    0% {
    
    
        transform: scale(0);
        }
    50% {
    
    
        transform: scale(1.5);
    }
    100% {
    
    
        transform: scale(1);
    }
}
<body>
    <div id="example-2">
        <button @click="show = !show">Toggle show</button><br>
        <transition name="bounce">
          <p v-if="show" style="display: inline-block;">YK菌一直在学前端</p>
        </transition>
      </div>

      <script src="../js/vue.js"></script>
      <script>
        new Vue({
     
     
            el: '#example-2',
            data: {
     
     
                show: true
            }
        })
      </script>
</body>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44972008/article/details/113124634