久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      JavaScript仿淘寶回到頂部效果(代碼示例)

      本篇文章給大家?guī)?lái)的內(nèi)容是JavaScript仿淘寶回到頂部效果(代碼示例)。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

      JavaScript仿淘寶回到頂部效果(代碼示例)

      需求:當(dāng)滾動(dòng)條到一定位置時(shí)側(cè)邊欄固定在某個(gè)位置,再往下滑動(dòng)到某一位置時(shí)顯示回到頂部按鈕。點(diǎn)擊按鈕后頁(yè)面會(huì)動(dòng)態(tài)滑到頂部,速度由快到慢向上滑。

      思路:

      1、頁(yè)面加載完畢才能執(zhí)行js代碼

        可以將js代碼寫在最下邊(本次回頂示例是用的這種)

        想寫在上邊可以用下邊這兩種:

         ①window.onload = function() {…}

        ?、趙indow.addEventListener('load', function() {…})

      2、獲取需要用到的元素

      3、綁定滾動(dòng)事件 scroll

      當(dāng)用戶滾到banner模塊時(shí)使側(cè)邊欄變?yōu)楣潭顟B(tài)

      if(window.pageYOffset >= bannerTop) {    // window.pageYOffset 屏幕被滾上去的距離     sliderbar.style.position = 'fixed';   // 當(dāng)用戶滾到banner模塊時(shí)使側(cè)邊欄變?yōu)楣潭顟B(tài)     sliderbar.style.top = sliderbarTop + 'px';  } else {     sliderbar.style.position = 'absolute';     sliderbar.style.top = '300px'; }

      當(dāng)用戶滾到main模塊時(shí)顯示返回頂部按鈕

       if(window.pageYOffset >= mainTop) {    // 當(dāng)用戶滾到main模塊時(shí)顯示返回頂部按鈕      goBack.style.display = 'block';  } else {      goBack.style.display = 'none';  }

      4、綁定點(diǎn)擊事件 click

      點(diǎn)擊返回頂部按鈕后頁(yè)面會(huì)動(dòng)態(tài)滑到頂部,速度由快到慢向上滑動(dòng)

       sliderbar.addEventListener('click', function() {      animate(window, 0);  })

      5、關(guān)于動(dòng)畫函數(shù) animate(obj, target, callback)

      這里obj對(duì)象即是window;target目標(biāo)位置即是0;callback是回調(diào)函數(shù),沒(méi)傳參的話就可以忽略

      設(shè)置一個(gè)定時(shí)器 setInterval();

      聲明一個(gè)step作為步長(zhǎng)值,值為頂部位置到當(dāng)前滾動(dòng)條位置之差除以10(step會(huì)越來(lái)越小,滾動(dòng)速度也就越來(lái)越慢,實(shí)現(xiàn)了滾動(dòng)條的速度由快到慢的滑上去)

      var step = (target - window.pageYOffset) / 10;

      然而step并不總是整數(shù),當(dāng)step不是整數(shù)時(shí)可以讓滾動(dòng)條再往前走一丟丟。滾動(dòng)條可以上下滑動(dòng),所以step可能大于零也可能小于零。大于零向上取整,小于零向下取整

      step = step > 0 ? Math.ceil(step) : Math.floor(step);

      window.scroll(x, y) 滾動(dòng)到文檔特定位置,定時(shí)器每次調(diào)用函數(shù)都會(huì)往上滑一點(diǎn)

      window.scroll(0, window.pageYOffset + step);

      判斷動(dòng)畫是否執(zhí)行完畢,如果執(zhí)行完畢則關(guān)閉定時(shí)器 clearInterval();

      if(window.pageYOffset == target) {  // 當(dāng)頁(yè)面回到頂部后(即動(dòng)畫執(zhí)行完) 清除定時(shí)器     clearInterval(obj.timer);     //  判斷是否傳了回調(diào)函數(shù)     /* if(callback) {          callback();     } */     // 可以簡(jiǎn)寫為下邊這種。 &&是短路運(yùn)算符,存在callback(即第一個(gè)式子為true)時(shí)才會(huì)繼續(xù)執(zhí)行callback()     callback && callback(); }

      詳細(xì)代碼如下:

      <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>返回頂部效果</title>     <style>         .slider-bar {             position: absolute;             left: 47%;             top: 300px;             margin-left: 600px;             width: 45px;             height: 130px;             background-color: pink;             cursor: pointer;         }         .w {             width: 1100px;             margin: 10px auto;         }         .header {             height: 150px;             background-color: purple;         }         .banner {             height: 250px;             background-color: skyblue;         }         .main {             height: 1000px;             background-color: yellowgreen;         }         span {             display: none;             position: absolute;             bottom: 0;         }     </style> </head> <body>     <div>         <span>返回頂部</span>     </div>     <div class="header w">頭部區(qū)域</div>     <div class="banner w">banner區(qū)域</div>     <div class="main w">主體部分</div>      <script>         // querySelector() 方法返回匹配指定選擇器()的第一個(gè)元素,傳的必須是字符串         var sliderbar = document.querySelector('.slider-bar');         var banner = document.querySelector('.banner');         var bannerTop = banner.offsetTop; // banner模塊距離頂部的長(zhǎng)度         var sliderbarTop = sliderbar.offsetTop - bannerTop; // 側(cè)邊欄固定后距離頂部的長(zhǎng)度          var main = document.querySelector('.main');         var goBack = document.querySelector('.goBack');         var mainTop = main.offsetTop;  // main模塊距離頂部的長(zhǎng)度                  // scroll 屏幕發(fā)生滾動(dòng)事件時(shí)執(zhí)行         document.addEventListener('scroll', function() {             if(window.pageYOffset >= bannerTop) {    // window.pageYOffset 屏幕被滾上去的距離                 sliderbar.style.position = 'fixed';   // 當(dāng)用戶滾到banner模塊時(shí)使側(cè)邊欄變?yōu)楣潭顟B(tài)                 sliderbar.style.top = sliderbarTop + 'px';              } else {                 sliderbar.style.position = 'absolute';                 sliderbar.style.top = '300px';             }                          if(window.pageYOffset >= mainTop) {    // 當(dāng)用戶滾到main模塊時(shí)顯示返回頂部按鈕                 goBack.style.display = 'block';             } else {                 goBack.style.display = 'none';             }                      });         sliderbar.addEventListener('click', function() {             animate(window, 0);         })          /* 動(dòng)畫函數(shù):          *  obj 做動(dòng)畫的對(duì)象(這里就是指window)          *  target 目標(biāo)位置(頂部)          *  callback 回調(diào)函數(shù)(沒(méi)有傳參的話就不執(zhí)行)          */         function animate(obj, target, callback) {             clearInterval(obj.timer);  // 先清除定時(shí)器,保證只有一個(gè)定時(shí)器在執(zhí)行,以免出現(xiàn)bug             obj.timer = setInterval(function() {                 // window.pageYOffset距離頂部的距離(是負(fù)的)                 var step = (target - window.pageYOffset) / 10;  // step步長(zhǎng)(讓頁(yè)面速度逐漸變慢的滑動(dòng)上去)                 step = step > 0 ? Math.ceil(step) : Math.floor(step); // step并不總是整數(shù)。大于零向上取整,小于零向下取整                 if(window.pageYOffset == target) {  // 當(dāng)頁(yè)面回到頂部后(即動(dòng)畫執(zhí)行完) 清除定時(shí)器                     clearInterval(obj.timer);                     //  判斷是否傳了回調(diào)函數(shù)                     /* if(callback) {                          callback();                     } */                     // 可以簡(jiǎn)寫為下邊這種。 &&是短路運(yùn)算符,存在callback(即第一個(gè)式子為true)時(shí)才會(huì)繼續(xù)執(zhí)行callback()                     callback && callback();                 }                 // window.scroll(x, y) 滾動(dòng)到文檔特定位置                 window.scroll(0, window.pageYOffset + step);             }, 15);         }     </script> </body> </html>

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)