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

Vue中多個元素、組件的過渡及列表過渡的方法示例

 更新時間:2019年02月13日 08:20:58   作者:UCCs  
這篇文章主要介紹了Vue中多個元素、組件的過渡及列表過渡的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

多個元素之間過渡動畫效果

多元素之間如何實現(xiàn)過渡動畫效果呢?看下面代碼

.fade-enter,
.fade-leave-to{
  opacity: 0;
}
.fade-enter-active,
.fade-leave-active{
  transition: opacity 3s;
}

<div id="root">
  <transition name="fade">
    <div v-if="show">hello world</div>
    <div v-else>bye world</div>
  </transition>
  <button @click="handleClick">切換</button>
</div>

let vm = new Vue({
  el: '#root',
  data: {
    show: true
  },
  methods: {
    handleClick() {
      this.show = !this.show
    }
  }
})

這么寫行不行呢?肯定是不行的,因為 Vue 在兩個元素進行切換的時候,會盡量復(fù)用dom,就是因為這個原因,導(dǎo)致現(xiàn)在動畫效果不會出現(xiàn)。

如果不讓 Vue 復(fù)用dom的話,應(yīng)該怎么做呢?只需要給這兩個div不同的key值就行了

<div v-if="show" key="hello">hello world</div>
<div v-else key="bye">bye world</div>

這個時候當div元素進行切換的時候,就不會復(fù)用了。

mode

Vue 提供了一mode屬性,來實現(xiàn)多個元素切換時的效果

mode取值in-out,動畫效果是先出現(xiàn)在隱藏

<div id="root">
  <transition name="fade" mode="in-out">  //第一次點擊時,執(zhí)行順序為:①②
    <div v-if="show">hello world</div> //再消失 ②
    <div v-else>bye world</div>    //先顯示 ①
  </transition>
  <button @click="handleClick">切換</button>  
</div>

mode取值為out-in,動畫效果為先隱藏在出現(xiàn)

<div id="root">
  <transition name="fade" mode="out-in">  //第一次點擊時,執(zhí)行順序為:①②
    <div v-if="show">hello world</div> //先消失 ①
    <div v-else>bye world</div>    //再顯示 ②
  </transition>
  <button @click="handleClick">切換</button>  
</div>

多個組件之間過渡動畫效果

這里需要借助動態(tài)組件來實現(xiàn)多組件之間過渡動畫效果

先用普通的方式來實現(xiàn)切換:

.fade-enter,
.fade-leave-to{
  opacity: 0;
}
.fade-enter-active,
.fade-leave-active{
  transition: opacity 1s;
}

<div id="root">
  <transition name="fade" mode="in-out">
    <child-one v-if="show"></child-one>
    <child-two v-else></child-two>
  </transition>
  <button @click="handleClick">切換</button>
</div>

Vue.component('child-one',{
  template:'<div>child-one</div>'
})
Vue.component('child-two',{
  template:'<div>child-two</div>'
})
let vm = new Vue({
  el: '#root',
  data: {
    show: true
  },
  methods: {
    handleClick() {
      this.show = !this.show
    }
  }
})

你會發(fā)現(xiàn),這樣子實現(xiàn)組件切換,transition動畫效果是存在的,但是我們想要用動態(tài)組件來實現(xiàn),該怎么弄呢?

可查看之前的文章:Vue 動態(tài)組件與 v-once 指令,這篇文章中詳細的介紹了 Vue 的動態(tài)組件

列表過渡

這里需要使用一個新標簽transition-group來是實現(xiàn)

.fade-enter,
.fade-leave-to{
  opacity: 0;
}
.fade-enter-active,
.fade-leave-active{
  transition: opacity 1s;
}

<div id="root">
  <transition-group name="fade">
    <div v-for="item of list" :key="item.id">{{item.title}}-----{{item.id}}</div>
  </transition-group>
  <button @click="handleClick">添加</button>
</div>

let vm = new Vue({
  el: '#root',
  data: {
    count:0,
    list:[]
  },
  methods: {
    handleClick() {
      this.list.push({
        id:this.count ++,
        title:'hello world'
      })
    }
  }
})

為什么使用了transition-group標簽后,就可以出現(xiàn)過渡動畫效果了呢?看下面代碼:

<transition-group name="fade">
  <div>hello world</div>
  <div>hello world</div>
  <div>hello world</div>
</transition-group>

在循環(huán)過后,頁面中會出現(xiàn)一個個div元素,如果你在外面添加一個transition-group的標簽,相當于你在每一個div外層都加了一個transition標簽,看下面代碼

<transition>
  <div>hello world</div>
</transition>
<transition>
  <div>hello world</div>
</transition>
<transition>
  <div>hello world</div>
</transition>

這時候,Vue 把列表的過渡轉(zhuǎn)化為單個的div元素的過渡了,Vue 會在這個元素隱藏或者顯示的時候動態(tài)的找到時間點,增加對應(yīng)的class。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue.js 中的 $watch使用方法

    Vue.js 中的 $watch使用方法

    本篇文章中主要介紹了Vue.js 中的 $watch使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • vue之“} expected“和“at-rule or selector expected“報錯的解決

    vue之“} expected“和“at-rule or selector ex

    這篇文章主要介紹了vue之“} expected“和“at-rule or selector expected“報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享

    Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享

    這篇文章主要介紹了Vue?Vuex搭建vuex環(huán)境及vuex求和案例分享,?Vue?中實現(xiàn)集中式狀態(tài)管理的一個?Vue?插件,對?vue?應(yīng)用中多個組件的共享狀態(tài)進行集中式的管理,下文相關(guān)介紹,需要的朋友可以參考一下
    2022-04-04
  • Vue.js的動態(tài)組件模板的實現(xiàn)

    Vue.js的動態(tài)組件模板的實現(xiàn)

    這篇文章主要介紹了Vue.js的動態(tài)組件模板的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue如何把組件方法暴露到window對象中

    vue如何把組件方法暴露到window對象中

    這篇文章主要介紹了vue如何把組件方法暴露到window對象中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 關(guān)于vue中@click.native.prevent的說明

    關(guān)于vue中@click.native.prevent的說明

    這篇文章主要介紹了關(guān)于vue中@click.native.prevent的說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue項目接口訪問地址設(shè)置方式

    vue項目接口訪問地址設(shè)置方式

    這篇文章主要介紹了vue項目接口訪問地址設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Vue+Vant實現(xiàn)頂部搜索欄

    Vue+Vant實現(xiàn)頂部搜索欄

    這篇文章主要為大家詳細介紹了Vue+Vant實現(xiàn)頂部搜索欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • VueUse功能精簡你的dependencies

    VueUse功能精簡你的dependencies

    這篇文章主要為大家介紹了VueUse功能精簡你的dependencies實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • vue中的按鈕綁定事件小案例

    vue中的按鈕綁定事件小案例

    這篇文章主要介紹了vue中的按鈕綁定事件小案例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

开平市| 伊金霍洛旗| 房山区| 喀喇沁旗| 峡江县| 福建省| 惠州市| 沅江市| 新邵县| 长宁区| 大同市| 文昌市| 海宁市| 育儿| 额济纳旗| 广宗县| 揭东县| 闽侯县| 武隆县| 调兵山市| 西安市| 巴彦淖尔市| 阳原县| 通城县| 安国市| 临江市| 浮梁县| 郴州市| 攀枝花市| 霞浦县| 长泰县| 大新县| 长阳| 苍南县| 建平县| 十堰市| 凤翔县| 东城区| 温泉县| 合阳县| 丰都县|