Vue動畫原理

一、實現(xiàn)過渡動畫效果的原理

  1. 隱藏時,給標簽添加的類名,通過第一幀到第二幀opacity的變化實現(xiàn)動畫


    ![enter.png](https://upload-images.jianshu.io/upload_images/7113601-84d053621884d058.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 顯示時,給標簽添加的類名,通過第一幀到第二幀opacity的變化實現(xiàn)動畫


    enter.png

二、如何使用

首先用<transition> 標簽包裹需要實現(xiàn)動畫效果的標簽,指定<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變?yōu)?,transition監(jiān)聽到opacity的變化,會根據(jù)指定的時間內完成變化 */
            .fade-enter {
                opacity: 0; /*當?shù)诙瑫r,會將fade-enter這個類移除,*/
            }
            
            /*從第一幀到第二幀的過程中,opacity從1變?yōu)?*/
            .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>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容