原生JS實(shí)現(xiàn)平滑回到頂部組件
返回頂部組件是一種極其常見的網(wǎng)頁功能,需求簡單:頁面滾動(dòng)一定距離后,顯示返回頂部的按鈕,點(diǎn)擊該按鈕可以將滾動(dòng)條滾回至頁面開始的位置。
實(shí)現(xiàn)思路也很容易,只要改變document.documentElement.scrollTop或document.body.scrollTop的值即可。
本文拋棄所有加速減速的酷炫效果,回歸軟件的本質(zhì),提供一個(gè)最簡潔的實(shí)現(xiàn),只追求實(shí)用性,不追求所謂的用戶體驗(yàn),效果如下
由于思路跟代碼都很簡單,所以就直接貼出實(shí)現(xiàn)細(xì)節(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); } } };
調(diào)用方式:
<script> new BackTop(document.getElementById('backTop')) </script>
之所以寫這篇博客,弄這么個(gè)簡單的東西,有兩個(gè)方面的原因:
1)這段時(shí)間一直在手寫一些常見的簡單組件,這算是一個(gè)簡單中更簡單的一個(gè),為了讓這系列的博客更加完整,所以把這個(gè)組件補(bǔ)充了進(jìn)來;
2)我想表達(dá)自己在工作過程中的一個(gè)觀點(diǎn):就是不要過渡用用戶體驗(yàn)來裝飾你的軟件或者說產(chǎn)品,用戶體驗(yàn)這個(gè)東西說白了就是兩個(gè)詞,一個(gè)是好印象,第二個(gè)就是好玩,但這并不是產(chǎn)品開發(fā)運(yùn)營的最終目的,你把東西做的再漂亮,產(chǎn)品的核心價(jià)值和服務(wù)做的不夠的話,就算把返回頂部這種功能做成超級(jí)無敵的火箭也是徒勞無功的。做前端開發(fā),得鍛煉點(diǎn)控制產(chǎn)品經(jīng)理瞎提用戶體驗(yàn)功能的度,以這個(gè)組件來說,我認(rèn)為做加速或減速效果都是多余的,既增加開發(fā)時(shí)間,又耽誤用戶使用的時(shí)間,拋棄自己心中那點(diǎn)對技術(shù)玩弄的固執(zhí),可以讓自己的工作做的更加完美。
下面給大家分享幾種常用網(wǎng)頁返回頂部代碼
一、使用HTML的錨標(biāo)記最簡單了
但是唯一的缺點(diǎn)就是樣式不怎么樣,會(huì)顯示這個(gè)錨標(biāo)記。
<aname="top"id="top"></a>
放置位置在<body>標(biāo)簽之后隨便找個(gè)地方放都可以,只要靠近頂部即可。
頁面底部放置:
<ahref="#top"target="_self">返回頂部</a>
二、使用Javascript Scroll函數(shù)返回頂部
scrooll函數(shù)用來控制滾動(dòng)條的位置,有兩種很簡單的實(shí)現(xiàn)方式:
方式1(推薦:簡單方便):
<ahref="javascript:scroll(0,0)">返回頂部</a>
scroll第一個(gè)參數(shù)是水平位置,第二個(gè)參數(shù)是垂直位置,比如要想定位在垂直50像素處,改成scroll(0,50)就可以了。
方式2(注重效果:緩慢向上):
本方式是漸進(jìn)式返回頂部,要好看一些,代碼如下:
functionpageScroll() {window.scrollBy(0,-10);scrolldelay=setTimeout('pageScroll()',100);}<ahref="pageScroll();">返回頂部</a>
這樣就會(huì)動(dòng)態(tài)返回頂部,不過雖然返回到頂部但是代碼仍在運(yùn)行,還需要在pageScroll函數(shù)加一句給停止掉。
if(document.documentElement.scrollTop==0)clearTimeout(scrolldelay);
三、使用Onload加上scroll功能實(shí)現(xiàn)動(dòng)態(tài)返回頂部
首先在網(wǎng)頁body標(biāo)簽結(jié)束之前加上:
<divid="gotop">返回頂部</div>
2、再調(diào)用以下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');
這些可以放到網(wǎng)頁中中,也可以獨(dú)立存成一個(gè)js文件,比如gotop.js,再通過以下形式:
<scriptsrc="/js/gotop.js"type=text/javascript></script>
來調(diào)用,當(dāng)然了位置最好放在“返回頂部”標(biāo)簽的下面,該調(diào)用方法已假設(shè)文件路徑為JS,放在其它位置請根據(jù)實(shí)際修改。
相關(guān)文章
JS實(shí)現(xiàn)網(wǎng)頁游戲中滑塊響應(yīng)鼠標(biāo)點(diǎn)擊移動(dòng)效果
這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)頁游戲中滑塊響應(yīng)鼠標(biāo)點(diǎn)擊移動(dòng)效果,涉及JavaScript針對頁面鼠標(biāo)事件、滾動(dòng)事件及元素屬性等相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10JavaScript實(shí)現(xiàn)按照指定長度為數(shù)字前面補(bǔ)零輸出的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)按照指定長度為數(shù)字前面補(bǔ)零輸出的方法,實(shí)例分析了javascript操作數(shù)字補(bǔ)零的技巧,需要的朋友可以參考下2015-03-03一文秒懂JavaScript構(gòu)造函數(shù)、實(shí)例、原型對象以及原型鏈
這篇文章主要介紹了一文秒懂JavaScript構(gòu)造函數(shù)、實(shí)例、原型對象以及原型鏈的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08原生JS實(shí)現(xiàn)圖片網(wǎng)格式漸顯、漸隱效果
這篇文章主要介紹了原生JS實(shí)現(xiàn)圖片網(wǎng)格式漸顯、漸隱效果,需要的朋友可以參考下2017-06-06javascript跑馬燈抽獎(jiǎng)實(shí)例講解
這篇文章主要為大家介紹了javascript跑馬燈抽獎(jiǎng)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01詳解JavaScript基礎(chǔ)知識(shí)(JSON、Function對象、原型、引用類型)
這篇文章主要介紹了JavaScript基礎(chǔ)知識(shí)(JSON、Function對象、原型、引用類型)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01