Vue過渡效果之CSS過渡

来源:http://www.cnblogs.com/xiaohuochai/archive/2017/08/18/7383979.html
-Advertisement-
Play Games

[1]引入 [2]過渡組件 [3]過渡類名 [4]transition [5]animation [6]自定義類名 [7]過渡時間 ...


前面的話

  Vue 在插入、更新或者移除 DOM 時,提供多種不同方式的應用過渡效果。本文將從CSS過渡transition、CSS動畫animation及配合使用第三方CSS動畫庫(如animate.css)這三方面來詳細介紹Vue過渡效果之CSS過渡

 

引入

  以一個toggle按鈕控制p元素顯隱為例,如果不使用過渡效果,則如下所示

<div id="demo">
  <button v-on:click="show = !show">Toggle</button>
  <p v-if="show">小火柴的藍色理想</p>
</div>
<script>
new Vue({
  el: '#demo',
  data: {
    show: true
  }
})
</script>

  如果要為此加入過渡效果,則需要使用過渡組件transition

 

過渡組件

  Vue提供了transition的封裝組件,下麵代碼中,該過渡組件的名稱為'fade'

  <transition name="fade">
    <p v-if="show">小火柴的藍色理想</p>
  </transition>

  當插入或刪除包含在transition組件中的元素時,Vue會自動嗅探目標元素是否應用了 CSS 過渡或動畫,如果是,在恰當的時機添加/刪除 CSS 類名

 

過渡類名

  總共有6個(CSS)類名在enter/leave的過渡中切換

【v-enter】

  定義進入過渡的開始狀態。在元素被插入時生效,在下一個幀移除

【v-enter-active】

  定義過渡的狀態。在元素整個過渡過程中作用,在元素被插入時生效,在 transition 或 animation 完成之後移除。 這個類可以被用來定義過渡的過程時間,延遲和曲線函數

【v-enter-to】

  定義進入過渡的結束狀態。在元素被插入一幀後生效(與此同時 v-enter 被刪除),在  transition 或 animation 完成之後移除

【v-leave】

  定義離開過渡的開始狀態。在離開過渡被觸發時生效,在下一個幀移除

【v-leave-active】

  定義過渡的狀態。在元素整個過渡過程中作用,在離開過渡被觸發後立即生效,在 transition 或 animation 完成之後移除。 這個類可以被用來定義過渡的過程時間,延遲和曲線函數

【v-leave-to】

  定義離開過渡的結束狀態。在離開過渡被觸發一幀後生效(與此同時 v-leave 被刪除),在 transition 或 animation 完成之後移除

  對於這些在 enter/leave 過渡中切換的類名,v- 是這些類名的首碼,表示過渡組件的名稱。比如,如果使用 <transition name="my-transition"> ,則 v-enter替換為 my-transition-enter

 

transition

  常用的Vue過渡效果都是使用CSS過渡transition,下麵增加一個enter時透明度變化,leave時位移變化的效果

<style>
.fade-enter{
  opacity:0;
}
.fade-enter-active{
  transition:opacity .5s;
}
.fade-leave-active{
  transition:transform .5s;
}
.fade-leave-to{
  transform:translateX(10px);
}
</style>
<div id="demo">
  <button v-on:click="show = !show">Toggle</button>    
  <transition name="fade">
    <p v-if="show">小火柴的藍色理想</p>
  </transition>
</div>
<script>
new Vue({
  el: '#demo',
  data: {
    show: true
  }
})
</script>

 

animation

  CSS動畫animation用法同CSS過渡transition,區別是在動畫中 v-enter 類名在節點插入 DOM 後不會立即刪除,而是在 animationend 事件觸發時刪除

  下麵例子中,在元素enter和leave時都增加縮放scale效果

<style>
.bounce-enter-active{
  animation:bounce-in .5s;
}
.bounce-leave-active{
  animation:bounce-in .5s reverse;
}
@keyframes bounce-in{
  0%{transform:scale(0);}
  50%{transform:scale(1.5);}
  100%{transform:scale(1);}
}
</style>
<div id="demo">
  <button v-on:click="show = !show">Toggle</button>    
  <transition name="bounce">
    <p v-if="show">小火柴的藍色理想</p>
  </transition>
</div>
<script>
new Vue({
  el: '#demo',
  data: {
    show: true
  }
})
</script>

 

自定義類名

  可以通過以下特性來自定義過渡類名

enter-class
enter-active-class
enter-to-class 
leave-class
leave-active-class
leave-to-class 

  自定義類名的優先順序高於普通的類名,這對於Vue的過渡系統和其他第三方CSS動畫庫,如 Animate.css 結合使用十分有用

