最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue過渡效果之CSS過渡詳解(結(jié)合transition,animation,animate.css)

 更新時間:2020年02月05日 16:53:58   作者:小火柴的藍色理想  
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 過渡或動畫,如果是,在恰當?shù)臅r機添加/刪除 CSS 類名 

過渡類名

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

v-enter

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

v-enter-active

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

v-enter-to

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

v-leave

定義離開過渡的開始狀態(tài)。在離開過渡被觸發(fā)時生效,在下一個幀移除

v-leave-active

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

v-leave-to

定義離開過渡的結(jié)束狀態(tài)。在離開過渡被觸發(fā)一幀后生效(與此同時 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,區(qū)別是在動畫中 v-enter 類名在節(jié)點插入 DOM 后不會立即刪除,而是在 animationend 事件觸發(fā)時刪除

下面例子中,在元素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>

同時使用

Vue 為了知道過渡的完成,必須設(shè)置相應的事件監(jiān)聽器。它可以是 transitionend 或 animationend ,這取決于給元素應用的 CSS 規(guī)則。如果使用其中任何一種,Vue 能自動識別類型并設(shè)置監(jiān)聽。

但是,在一些場景中,需要給同一個元素同時設(shè)置兩種過渡動效,比如 animation 很快的被觸發(fā)并完成了,而 transition 效果還沒結(jié)束。在這種情況中,就需要使用 type 特性并設(shè)置 animation 或 transition 來明確聲明需要 Vue 監(jiān)聽的類型

<style>
.fade-enter,.fade-leave-to{
 opacity:0;
}
.fade-enter-active,.fade-leave-active{
 transition:opacity 1s;
 animation:bounce-in 5s;
}
@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="fade" type="transition">
  <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 

自定義類名的優(yōu)先級高于普通的類名,這對于Vue的過渡系統(tǒng)和其他第三方CSS動畫庫,如 Animate.css 結(jié)合使用十分有用

<link rel="stylesheet"  rel="external nofollow" >
<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://www.jb51.com/vue"></script>
<script>
new Vue({
 el: '#example',
 data: {
  show: true
 }
})
</script>

初始渲染過渡

可以通過 appear 特性設(shè)置節(jié)點的在初始渲染的過渡

<transition appear>
 <!-- ... -->
</transition>

這里默認和進入和離開過渡一樣,同樣也可以自定義 CSS 類名

<transition
 appear
 appear-class="custom-appear-class"
 appear-to-class="custom-appear-to-class" 
 appear-active-class="custom-appear-active-class"
>
 <!-- ... -->
</transition>

下面是一個例子

<style>
.custom-appear-class{
 opacity:0;
 background-color:pink;
 transform:translateX(100px);
} 
.custom-appear-active-class{
 transition: 2s;
}
</style>
<div id="demo">
 <button @click="reset">還原</button>
 <transition appear  appear-class="custom-appear-class"
 appear-to-class="custom-appear-to-class" 
 appear-active-class="custom-appear-active-class">
  <p>藍色理想</p>
 </transition>
</div>
<script>
new Vue({
 el: '#demo',
 methods:{
  reset(){
   history.go();
  }
 }
})
</script>

過渡時間

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

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

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

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

也可以分別定制進入和移出的持續(xù)時間

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

比如,下面的代碼中,進入和移出的效果都為animate.css里面的shake效果,但持續(xù)時間分別是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>

過渡條件

一般地,在Vue中滿足下列任意一個過渡條件,即可添加過渡效果

條件渲染(使用v-if)

常見的條件是使用條件渲染,使用v-if

<style>
.fade-enter,.fade-leave-to{
 opacity:0;
}
.fade-enter-active,.fade-leave-active{
 transition:opacity 1s;
}
</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>

條件展示(使用v-show)

使用條件展示,即使用v-show時,也可以添加過渡效果

<div id="demo">
 <button v-on:click="show = !show">Toggle</button>  
 <transition name="fade">
  <p v-show="show">藍色理想</p>
 </transition>
</div>

動態(tài)組件

使用is屬性實現(xiàn)的動態(tài)組件,可以添加過渡效果

<div id="demo">
 <button v-on:click="show = !show">Toggle</button>  
 <transition name="fade">
  <component :is="view"></component>
 </transition>
</div>
<script>
new Vue({
 el: '#demo',
 components:{
  'home':{template:'<div>藍色理想</div>'}
 },
 data: {
  show: true,
 },
 computed:{
  view(){
   return this.show ? 'home' : '';
  }
 }
})

更多關(guān)于Vue動畫效果的文章請點擊下面的相關(guān)鏈接

相關(guān)文章

  • Vue3新狀態(tài)管理工具實例詳解

    Vue3新狀態(tài)管理工具實例詳解

    Vue3公布曾經(jīng)有一段時間了,它采納了新的響應式零碎,而且構(gòu)建了一套全新的 Composition API,下面這篇文章主要給大家介紹了關(guān)于Vue3新狀態(tài)管理工具的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 去除Element-Plus下拉菜單邊框的實現(xiàn)步驟

    去除Element-Plus下拉菜單邊框的實現(xiàn)步驟

    Element-Plus 是 Element UI 的 Vue 3 版本,它提供了一套完整的組件庫,在使用 Element-Plus 進行開發(fā)時,我們可能會遇到需要自定義組件樣式的情況,本文將介紹如何使用 CSS 來去除 Element-Plus 下拉框的邊框,需要的朋友可以參考下
    2024-03-03
  • vue清除動態(tài)路由的問題記錄

    vue清除動態(tài)路由的問題記錄

    項目中往往都是添加動態(tài)路由,如何刪除已經(jīng)添加進來的路由往往被忽視,為此這里做一下記錄,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • requirejs + vue 項目搭建詳解

    requirejs + vue 項目搭建詳解

    這篇文章主要介紹了requirejs + vue 項目搭建詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Pinia進階setup函數(shù)式寫法封裝到企業(yè)項目

    Pinia進階setup函數(shù)式寫法封裝到企業(yè)項目

    這篇文章主要為大家介紹了Pinia進階setup函數(shù)式寫法封裝到企業(yè)項目實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • vue網(wǎng)絡請求方案原生網(wǎng)絡請求和js網(wǎng)絡請求庫

    vue網(wǎng)絡請求方案原生網(wǎng)絡請求和js網(wǎng)絡請求庫

    這篇文章主要為大家介紹了網(wǎng)絡請求方案原生網(wǎng)絡請求和js網(wǎng)絡請求庫的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • 解決vue安裝less報錯Failed to compile with 1 errors的問題

    解決vue安裝less報錯Failed to compile with 1 errors的問題

    這篇文章主要介紹了解決vue安裝less報錯Failed to compile with 1 errors的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue中rem的配置的方法示例

    vue中rem的配置的方法示例

    這篇文章主要介紹了vue中rem的配置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue 使用iView組件中的Table實現(xiàn)定時自動滾動效果

    vue 使用iView組件中的Table實現(xiàn)定時自動滾動效果

    要在css中設(shè)置table的高度,使數(shù)據(jù)過多時出現(xiàn)滾動條,將縱向設(shè)置為overflow-y: auto;橫向設(shè)置隱藏 overflow-x: hidden,接下來通過本文介紹vue使用iView組件中的Table實現(xiàn)定時自動滾動效果,需要的朋友可以參考下
    2024-05-05
  • vue實現(xiàn)el-select默認選擇第一個或者第二個

    vue實現(xiàn)el-select默認選擇第一個或者第二個

    這篇文章主要介紹了vue實現(xiàn)el-select默認選擇第一個或者第二個,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論

望谟县| 广安市| 台中市| 巴青县| 太湖县| 苍山县| 哈密市| 钟祥市| 广宗县| 保康县| 边坝县| 揭东县| 屏东市| 克什克腾旗| 新泰市| 长寿区| 秦安县| 尚志市| 奉化市| 高清| 安庆市| 华蓥市| 平阴县| 仁化县| 平凉市| 玉环县| 宁化县| 永修县| 临沂市| 定边县| 紫金县| 衢州市| 老河口市| 麻江县| 磴口县| 宁夏| 璧山县| 特克斯县| 时尚| 贵州省| 乌恰县|