最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JS實現平滑回到頂部組件

 更新時間:2016年03月16日 09:13:58   作者:流云諸葛  
返回頂部組件是一種極其常見的網頁功能,需求簡單:頁面滾動一定距離后,顯示返回頂部的按鈕,點擊該按鈕可以將滾動條滾回至頁面開始的位置,接下來通過本文給大家介紹原生JS實現平滑回到頂部組件,需要的朋友參考下吧

返回頂部組件是一種極其常見的網頁功能,需求簡單:頁面滾動一定距離后,顯示返回頂部的按鈕,點擊該按鈕可以將滾動條滾回至頁面開始的位置。

實現思路也很容易,只要改變document.documentElement.scrollTop或document.body.scrollTop的值即可。

本文拋棄所有加速減速的酷炫效果,回歸軟件的本質,提供一個最簡潔的實現,只追求實用性,不追求所謂的用戶體驗,效果如下

由于思路跟代碼都很簡單,所以就直接貼出實現細節(jié)了:

var BackTop = function (domE,distance) {
if (!domE) return;
var _onscroll = window.onscroll,
_onclick = domE.onclick;
window.onscroll = throttle(function(){
typeof _onscroll === 'function' && _onscroll.apply(this, arguments);
toggleDomE();
},100);
domE.onclick = function(){
typeof _onclick === 'function' && _onclick.apply(this, arguments);
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
};
function toggleDomE(){
domE.style.display = (document.documentElement.scrollTop || document.body.scrollTop) > (distance || 500) ? 'block' : 'none';
}
function throttle(func, wait) {
var timer = null;
return function () {
var self = this, args = arguments;
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
return typeof func === 'function' && func.apply(self, args);
}, wait);
}
}
}; 

調用方式:

<script>
new BackTop(document.getElementById('backTop'))
</script> 

之所以寫這篇博客,弄這么個簡單的東西,有兩個方面的原因:

1)這段時間一直在手寫一些常見的簡單組件,這算是一個簡單中更簡單的一個,為了讓這系列的博客更加完整,所以把這個組件補充了進來;

2)我想表達自己在工作過程中的一個觀點:就是不要過渡用用戶體驗來裝飾你的軟件或者說產品,用戶體驗這個東西說白了就是兩個詞,一個是好印象,第二個就是好玩,但這并不是產品開發(fā)運營的最終目的,你把東西做的再漂亮,產品的核心價值和服務做的不夠的話,就算把返回頂部這種功能做成超級無敵的火箭也是徒勞無功的。做前端開發(fā),得鍛煉點控制產品經理瞎提用戶體驗功能的度,以這個組件來說,我認為做加速或減速效果都是多余的,既增加開發(fā)時間,又耽誤用戶使用的時間,拋棄自己心中那點對技術玩弄的固執(zhí),可以讓自己的工作做的更加完美。

下面給大家分享幾種常用網頁返回頂部代碼

一、使用HTML的錨標記最簡單了

但是唯一的缺點就是樣式不怎么樣,會顯示這個錨標記。

復制代碼 代碼如下:

<aname="top"id="top"></a>

放置位置在<body>標簽之后隨便找個地方放都可以,只要靠近頂部即可。

頁面底部放置:

復制代碼 代碼如下:

<ahref="#top"target="_self">返回頂部</a>

二、使用Javascript Scroll函數返回頂部

scrooll函數用來控制滾動條的位置,有兩種很簡單的實現方式:

方式1(推薦:簡單方便):

復制代碼 代碼如下:

<ahref="javascript:scroll(0,0)">返回頂部</a>

scroll第一個參數是水平位置,第二個參數是垂直位置,比如要想定位在垂直50像素處,改成scroll(0,50)就可以了。

方式2(注重效果:緩慢向上):

本方式是漸進式返回頂部,要好看一些,代碼如下:

functionpageScroll() {window.scrollBy(0,-10);scrolldelay=setTimeout('pageScroll()',100);}<ahref="pageScroll();">返回頂部</a>

這樣就會動態(tài)返回頂部,不過雖然返回到頂部但是代碼仍在運行,還需要在pageScroll函數加一句給停止掉。

if(document.documentElement.scrollTop==0)clearTimeout(scrolldelay);

