工作生活

Vue动画原理

2019-06-30  本文已影响0人  李华炎

一、实现过渡动画效果的原理

  1. 隐藏时,给标签添加的类名,通过第一帧到第二帧opacity的变化实现动画


    ![enter.png](https://img.haomeiwen.com/i7113601/84d053621884d058.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 显示时,给标签添加的类名,通过第一帧到第二帧opacity的变化实现动画


    enter.png

二、如何使用

首先用<transition> 标签包裹需要实现动画效果的标签,指定<transition> 标签的name 属性,这个属性是用来指定类名的前缀的,如果不指定这个属性,类名会以v- 开始,指定该属性后,类名会以指定的属性值开始。

没有指定name属性的类名,如:v-enter

指定name属性的类名,如:fade-enter

<div id="app">
  <transition name="fade">
    <div v-if="show">hello world</div>
  </transition>
  <button @click="handleClick()">点击我</button>
</div>

三、案例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>动画</title>
        <style type="text/css">
            /*类名会存在于整个动画过程,直至动画结束后移除*/
            .fade-enter-active,
            .fade-leave-active{
                transition: opacity 2s; 
            }
            
            /*从第一帧到第二帧的过程中,opacity从0变为1,transition监听到opacity的变化,会根据指定的时间内完成变化 */
            .fade-enter {
                opacity: 0; /*当第二帧时,会将fade-enter这个类移除,*/
            }
            
            /*从第一帧到第二帧的过程中,opacity从1变为0*/
            .fade-leave-to {
                opacity: 0;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <transition name="fade">
                <div v-if="show">hello world</div>
            </transition>
            <button @click="handleClick()">点击我</button>
        </div>
    </body>
    <script src="../js/vue.js" type="text/javascript"></script>
    <script type="text/javascript">
        new Vue({
            el: '#app',
            data: {
                show: true
            },
            methods: {
                handleClick: function(){
                    this.show = this.show === true ? false : true;
                }
            }
        })
    </script>
</html>
上一篇下一篇

猜你喜欢

热点阅读