首頁  >  文章  >  web前端  >  Vue3列表動畫和狀態動畫怎麼應用

Vue3列表動畫和狀態動畫怎麼應用

王林
王林轉載
2023-05-22 09:43:191321瀏覽

    概述

    清單動畫和狀態動畫都是增加使用者體驗的方法,當一個清單新增資料或移除資料時,如果直接加入,突然顯示,未免有些突兀,而且使用者可能會不知道此時已經有資料加入了,從清單中移除資料也是,使用者很有可能不知道目前已經移除了哪一條資料。有趣的動畫具有很好的吸引力,可以幫助使用者專注於新增和移除的數據,因此,加上動畫能夠改善使用者體驗。這就是清單動畫,而狀態動畫是指從一個狀態到另一個狀態的變化,如果直接變過去,就會顯得比較生硬,但是如果是加了動畫慢慢過渡過去會好很多。

    範例解析

    清單動畫

    Vue3列表動畫和狀態動畫怎麼應用

    #如上圖所示我們要展示一個數字構成的清單,右面有一個按鈕,點擊按鈕會執行一個動畫增加數字。程式碼如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>列表动画</title>
        <style>
            .list-item{
                display: inline-block;
                margin-right: 10px;
            }
            .v-enter-from{
                opacity: 0;
                transform: translateY(30px);
            }
            .v-enter-active{
                transition: all 1s ease-in;
            }
            .v-enter-to{
                opacity: 1;
                transform: translateY(0px);
            }
            .v-move{
                transition: 2.5s ease-in;
            }
        </style>
        <script src="https://unpkg.com/vue@next"></script>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
     const app = Vue.createApp({
            data() {
                return {
                   list:[1,2,3]
                }
            },
            methods: {
                handleClick(){
                   this.list.unshift(this.list.length+1);
                }
            },
            template: 
            `
                <div>
                    <transition-group>
                    <span class="list-item" v-for = "item in list" :key="item">{{item}}</span>
                    </transition-group>
                    <button @click="handleClick">add</button> 
                </div>
            `
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>

    我們先是使用CSS將清單的動畫效果定義出來,這個效果和之前講的動畫定義差不多,這裡不過多贅述,定義好動畫後,我們在Vue的template中使用一個span將我們的數字清單顯示出來,然後最關鍵的是我們要使用<transition-group></transition-group>標籤將我們要做動畫的部分包裝起來。當我們點擊按鈕的時候,執行js函數往列表中新增一個列表長度加一的數。動畫效果讀者可以,運行查看。

    狀態動畫

    Vue3列表動畫和狀態動畫怎麼應用

    狀態動畫比較簡單,就是從一個狀態到另一個狀態中間加上一些過渡的值,主要是透過資料控制內容的展示,例如從1變到10,如果直接1馬上變成10,則顯得很生硬,但是中間加一寫其他數字,比如2,3,4...最後再變成10就會好很多,代碼如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>状态动画</title>
        <script src="https://unpkg.com/vue@next"></script>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script>
        // 状态动画:通过数据控制内容的展示
     const app = Vue.createApp({
            data() {
                return {
                   number:1,
                   animateNumber: 1
                }
            },
            methods: {
                handleClick(){
                    this.number =10;
                    if(this.animateNumber<this.number){
                    const animation =  setInterval(()=>{
                    this.animateNumber += 1;
                        if(this.animateNumber === 10){
                        clearInterval(animation)
                         }
                   },100);
                   }
                }
            },
            template: 
            `
                <div>
                    <div>{{animateNumber}}</div>
                    <button @click="handleClick">do</button>  
                </div>
            `
        });
        const vm = app.mount(&#39;#root&#39;);
    </script>

    列表動畫比較簡單,我們點擊執行按鈕的時候,使用js函數每隔100 毫秒就去修改一下目前顯示的值,直到值變成最終想要狀態的值就停止。

    以上是Vue3列表動畫和狀態動畫怎麼應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除