三、使用Onload加上scroll功能實現動態(tài)返回頂部

首先在網頁body標簽結束之前加上:

<divid="gotop">返回頂部</div>

2、再調用以下JS腳本部分:

BackTop=function(btnId){varbtn=document.getElementById(btnId);vard=document.documentElement;window.onscroll=set;btn.onclick=function(){btn.style.display="none";window.onscroll=null;this.timer=setInterval(function(){d.scrollTop-=Math.ceil(d.scrollTop*0.1);if(d.scrollTop==0)clearInterval(btn.timer,window.onscroll=set);},10);};functionset(){btn.style.display=d.scrollTop?'block':"none"}};BackTop('gotop');

這些可以放到網頁中中,也可以獨立存成一個js文件,比如gotop.js,再通過以下形式:

<scriptsrc="/js/gotop.js"type=text/javascript></script>

來調用,當然了位置最好放在“返回頂部”標簽的下面,該調用方法已假設文件路徑為JS,放在其它位置請根據實際修改。

相關文章

  • js中跨域方法原理詳解

    js中跨域方法原理詳解

    這篇文章主要介紹了js中跨域方法原理詳解的相關資料,需要的朋友可以參考下
    2015-07-07
  • Ionic默認的Tabs模板使用實例

    Ionic默認的Tabs模板使用實例

    這篇文章主要為大家詳細介紹了Ionic默認的Tabs模板使用實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Layui表格行工具事件與數據回填方法

    Layui表格行工具事件與數據回填方法

    今天小編就為大家分享一篇Layui表格行工具事件與數據回填方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS實現計算小于非負數n的素數的數量算法示例

    JS實現計算小于非負數n的素數的數量算法示例

    這篇文章主要介紹了JS實現計算小于非負數n的素數的數量算法,可實現針對一定范圍內素數個數的統(tǒng)計功能,涉及javascript數值運算相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • JS實戰(zhàn)例子之實現自動打字機動效

    JS實戰(zhàn)例子之實現自動打字機動效

    什么是打字機效果呢?打字機效果即為文字逐個輸出,實際上就是一種Web動畫,下面這篇文章主要給大家介紹了關于JS實戰(zhàn)例子之實現自動打字機動效的相關資料,需要的朋友可以參考下
    2023-01-01
  • 深入理解Javascript中this的作用域

    深入理解Javascript中this的作用域

    這篇文章主要介紹了深入理解Javascript中this的作用域,本文用大量例子來深入探討this的作用域,需要的朋友可以參考下
    2014-08-08
  • 微信小程序wx:for和wx:for-item的用法詳解

    微信小程序wx:for和wx:for-item的用法詳解

    這篇文章主要介紹了微信小程序wx:for和wx:for-item的正確用法,wx:for是循環(huán)數組,wx:for-item即給列表賦別名,文中給大家列出來幾個錯誤用法,大家一起學習下
    2018-04-04
  • Javascript Memoizer淺析

    Javascript Memoizer淺析

    這篇文章主要介紹了Javascript Memoizer淺析,Memoizer貌似是一種緩存方法調用結果的功能,小編也沒有太懂,需要的朋友參考下吧
    2014-10-10
  • 與ClientWidth有關的一點資料

    與ClientWidth有關的一點資料

    與ClientWidth有關的一點資料...
    2006-08-08
  • Bootstrap模態(tài)框禁用空白處點擊關閉

    Bootstrap模態(tài)框禁用空白處點擊關閉

    這篇文章主要為大家詳細介紹了Bootstrap模態(tài)框禁用空白處點擊關閉的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論

海阳市| 张家川| 清流县| 内乡县| 东莞市| 贵阳市| 全州县| 靖宇县| 淮南市| 会东县| 房产| 勐海县| 怀化市| 义乌市| 庆云县| 石渠县| 驻马店市| 昌平区| 霍山县| 洛隆县| 兴和县| 宁强县| 双牌县| 漾濞| 营口市| 雷山县| 图们市| 平阴县| 资溪县| 巴林左旗| 林芝县| 宜城市| 永丰县| 渝中区| 麻阳| 阿坝县| 健康| 佛坪县| 合阳县| 柳河县| 锦州市|