1. 程式人生 > >【譯】如何使用Vue過渡效果來提升使用者體驗

【譯】如何使用Vue過渡效果來提升使用者體驗

在Vue應用中新增過渡效果是一個可以使你的專案感覺更專業的簡單方法。通過提升使用者體驗,可以使你的網站留住更多的使用者以及提高轉化率。
只需要簡單的處理就可以獲得巨大的回報,何樂而不為?
在這個指南中,我們將帶你瞭解關於Vue過渡效果的相關知識,從最基本的開箱即用的方法到建立自定義過渡效果。
準備好開始學習關於Vue的過渡了嗎?讓我們開始吧。

為什麼還要使用過渡效果

大部分人會覺得過渡效果只是一種裝飾,但是一個具有好的設計的過渡效果可以達到以下一些作用:

  • 吸引使用者的注意力
  • 強調重要的資訊
  • 網站更加自然流暢
  • 引導使用者瀏覽你的網頁
  • 有助於創造更專業的品牌形象

以上所有的點可以很好地提升網站的使用者體驗以及提高轉化率。雙贏。

OK,現在我們知道了過渡效果對你的網站是極其的有幫助,讓我們學習如果用Vue來實現這種效果吧。

建立一個Vue過渡效果

為了容納廣泛不同技術棧的開發者,VueJS提供了幾種方法來實現過渡:

  • 在CSS過渡和動畫應用class
  • 在過渡鉤子函式使用JS實現操作DOM
  • 使用第三方CSS/JS庫

要使用以上哪一種方式取決於你現有的技術知識。如果是有更好的HTML/CSS經驗,那你可以使用第一種。如果你是從React轉過來的或者只有更多的JS經驗,手動地操作DOM也是一個好的方式。

現在我們重點介紹使用CSS編寫單個元素的動畫效果。不過請放心,我們後續將介紹更高階的內容(多個元素,動態組建、例子)。

瞭解過渡元件

transition元素是一個容器,可以幫助你在元素上新增過渡功能。本質上,它設定了不同的函式鉤子以及在變化的元素中新增calss,因此我們可以在不同的過渡階段設定樣式。

有6種不同的過渡class(3個進入的,3個離開的類),分別是:
1、v-enter/v-leave:過渡的開始狀態;過渡離開開始狀態。
2、v-enter-active/v-leave-active:過渡啟用狀態。
3、v-enter-to/v-leave-to:過渡結束狀態。
詳細可參考官方文件

提示:當你對過渡定義一個名稱,這就是預設的名稱。類名的格式為name-enter,name-enter-active等等。

下面我們看下新增過渡的簡單方式。

格式化模版的程式碼非常簡單。只需要將需要過渡效果的元素用元件包裹起來即可。就像這樣:

<template>
  <div>
    <button @click='visible = !visible'>Toggle Div</button>
    <transition name="fade">
      <div v-if="visible">
        Hello World
      </div>
    </transition>
  </div>
</template>
<script>
export default {
  data () {
    return {
      visible: true
    }
  }
}
</script>

很簡單,對吧?
現在,我們需要新增一些樣式來實現真正的過渡效果了。
我們使用官方文件例子的一些樣式:
<style lang="scss"> .fade-enter-active, .fade-leave-active { transition: opacity 0.5s; } .fade-enter, .fade-leave-to { opacity: 0; } </style>
以上程式碼是做了什麼?其實這個很直觀,因為加了一些類似狀態的類名。
這些樣式說明當過渡啟用的時候,對opacity屬性新增過渡,使其平滑地變化。
然後,設定過渡進入開始狀態和過渡離開的結束狀態為零(不可見)。同時,要記住當元素沒有設定fade-enter或者fade-leave-to類名,opacity將會設定回預設值。

好了。
可以在你的Vue應用裡新增過渡效果了。現在,我們來繼續深入,瞭解更多細節。
另外,你也可以使用CSS動畫來實現過渡效果。
只有你能夠使用合適的類名,就可以根據自己的喜好對這些元件進行樣式設定。
下面來看看過渡效果的更高階用法。

在元件載入後使用過渡效果

超級簡單,只需要在過渡元素新增一個appear屬性即可,像這樣:

<transition name="fade" appear>
      <div v-if="visible">
        Hello World
      </div>
</transition>

多個元素使用過渡效果

同樣地,這個也是超級簡單。像下面那樣兩個div之間切換。

<transition name="fade" appear>
      <div v-if="visible">
        Option A
      </div>
      <div v-else>
        Option B
      </div>
</transition>

你所需要做的就是用transition元素將這些元素包裹起來,過渡效果就可以生效。
但需要注意以下幾點:
當在兩個元素之間應用Vue過渡效果時,有時兩個元素都是可見的並且正在移入/移出。如果要達到一個平滑的效果,你可能需要將它們絕對定位在彼此的頂部。
如果元素具有相同的標籤,Vue會進行優化而且只替換元素的內容,而不是重新銷燬建立。根據官方文件,如果需要在多個元素之間進行轉換,最佳實踐就是在元素上新增一個key。

動態元件使用過渡效果

這個相對於上面的例子更加簡單了。只需要把動態元件放在transition元素裡面就可以了。例如:

<transition name="fade" appear>
      <component :is='componentType' />
</transition>

建立一個可重用的過渡元件

使用slot建立一個可替換內容的元件,例如:

<template>
  <transition name="fade" appear>
    <slot></slot>
  </transition>
</template>

最後

沒什麼好說的。Happpy Coding。

後記

文章寫的實在太囉嗦,寫不下去了。還不如看官方文件。水文一篇。以上譯文僅用於學習交流,水平有限,難免有錯誤之處,敬請指正。

參考

原文
一個學習Vue的網站:learnVue