<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)前位置: 首頁 - 科技 - 知識百科 - 正文

        vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫

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

        vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫

        vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫:前言 記一次vue 組件中使用 transition 和 transition-group 設(shè)置過渡動畫,總結(jié)來說可分為分為 name 版, js 鉤子操作類名版, js 鉤子操作行內(nèi)樣式版... template模板結(jié)構(gòu) // 單個(gè)元素 <transition name=自定義名字> &
        推薦度:
        導(dǎo)讀vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫:前言 記一次vue 組件中使用 transition 和 transition-group 設(shè)置過渡動畫,總結(jié)來說可分為分為 name 版, js 鉤子操作類名版, js 鉤子操作行內(nèi)樣式版... template模板結(jié)構(gòu) // 單個(gè)元素 <transition name=自定義名字> &

        前言

        記一次vue 組件中使用 transition 和 transition-group 設(shè)置過渡動畫,總結(jié)來說可分為分為 name 版, js 鉤子操作類名版, js 鉤子操作行內(nèi)樣式版...

        template模板結(jié)構(gòu)

        // 單個(gè)元素
         <transition name="自定義名字">
         <p v-if="show">hello</p>
         </transition>
         // 列表元素: 注意group的直接子元素是v-for渲染出來的
         <ul class="list">
         <transition-group name="list">
         <li v-for="(item, index) in gameList" :key="item.id">
         <app-horizontal :itemData="item"></app-horizontal>
         </li>
         </transition-group>
         </ul>

        name 版,name 為組件中的屬性

        出現(xiàn)的過程: name-enter(初始態(tài)) => name-enter-active(中間態(tài)) => name-enter-to(終止態(tài))
        消失的過程: name-leave => name-leave-active => name-leave-to
        以進(jìn)場過渡動畫為例子

        我們可以分別設(shè)置 enter 階段 和 enter-to 階段的動畫

          1.設(shè)置進(jìn)入時(shí)需要過渡的屬性

         .name-enter
         {
         opacity: 0;
         transform: translateY(30px)
         }

          2.然后在 name-enter-active中設(shè)置過渡時(shí)間

         .name-enter-active {
         transition: all .3s;
         }

          3.最后在 name-enter-to 中寫上終止態(tài)屬性

            其實(shí)終止態(tài)的opacity: 1;transform: none; 是默認(rèn)的,可以不用寫

         .name-enter-to {
         opacity: 1;
         transform: translateY(0);
         }

          如果要給列表中的元素設(shè)置交錯(cuò)的效果, 元素不多的話可以添加 delay 屬性

         .name-enter-active:nth-child(3n+1) {
         transition-delay: 0s;
         }
         .name-enter-active:nth-child(3n+2) {
         transition-delay: .1s;
         }
         .name-enter-active:nth-child(3n+3) {
         transition-delay: .2s;
         }

          離場動畫同理...

        js 鉤子實(shí)現(xiàn)過渡動畫: 通過操作類名; 就是 name 版的 js 實(shí)現(xiàn)

        // 例如實(shí)現(xiàn)上述列表依次顯示
         <ul class="list">
         <transition-group
         v-bind:css="false"
         v-on:before-enter="beforeEnter"
         v-on:enter="enter"
         v-on:after-enter="afterEnter">
         <li v-for="(item, index) in gameList" 
         :key="item.id" 
         :data-delay="index*100" 
         >
         <app-horizontal :itemData="item"></app-horizontal>
         </li>
         </transition-group>
         </ul> 
         // 
         methods: {
         // 事先定義上述類名
         // 在beforeEnter enter afterEnter 鉤子中手動操作上述類名
         
         // 初始態(tài)
         beforeEnter(dom) {
         dom.classList.add('list-enter', 'list-enter-active');
         },
         // 中間態(tài)
         enter(dom,done) {
         // 通過 setTimeout + dataset 實(shí)現(xiàn)過渡
         let delay = dom.dataset.delay;
         setTimeout(function () {
         dom.classList.remove('list-enter');
         dom.classList.add('list-enter-to');
         //監(jiān)聽 transitionend 事件
         var transitionend = window.ontransitionend ? "transitionend" : "webkitTransitionEnd";
         dom.addEventListener(transitionend, function onEnd() {
         // 移除事件
         dom.removeEventListener(transitionend, onEnd);
         //調(diào)用done(),表示動畫已完成
         done()
         });
         }, delay)
         },
         // 終止態(tài)
         afterEnter(dom) {
         dom.classList.remove('list-enter-to', 'list-enter-active');
         }
         }

        js 鉤子過渡動畫: 通過操作行內(nèi)屬性, 自定義動畫

        <ul class="list">
         <transition-group
         v-bind:css="false"
         v-on:before-enter="beforeEnter"
         v-on:enter="enter"
         v-on:after-enter="afterEnter">
         <li v-for="(item, index) in gameList" 
         :key="item.id" 
         :data-delay="index*100"
         data-y = "100%" 
         >
         <app-horizontal :itemData="item"></app-horizontal>
         </li>
         </transition-group>
         </ul> 
         // 對應(yīng)的操作方法; 添加自定義的 dataset,給dom設(shè)置css樣式;根據(jù)需求添加
         methods: {
         // 初始態(tài)
         beforeEnter(dom) {
         let { x = 0, y = 0, opacity = 0 } = dom.dataset;
         dom.style.cssText = `transition: .3s;opacity: ${opacity};transform: translateX(${x}) translateY(${y});`;
         },
         // 中間態(tài)
         enter(dom,done) {
         let delay = dom.dataset.delay;
         setTimeout(function () {
         dom.style.cssText = `transition: .3s;opacity: 1;transform: translateX(0) translateY(0);`;
         //監(jiān)聽 transitionend 事件
         var transitionend = window.ontransitionend ? "transitionend" : "webkitTransitionEnd";
         dom.addEventListener(transitionend, function onEnd() {
         dom.removeEventListener(transitionend, onEnd);
         done(); 
         });
         }, delay)
         },
         // 終止態(tài)
         afterEnter(dom) {
         dom.style.cssText = "";
         }
         }

        這里記錄一下監(jiān)聽css3的animation動畫和transition事件:

        webkit-animation動畫有三個(gè)事件:
         開始事件: webkitAnimationStart
         結(jié)束事件: webkitAnimationEnd
         重復(fù)運(yùn)動事件: webkitAnimationIteration
        css3的過渡屬性transition: 一個(gè)事件
         過渡結(jié)束: webkitTransitionEnd

        總結(jié)

        以上所述是小編給大家介紹的vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
        如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

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

        文檔

        vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫

        vue 組件中使用 transition 和 transition-group實(shí)現(xiàn)過渡動畫:前言 記一次vue 組件中使用 transition 和 transition-group 設(shè)置過渡動畫,總結(jié)來說可分為分為 name 版, js 鉤子操作類名版, js 鉤子操作行內(nèi)樣式版... template模板結(jié)構(gòu) // 單個(gè)元素 <transition name=自定義名字> &
        推薦度:
        標(biāo)簽: 使用 VUE 與使用
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费看韩国黄a片在线观看| 色猫咪免费人成网站在线观看| 成年女人18级毛片毛片免费观看| 久久亚洲中文字幕精品有坂深雪| 久热免费在线视频| 亚洲激情视频网站| 一本岛高清v不卡免费一三区| 亚洲大香人伊一本线| 永久免费的网站在线观看| 亚洲偷自拍另类图片二区| 精品久久免费视频| 杨幂最新免费特级毛片| 在线观看亚洲天天一三视| 日本免费在线观看| 亚洲人成影院在线高清| 四虎www成人影院免费观看| 美女被爆羞羞网站免费| 亚洲色欲一区二区三区在线观看| 日本免费在线观看| 亚洲AV成人噜噜无码网站| 国产无遮挡又黄又爽免费视频| 色www免费视频| 亚洲AV日韩AV永久无码下载| **真实毛片免费观看| 亚洲精华液一二三产区| 国产成人精品日本亚洲专区61| 久草视频在线免费看| 四虎必出精品亚洲高清| 亚洲成?Ⅴ人在线观看无码| 免费成人在线视频观看| 丁香婷婷亚洲六月综合色| 免费在线观看理论片| 日本视频免费高清一本18 | 亚洲人成人77777网站| 57pao国产成视频免费播放| 亚洲日韩久久综合中文字幕| 亚洲综合精品网站在线观看| 亚洲一区二区在线免费观看| 国产成人亚洲精品播放器下载| 亚洲第一极品精品无码久久| 青青青国产免费一夜七次郎|