<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        關(guān)于vue狀態(tài)過渡transition不起作用的原因解決

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:59:08
        文檔

        關(guān)于vue狀態(tài)過渡transition不起作用的原因解決

        關(guān)于vue狀態(tài)過渡transition不起作用的原因解決:總所周知,vue中的transition標(biāo)簽可以方便得進(jìn)行動(dòng)畫過渡,使用的方法也很簡單。 <transition name=你要的名字> 過渡的元素... </transition> 這里需要主要一點(diǎn)的是:過渡的元素只能是以下之一: 條件渲染 (使用 v-if) 條件展示
        推薦度:
        導(dǎo)讀關(guān)于vue狀態(tài)過渡transition不起作用的原因解決:總所周知,vue中的transition標(biāo)簽可以方便得進(jìn)行動(dòng)畫過渡,使用的方法也很簡單。 <transition name=你要的名字> 過渡的元素... </transition> 這里需要主要一點(diǎn)的是:過渡的元素只能是以下之一: 條件渲染 (使用 v-if) 條件展示

        常用的過渡名稱有fade等

        你可以這樣用

        <transition name="fade">
         過渡的元素...
        </transition>

        實(shí)現(xiàn)的效果就是淡入淡出。

        如果需要自定義過渡動(dòng)畫的,記得在css中修改以下的類名:

        你要的名字-enter             進(jìn)入前效果
        你要的名字-enter-active     進(jìn)入的過渡時(shí)間和函數(shù)
        你要的名字-enter-to         進(jìn)入后效果
        你要的名字-leave             離開前效果
        你要的名字-leave-active     離開的過渡時(shí)間和函數(shù)
        你要的名字-leave-to         離開后效果

        寫到這里相信大家都已經(jīng)會(huì)簡單地使用transition了。

        請閱讀以下的代碼:

        <transition name="fade">
         <div v-if="show">
         <div class="item-box"></div>
         </div>
         <div v-else>
         <span>暫無更多</span>
         </div>
        </transition>
        

        結(jié)果是完全沒有淡入淡出的效果,那這是什么原因?qū)е聇ransition不起作用呢?

        原因在這里:

        當(dāng)有相同標(biāo)簽名的元素切換時(shí),需要通過 key 特性設(shè)置唯一的值來標(biāo)記以讓 Vue 區(qū)分它們,否則 Vue為了效率只會(huì)替換相同標(biāo)簽內(nèi)部的內(nèi)容。即使在技術(shù)上沒有必要,給在 <transition> 組件中的多個(gè)元素設(shè)置 key 是一個(gè)更好的實(shí)踐。

        所以需要這樣寫:

        <transition name="fade">
         <div v-if="show" key="box1">
         <div class="item-box"></div>
         </div>
         <div v-else key="box2">
         <span>暫無更多</span>
         </div>
        </transition>
        

        刷新運(yùn)行,完美實(shí)現(xiàn)效果~~~~

        參考資料:https://cn.vuejs.org/v2/guide/transitions.html

        補(bǔ)充:

        問題1:不同類型的組件之間切換,有過渡效果,而相同組件(不同內(nèi)容)切換則沒有過渡效果

        vue官網(wǎng)的描述:當(dāng)有相同標(biāo)簽名的元素切換時(shí),需要通過 key 特性設(shè)置唯一的值來標(biāo)記以讓 Vue 區(qū)分它們,否則 Vue 為了效率只會(huì)替換相同標(biāo)簽內(nèi)部的內(nèi)容。即使在技術(shù)上沒有必要,給在 組件中的多個(gè)元素設(shè)置 key 是一個(gè)更好的實(shí)踐。

        改進(jìn)后代碼

        <transition :name="slide">
         <keep-alive>
         <component 
         :is="questionMap[currentQuestion.type]"
         :key="index"
         :currentQuestion="currentQuestion"
         :index="index">
         </component>
         </keep-alive>
        </transition>
        

        給組件添加了key=”index”了之后,不管任何類型都有過渡效果了,因?yàn)榇藭r(shí)vue將每一個(gè)組件區(qū)分為不同的組件

        問題2:前一個(gè)組件滑動(dòng)出去后,后一個(gè)組件沒有滑動(dòng)效果,而是直接顯示了

        過渡模式有一個(gè)問題:一個(gè)離開過渡的時(shí)候另一個(gè)開始進(jìn)入過渡。這是 的默認(rèn)行為 - 進(jìn)入和離開同時(shí)發(fā)生,因?yàn)檫@樣也導(dǎo)致了兩個(gè)卡片的過渡不太復(fù)合需求,我們需要的是一個(gè)先離開后另一個(gè)再進(jìn)入。

        同時(shí)生效的進(jìn)入和離開的過渡不能滿足所有要求,所以 Vue 提供了 過渡模式

      1. in-out:新元素先進(jìn)行過渡,完成之后當(dāng)前元素過渡離開。
      2. out-in:當(dāng)前元素先進(jìn)行過渡,完成之后新元素過渡進(jìn)入。
      3. 因此我們需要在transition標(biāo)簽中添加mode來達(dá)成效果:

        <transition :name="slide" mode="out-in">
         <keep-alive>
         <component 
         :is="questionMap[currentQuestion.type]"
         :key="index"
         :currentQuestion="currentQuestion"
         :index="index">
         </component>
         </keep-alive>
        </transition>
        

        如果要使用列表排序的話,需要使用transition-group,下面是一個(gè)簡單的例子

        <div id="list-demo" class="demo">
         <button v-on:click="add">Add</button>
         <button v-on:click="remove">Remove</button>
         <transition-group name="list" tag="p">
         <span v-for="item in items" v-bind:key="item" class="list-item">
         {{ item }}
         </span>
         </transition-group>
        </div>
        new Vue({
         el: '#list-demo',
         data: {
         items: [1,2,3,4,5,6,7,8,9],
         nextNum: 10
         },
         methods: {
         randomIndex: function () {
         return Math.floor(Math.random() * this.items.length)
         },
         add: function () {
         this.items.splice(this.randomIndex(), 0, this.nextNum++)
         },
         remove: function () {
         this.items.splice(this.randomIndex(), 1)
         },
         }
        })
        
        .list-item {
         display: inline-block;
         margin-right: 10px;
        }
        .list-enter-active, .list-leave-active {
         transition: all 1s;
        }
        .list-enter, .list-leave-to
        /* .list-leave-active for below version 2.1.8 */ {
         opacity: 0;
         transform: translateY(30px);
        }
        

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        關(guān)于vue狀態(tài)過渡transition不起作用的原因解決

        關(guān)于vue狀態(tài)過渡transition不起作用的原因解決:總所周知,vue中的transition標(biāo)簽可以方便得進(jìn)行動(dòng)畫過渡,使用的方法也很簡單。 <transition name=你要的名字> 過渡的元素... </transition> 這里需要主要一點(diǎn)的是:過渡的元素只能是以下之一: 條件渲染 (使用 v-if) 條件展示
        推薦度:
        標(biāo)簽: VUE 過渡效果 transition
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 在线亚洲高清揄拍自拍一品区| 三年片在线观看免费大全| 乱淫片免费影院观看| 国产精品亚洲综合久久| 999久久久免费精品国产 | 日韩视频在线观看免费| 久草视频在线免费看| 亚洲AV无码一区东京热| 亚洲人成人网站18禁| 18禁超污无遮挡无码免费网站| 国产乱码免费卡1卡二卡3卡| 亚洲一级毛片在线播放| 免费国产污网站在线观看不要卡| 日韩免费无码视频一区二区三区 | 美女羞羞喷液视频免费| 1a级毛片免费观看| 亚洲第一网站男人都懂| 亚洲无线电影官网| 色爽黄1000部免费软件下载| 亚洲一级片免费看| 亚洲中文无码卡通动漫野外| 日韩伦理片电影在线免费观看| 亚洲国产精品无码久久久不卡| 国产AV无码专区亚洲AV麻豆丫| 一区二区三区观看免费中文视频在线播放 | 亚洲AV无码乱码在线观看牲色| 一级一看免费完整版毛片| 亚洲国产精品无码久久久秋霞2 | 国产国产人免费人成免费视频| 在线观看亚洲人成网站| 亚洲免费视频一区二区三区| 无人在线观看完整免费版视频| 国产精品亚洲一区二区在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 99在线观看视频免费| 亚洲色无码专区一区| 亚洲精品无码你懂的网站| 西西人体大胆免费视频| 亚洲AV无码成人网站久久精品大 | 黄视频在线观看免费| 亚洲精品网站在线观看不卡无广告|