詳解Vue學習筆記高階篇之列表過渡及其他

2022-10-07 08:15:09 字數 2707 閱讀 4378

本文將介紹vue中的列表過渡,動態過渡, 以及可復用過渡是實現。

列表過渡

目前為止,關於過渡我們已經講到:

那麼怎麼同時渲染整個列表,比如使用v-for?在這種場景中,使用元件。在我們深入例子之前,先了解關於這個元件的幾個特點:

現在讓我們由乙個簡單的例子深入,進入和離開的過渡使用之前一樣的 css 類名。

}.list-item

.list-enter-active, .list-le**e-active

.list-enter, .list-le**e-to

var app1 = new vue(,

methods:,

add:function () ,

remove:function ()

}})執行結果:

這個例子有個問題,當新增和移除元素的時候,周圍的元素會瞬間移動到他們的新布局的位置,而不是平滑的過渡,我們下面會解決這個問題。

列表的位移過渡

元件還有乙個特殊之處。不僅可以進入和離開動畫,還可以改變定位。要使用這個新功能只需了解新增的v-move特性,它會在元素的改變定位的過程中應用。像之前的類名一樣,可以通過name屬性來自定義字首,也可以通過move-class屬性手動設定。

v-move對於設定過渡的切換時機和過渡曲線非常有用,你會看到如下的例子:

.flip-list-move

var app2 = new vue(,

methods:

}})這個例子需要新增以下引用

執行結果:

這個看起來很神奇,內部的實現,vue 使用了乙個叫 flip 簡單的動畫佇列

使用 transforms 將元素從之前的位置平滑過渡新的位置。

我們將之前實現的例子和這個技術結合,使我們列表的一切變動都會有動畫過渡。

}.list-complete-item

.list-complete-enter, .list-complete-le**e-to

.list-complete-le**e-active

var app3 = new vue(,

methods:,

randomindex:function () ,

add:function () ,

remove:function ()

}})執行結果:

列表的漸進過渡

通過 data 屬性與 j**ascript 通訊 ,就可以實現列表的漸進過渡:

var app4 = new vue(,,,

,,,,

]},

computed:)}},

methods:,

enter:function (el, done) ,)

}, delay)

},le**e:function (el, done) , )

}, delay)

}}})

上述js**需要新增對velocity引用:

執行結果如下:

可復用的過渡

過渡可以通過 vue 的元件系統實現復用。要建立乙個可復用過渡元件,你需要做的就是將或者 作為根元件,然後將任何子元件放置在其中就mgthupr可以了。

下面的例子是將上乙個列表漸進過渡的例子改為可復用的過渡的原始碼:

vue.component('my-transition', ,

enter:function (el, done) ,)

}, delay)

},le**e:function (el, done) , )

}, delay)

}}})

var app5 = new vue(,,,

,,,,

]},

computed:)}},

})效果與上乙個例子一致:

但是函式元件更適合完成這個任務。由於暫時還沒有學到render函式,所以暫時先不實現render函式元件。後面學到的時候再做打算。

動態過渡

在 vue 中即使是過渡也是資料驅動的!動態過渡最基本的例子是通過 name 特性來繫結動態值。

當你想用 vue 的過渡系統來定義的 css 過渡/動畫 在不同過渡間切換會非常有用。

所有的過渡特性都是動態繫結。它不僅是簡單的特性,通過事件的鉤子函式方法,可以在獲取到相應上下文資料。這意味著,可以根據元件的狀態通過 j**ascript 過渡設定不同的過渡效果。

fade in:

fade out:

hello chain

var app6 = new vue(,

mounted: function () ,

methods: ,

enter: function (el, done) ,})

},le**e: function (el, done) ,})

}}})

執行結果:

其中例子裡的mounted是在vue掛載完成,也就是模板中的html渲染到html頁面中時的乙個鉤子函式,只會執行一次。具體內容可以理解下vue的生命週期,這裡就不贅述了。

但是如果這裡不使用mounted的話,也是可以用初始渲染來實現,只不過比較麻煩。實現的方法是:

在transition中加入appear鉤子函式:@appear="appear",然後在vue例項的methods中新增appear方法:

appear: function (el, done) ,})

}本文標題: 詳解vue學習筆記高階篇之列表過渡及其他

本文位址:

Vue學習筆記 高階篇

乙個簡單的元件 button counter button counter div body 定義乙個名為 button counter 的新元件 vue.component button counter 如果不用return寫 count 0 則各個部件間會互相影響!template you cl...

Python學習筆記之列表

1 列表增刪改查 list.pop 列表末尾刪除資料項 list.extend 列表末尾增加資料項 list.remove 找到並刪除乙個特定的資料項 list.insert 槽編號,在特定位置前增加乙個資料項 2 for迴圈處理任意大小的列表 for 目標識別符號 in 列表 列表處理 被稱為組 ...

Python學習筆記之列表

閒暇之餘,想看看python的世界是個什麼樣子,畢竟現在這門語言十分的火熱,有著大量的學習資料以及參考書。今天看完了head first python,當然裡面的大量的練習並沒有完成,不過總體的感覺就是這門語言很強大,特別是對資料的處理方面好像有著很大的優勢,於是開啟了真正的學習之旅,這本筆記不知道...