<link rel="stylesheet" href="https://unpkg.com/[email protected]/animate.min.css">
複製代碼
<div id="example">
  <button @click="show = !show">
    Toggle render
  </button>
  <transition  name="xxx" enter-active-class="animated tada"  leave-active-class="animated bounceOutRight">
    <p v-if="show">小火柴的藍色理想</p>
  </transition>
</div>
複製代碼 複製代碼
<script src="https://unpkg.com/vue"></script>
<script>
new Vue({
  el: '#example',
  data: {
    show: true
  }
})
</script>
複製代碼

 

過渡時間

  在很多情況下,Vue可以自動得出過渡效果的完成時機。預設情況下,Vue會等待其在過渡效果的根元素的第一個 transitionendanimationend 事件。然而也可以不這樣設定——比如,可以擁有一個精心編排的一序列過渡效果,其中一些嵌套的內部元素相比於過渡效果的根元素有延遲的或更長的過渡效果

  在這種情況下可以用<transition>組件上的duration屬性定製一個顯性的過渡效果持續時間 (以毫秒計)

  下麵的代碼意味著元素在進入enter和離開leave時,持續時間都為1s,而無論在樣式中它們的設置值為多少

<transition :duration="1000">...</transition>

  也可以分別定製進入和移出的持續時間

<transition :duration="{ enter: 500, leave: 800 }">...</transition>

  比如,下麵的代碼中,進入和移出的效果都為animate.css裡面的shake效果,但持續時間分別是0.5s和1s

<div id="demo">
  <button v-on:click="show = !show">Toggle</button>    
  <transition  :duration="{ enter: 500, leave: 1000 }" name="xxx" enter-active-class="animated shake"  leave-active-class="animated shake">
    <p v-if="show">小火柴的藍色理想</p>
  </transition>
</div>
<script>
new Vue({
  el: '#demo',
  data: {
    show: true
  }
})
</script>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於Spring總結 Spring引入 傳統的基於mvc的項目框架結構:Entity / dao / service / action 簡單用戶訪問流程:/user.action Tomcat (伺服器創建Action、Service、dao 引出思考: 1. 對象創建創建能否寫死? 2. 對象創建 ...
  • 引言 記憶體管理一直是JAVA語言自豪與驕傲的資本,它讓JAVA程式員基本上可以徹底忽略與記憶體管理相關的細節,只專註於業務邏輯。不過世界上不存在十全十美的好事,在帶來了便利的同時,也因此引入了很多令人抓狂的記憶體溢出和泄露的問題。 可怕的事情還不只如此,有些使用其它語言開發的程式員,給JAVA程式員扣上 ...
  • 一springmvc項目中我新增記錄完全ok,編輯就是不行,後臺方法進不去。老是報錯HTTP ERROR 400 Bad Request。 經過查詢,說是400表示請求中的語法錯誤。 我把新增記錄的請求信息拷貝下來,把編輯的請求信息也拷貝下來,然後用notepad++比較兩個請求,終於發現原因就是i ...
  • 第一種原因: no Session 錯誤 dao層中get方法換成了load方法,或者其他原因引起. 原因分析: 真正用到代理對象的時候,代理對象沒有值,並且session的生命周期已經走完了. 解決方案:1,load()換成get(),或者立即查詢,比如列印一下. 2,延長session的存活時間 ...
  • spl_autoload_register() 函數可以註冊任意數量的自動載入器,當使用尚未被定義的類(class)和介面(interface)時自動去載入。通過註冊自動載入器,腳本引擎在 PHP 出錯失敗前有了最後一個機會載入所需的類。_autoload()自動載入類:當我們實例化一個未定義的類時... ...
  • 1.工廠模式,在各種BeanFactory以及ApplicationContext創建中都用到了 2.模版模式,在各種BeanFactory以及ApplicationContext實現中也都用到了 3.代理模式,Spring AOP 利用了 AspectJ AOP實現的! AspectJ AOP 的 ...
  • 在開發django應用的過程中,使用開發者模式啟動服務是特別方便的一件事,只需要 python manage.py runserver 就可以運行服務,並且提供了非常人性化的autoreload機制,不需要手動重啟程式就可以修改代碼並看到反饋。剛接觸的時候覺得這個功能比較人性化,也沒覺得是什麼特別高 ...
  • 引言: 最近的一個項目,由於資料庫表巨多,導致需要創建N多個java實體、dao、mapper.xml映射文件,如果均使用純手工編寫,無疑需要耗費大量時間和精力。於是上網學習了mybatis generator的使用。 現在項目寫完了,閑暇之餘把乾貨奉上,供大家直接使用。 需求場景: 當你的java ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...