• <abbr id="chdyf"></abbr>
    <ruby id="chdyf"><acronym id="chdyf"><meter id="chdyf"></meter></acronym></ruby>
    <bdo id="chdyf"></bdo>
    <dfn id="chdyf"><menu id="chdyf"></menu></dfn>
    1. <menuitem id="chdyf"></menuitem><strong id="chdyf"><menu id="chdyf"></menu></strong>

      <rt id="chdyf"><menu id="chdyf"></menu></rt>
      成人小说一区二区三区,伊人精品成人久久综合全集观看,久久HEZYO色综合,中文字幕精品人妻熟女,影音先锋成人网站,我要看免费一级毛片,中国女人做爰A片,中文字幕av久久爽Av

      js使用transition效果實(shí)現(xiàn)無縫滾動(dòng)

      2020-9-7    seo達(dá)人

      前言

      無縫輪播一直是面試的熱門題目,而大部分答案都是復(fù)制第一張到最后。誠然,這種方法是非常標(biāo)準(zhǔn),那么有沒有另類一點(diǎn)的方法呢?

      第一種方法是需要把所有圖片一張張擺好,然后慢慢移動(dòng)的,

      但是我能不能直接不擺就硬移動(dòng)呢?

      如果你使用過vue的transition,我們是可以通過給每一張圖片來添加入場(chǎng)動(dòng)畫和離場(chǎng)動(dòng)畫來模擬這個(gè)移動(dòng)

      • 進(jìn)場(chǎng)動(dòng)畫就是從最右側(cè)到屏幕中央
      • 出場(chǎng)動(dòng)畫是從屏幕中央到左側(cè)移出

      這樣看起來的效果就是圖片從右邊一直往左移動(dòng),但是這個(gè)不一樣的地方是,我們每一個(gè)元素都有這個(gè)進(jìn)場(chǎng)動(dòng)畫和離場(chǎng)動(dòng)畫,我們根本不用關(guān)心它是第幾個(gè)元素,你只管輪播就是。

      如果不用vue呢?

      很簡(jiǎn)單,我們自己實(shí)現(xiàn)一個(gè)transtition的效果就好啦,主要做的是以下兩點(diǎn)

      • 元素顯示的時(shí)候,即display屬性不為none的時(shí)候,添加xx-enter-active動(dòng)畫
      • 元素消失的時(shí)候,先添加動(dòng)畫xx-leave-active, 注意要讓動(dòng)畫播完才消失
       function hide(el){
           el.className = el.className.replace(' slide-enter-active','')
           el.className += ' slide-leave-active' el.addEventListener('animationend',animationEvent)
       } function animationEvent(e){
           e.target.className = e.target.className.replace(' slide-leave-active','')
           e.target.style.display = 'none' e.target.removeEventListener('animationend',animationEvent)
       } function show(el){
           el.style.display = 'flex' el.className += ' slide-enter-active' }

      這里我們使用了animationend來監(jiān)聽動(dòng)畫結(jié)束,注意這里每次從新添加類的時(shí)候需要重新添加監(jiān)聽器,不然會(huì)無法監(jiān)聽。如果不使用這個(gè)方法你可以使用定時(shí)器的方式來移除leave-active類。

       function hide(el){
           el.className = el.className.replace(' slide-enter-active','') 
      

      el.className += ' slide-leave-active' setTimeout(()=>

      { //動(dòng)畫結(jié)束后清除class el.className = el.className.replace(' slide-leave-active','')

      el.style.display = 'none' }, ANIMATION_TIME) //這個(gè)ANIMATION_TIME為你在css中動(dòng)畫執(zhí)行的時(shí)間 }

      那么,動(dòng)畫怎么寫呢?

       .slide-enter-active{ position: absolute; animation: slideIn ease .5s forwards;
       } .slide-leave-active{ position: absolute; animation: slideOut ease .5s forwards;
       } @keyframes slideIn {
           0%{ transform: translateX(100%);
           }
           100%{ transform: translateX(0);
           }
       } @keyframes slideOut {
           0%{ transform: translateX(0);
           }
           100%{ transform: translateX(-100%);
           }
       }

      需要注意的是這里的 forwards屬性,這個(gè)屬性表示你的元素狀態(tài)將保持動(dòng)畫后的狀態(tài),如果不設(shè)置的話,動(dòng)畫跑完一遍,你的元素本來執(zhí)行了離開動(dòng)畫,執(zhí)行完以后會(huì)回來中央位置杵著。這個(gè)時(shí)候你會(huì)問了,上面的代碼不是寫了,動(dòng)畫執(zhí)行完就隱藏元素嗎?

      如果你使用上面的setTimeout來命令元素執(zhí)行完動(dòng)畫后消失,那么可能會(huì)有一瞬間的閃爍,因?yàn)閷?shí)際業(yè)務(wù)中,你的代碼可能比較復(fù)雜,setTimeout沒法在那么精準(zhǔn)的時(shí)間內(nèi)執(zhí)行。保險(xiǎn)起見,就讓元素保持動(dòng)畫離開的最后狀態(tài),即translateX(-100%)。此時(shí)元素已經(jīng)在屏幕外了,不用關(guān)心它的表現(xiàn)了

      輪播邏輯怎么寫?

      很簡(jiǎn)單,我們進(jìn)一個(gè)新元素的時(shí)候同時(shí)移除舊元素即可,兩者同時(shí)執(zhí)行進(jìn)場(chǎng)和離場(chǎng)動(dòng)畫即可。

       function autoPlay(){
           setTimeout(()=>{
               toggleShow(新元素, 舊元素) this.autoPlay()
           },DURATION) //DURATION為動(dòng)畫間隔時(shí)間 } function toggleShow(newE,oldE){ //舊ele和新ele同時(shí)動(dòng)畫 hide(oldE)
           show(newE)
       }

      藍(lán)藍(lán)設(shè)計(jì)www.wtxcl.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 久久无码无码久久综合综合| 亚洲最大成人| 一区二区三区av| 封丘县| 国产精品国产自线拍免费| 91免费在线| 青青草无码| 国产AV无码专区亚洲AV桃花庵| 国产在线拍揄自揄拍无码男男| 久操视频免费| 久久 午夜福利 张柏芝| 色色午夜天| 亚洲久av| 亚洲综合日韩久久成人AV| 欧美日韩国产亚洲人成| 亚洲第一成人无码A片| 彰化市| 精品 无码 国产观看| 无码人妻精品一区二区三区温州| 超碰免费在线| 无码精品人妻一区二区三区湄公河| 日韩AV中文字幕在线| 国产9 9在线 | 免费| 欧美三根一起进三p| A片丝袜| 耿马| 亚洲aⅴ无码日韩av无码网站| 在线视频免费看3| 日韩免费无码专区精品观看| 中文字幕亚洲在线观看| 亚洲色伦| 日韩小视频在线播放| 精品欧美高清vivoesosex| 日本亚洲一区二区| 性做久久久久久久免费观看| 高跟熟女中文字幕在线亚洲| 成人午夜激情网| 国产精品亚洲A∨天堂| 日韩AV高清无码| 欧美丰满少妇猛烈进入A片蜜桃| 99四虎在线视频播放|