<strike id="g3zqm"></strike>

      <cite id="g3zqm"></cite>

        <tr id="g3zqm"><center id="g3zqm"></center></tr>
        <pre id="g3zqm"><sup id="g3zqm"></sup></pre>
        <li id="g3zqm"></li>
      1. 少妇高潮激情一区二区三,免费av深夜在线观看,亚洲狼人久久伊人久久伊,久久精品人人做人人爽电影蜜月,黄色特级片一区二区三区,欧美日韩在线亚洲二区综二,极品少妇无套内射视频,日本极品少妇videossexhd

        js使用transition效果實現無縫滾動

        2020-9-7    seo達人

        前言

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

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

        但是我能不能直接不擺就硬移動呢?

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

        • 進場動畫就是從最右側到屏幕中央
        • 出場動畫是從屏幕中央到左側移出

        這樣看起來的效果就是圖片從右邊一直往左移動,但是這個不一樣的地方是,我們每一個元素都有這個進場動畫和離場動畫,我們根本不用關心它是第幾個元素,你只管輪播就是。

        如果不用vue呢?

        很簡單,我們自己實現一個transtition的效果就好啦,主要做的是以下兩點

        • 元素顯示的時候,即display屬性不為none的時候,添加xx-enter-active動畫
        • 元素消失的時候,先添加動畫xx-leave-active, 注意要讓動畫播完才消失
         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來監聽動畫結束,注意這里每次從新添加類的時候需要重新添加監聽器,不然會無法監聽。如果不使用這個方法你可以使用定時器的方式來移除leave-active類。

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

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

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

        el.style.display = 'none' }, ANIMATION_TIME) //這個ANIMATION_TIME為你在css中動畫執行的時間 }

        那么,動畫怎么寫呢?

         .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屬性,這個屬性表示你的元素狀態將保持動畫后的狀態,如果不設置的話,動畫跑完一遍,你的元素本來執行了離開動畫,執行完以后會回來中央位置杵著。這個時候你會問了,上面的代碼不是寫了,動畫執行完就隱藏元素嗎?

        如果你使用上面的setTimeout來命令元素執行完動畫后消失,那么可能會有一瞬間的閃爍,因為實際業務中,你的代碼可能比較復雜,setTimeout沒法在那么精準的時間內執行。保險起見,就讓元素保持動畫離開的最后狀態,即translateX(-100%)。此時元素已經在屏幕外了,不用關心它的表現了

        輪播邏輯怎么寫?

        很簡單,我們進一個新元素的時候同時移除舊元素即可,兩者同時執行進場和離場動畫即可。

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

        藍藍設計m.hengshangtqd.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

        日歷

        鏈接

        個人資料

        藍藍設計的小編 http://m.hengshangtqd.cn

        存檔

        主站蜘蛛池模板: 波多野结衣的av一区二区三区| 免费无码无遮挡裸体视频在线观看| 成年人尤物视频在线观看| av片免费播放| 免费无码专区毛片高潮喷水 | 一个人看的www视频在线播放| 加勒比东京热久久综合| 456亚洲人成高清在线| 国产精品入口麻豆| 97久久精品午夜一区二区| 欧美色图综合| 浴室人妻的情欲hd三级国产| 久草热久草热线频97精品| 国产午夜精品福利91| 国产激情综合五月久久| 久青草视频在线免费观看| 国产成AV人片久青草影院| 日韩城人网站| www.99r| 色97偷自拍亚洲综合图片| 久草福利资源站| 无码囯产精品一区二区免费| 漂亮的保姆hd完整版免费韩国| 亚洲香蕉中文日韩V日本| 国产在线精品一区二区在线观看 | 伊人成人免费在线视频| 亚洲精品人成网在线播放影院| 免费无码成人AV片在线| 狠狠躁夜夜躁人人爽天天5 | 无码日韩一区二区| 日韩欧国产精品一区综合无码| 东京热大乱w姦| 一本一道av中文字幕无码| 国产粉嫩美女一区二区三| 黑丝足交在线| 五月婷婷久久中文字幕| 无码喷水一区二区浪潮AV| 亚洲欧美日本国产专区一区| 狼友福利在线观看| 99久久国产成人免费网站| 国产精品久久久久影院色|