整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 返回頂部實例

          大家介紹如何通過 JS/CSS 實現網頁返回頂部效果。

          CSS 按鈕樣式:

          #myBtn {

          display: none; /* 默認隱藏 */

          position: fixed;

          bottom: 20px;

          right: 30px;

          z-index: 99;

          border: none;

          outline: none;

          background-color: red; /* 設置背景顏色,你可以設置自己想要的顏色或圖片 */

          color: white; /* 文本顏色 */

          cursor: pointer;

          padding: 15px;

          border-radius: 10px; /* 圓角 */

          }

          var topBtn = document.getElementById('top');
          // 獲取視窗高度
          var winHeight = document.documentElement.clientHeight;
          window.onscroll = function () {
              // 獲取頁面向上滾動距離,chrome瀏覽器識別document.body.scrollTop,而火狐識別document.documentElement.scrollTop,這里做了兼容處理
              var toTop = document.documentElement.scrollTop || document.body.scrollTop;
              // 如果滾動超過一屏,返回頂部按鈕出現,反之隱藏
              if(toTop>=winHeight){
                  topBtn.style.display = 'block';
              }else {
                  topBtn.style.display = 'none';
              }
          }
          topBtn.onclick=function () {
              var timer = setInterval(function () {
                  var toTop = document.documentElement.scrollTop || document.body.scrollTop;
                  // 判斷是否到達頂部,到達頂部停止滾動,沒到達頂部繼續滾動
                  if(toTop == 0){
                      clearInterval(timer);
                  }else {
                      // 設置滾動速度
                      var speed = Math.ceil(toTop/5);
                      // 頁面向上滾動
                      document.documentElement.scrollTop=document.body.scrollTop=toTop-speed;
                  }
              },50);
          }

          天發現index寫漏了一個功能,為了給用戶更好的體驗一般網站右邊都會提供一個返回頂部的按鈕,正常頁面載入時不顯示該按鈕,當我們往下移動網頁時這個按鈕就顯示出來了,點擊這個按鈕我們就可以快速的滾回到頂部位置(這里是滾動回去,2345中的是直接跳回頂部的,不怎么友好,而且返回按鈕一加載網頁就有了,都沒動何來的返回,這里明顯不合邏輯),我適當的改動了下,下面是功能演示。

          ?

          首先我們還是來寫HTML代碼,還是模仿2345來做的,提供了2個按鈕:留言板和回頂部,這里我用的很簡單,直接用一個div包裹了2個a標簽,分別在a標簽中嵌套了一個圖標和文字內容(用到了i標簽和em標簽)。

          <div class="Floating">
           <a href="javascript:;"><i class="fa fa-pencil-square"></i><em>留言板</em></a>
           <a href="javascript:;"><i class="fa fa-chevron-up"></i><em>回頂部</em></a>
          </div>
          

          接下來我們給DOM元素來寫樣式,寫樣式需要給點耐心,邊看邊調整,這樣才能獲取你想要的效果了,這里我用到的是position的fixed屬性:生成絕對定位的元素,相對于瀏覽器窗口進行定位(固定定位),然后給定一個z-index屬性讓他永遠放在其他元素上方。顏色切換我放在了a標簽,直接用:hover就可以實現,圖標和內容別忘了使用display: block;將其設置成塊級元素。

          .Floating{
           width:65px;
           position: fixed;
           z-index:600;
           right:20px;
           bottom: 280px; 
          }
          .Floating a{
           text-decoration: none;
           margin-bottom: 5px;
           display: block;
           opacity: 0.9;
           background-color: rgb(130,130,130);
          }
          .Floating a:hover{
           background-color:#33AAFF;
          }
          .Floating a i{
           font-size: 24px;
          }
          .Floating a i,.Floating a em{
           padding:4px;
           width:56px;
           height:24px;
           text-align: center;
           color:rgb(253, 252, 252);
           z-index:5;
           cursor: pointer;
           font-style: normal;
           display: block;
          }
          

          這樣我們就得到如下圖所示的內容樣式了,當鼠標放上去的時候背景就變成了藍色選中狀態,移出時恢復背景色即可。前面說了當頁面載入時“回頂部”按鈕是隱藏的,當移動后方才顯示的,所里這里我們可以v-show或者v-if來控制按鈕的隱藏功能,這里我們定義了一個v-show="backFlag",默認backFlag :false。

          ?

          接下來我們就要開始給按鈕添加事件了,我給“回頂部”添加一個@click="backTop"事件,我們在methods中實現backTop這個方法,既然是通過滾動來觸發事件的,所以我們在頁面載入時就應該對頁面進行滾動監聽,并指定事件觸發時要執行的函數showBtn,這樣當我們滾動頁面的時候就對應的觸發了showBtn方法,當滿足條件時顯示“回頂部”按鈕。

           // window對象表示瀏覽器窗口,監聽滾動事件(所有瀏覽器都支持window對象)
           mounted () {
           window.addEventListener('scroll', this.showBtn) //scroll 滾動事件
           },
          methods:{
           showBtn () { // 計算距離頂部的高度,當高度大于40顯示回頂部,小于40則隱藏(默認隱藏)
           /*獲取當前頁面滾動條縱坐標的位置
           IE9及以上:可以使用window.pageYOffset或者document.documentElement.scrollTop ,
           safari: window.pageYOffset 與document.body.scrollTop都可以
           Chrome:谷歌瀏覽器只認識document.body.scrollTop;*/
           let that = this
           let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
           that.scrollTop = scrollTop
           if (that.scrollTop > 40) {
           let that = this
           that.backFlag = true
           } else {
           that.backFlag = false
           }
          }
          

          這個應該很好理解吧,我把注釋都寫在代碼中了,主要思路就是獲取當前滾動條縱坐標的位置,當這個值大于40時就將backFlag改成true讓“回頂部”按鈕顯示出來即可,當當前滾動條縱坐標的位置小于40時再次隱藏“回頂部”按鈕。

          ?

          接著給“回頂部”按鈕添加點擊事件,在methods:{}中實現backTop()方法,這里為了有個移動的過程,我給事件添加了定時器,將當前滾動條的垂直位置減去每次移動的距離賦給當前滾動條縱坐標的位置,這樣就可以實現自動滾動的效果了,當移動到頂部時別忘了清除定時器(不然牛后面就沒法玩了,只要一移動就會自動滾回頂部了)。

           backTop(){ // 點擊返回頂部方法,計時器是為了過渡順滑
           let that = this
           let timer = setInterval(() => {
           let speed = Math.floor(-that.scrollTop /10) 
           //scrollTop獲取元素的滾動條的垂直位置,Math.floor() 向下取整
           document.documentElement.scrollTop = document.body.scrollTop = that.scrollTop + speed
           //document.documentElement.scrollTop 獲取當前頁面的滾動條縱坐標位置
           if (that.scrollTop === 0) {
           clearInterval(timer)
           }
           }, 20)
           },
          

          最后別忘了銷毀監聽事件,使用destroyed ()方法調用銷毀監聽事件,這樣當我們離開這個頁面的時候,便會調用這個函數移除監聽,釋放內存,到這里我們的功能就全部實現了,是不是效果不錯,有興趣的可以試試。


          主站蜘蛛池模板: 无码日韩人妻AV一区免费l | 日韩精品无码一区二区三区免费| 在线欧美精品一区二区三区 | 一区二区高清视频在线观看| 精品乱子伦一区二区三区| 国偷自产av一区二区三区| 精品国产一区AV天美传媒| 亚洲男人的天堂一区二区| 日韩人妻无码一区二区三区久久 | 精品日本一区二区三区在线观看 | 国产精品亚洲一区二区麻豆| 一区二区三区免费在线视频| 在线观看亚洲一区二区| 亚洲国产成人久久一区久久| 国产精品亚洲一区二区三区久久| 黑人大战亚洲人精品一区| 日本视频一区二区三区| 中文精品一区二区三区四区| 精品无码人妻一区二区三区品 | V一区无码内射国产| 麻豆精品人妻一区二区三区蜜桃| 国偷自产Av一区二区三区吞精 | 免费精品一区二区三区第35| 免费人人潮人人爽一区二区| 精品国产日韩一区三区| 毛片无码一区二区三区a片视频| 国产一区二区三区影院| 亚洲一区二区三区亚瑟| 91精品一区二区综合在线| 亚洲av无码一区二区三区观看| 久久精品亚洲一区二区三区浴池| 日韩精品无码一区二区三区不卡| 亚洲AV乱码一区二区三区林ゆな| 久久久久人妻精品一区蜜桃| 2022年亚洲午夜一区二区福利| 无码一区二区三区AV免费| 日韩一区在线视频| 久久se精品动漫一区二区三区| 亚洲制服丝袜一区二区三区| 暖暖免费高清日本一区二区三区| 一区二区视频在线免费观看|