我們在很多網(wǎng)站比如新浪微博的右下角都能看到“返回頂部”的功能,那么它是如何實(shí)現(xiàn)的呢?
功能:
1、點(diǎn)擊“返回頂部”(Back to top)鏈接跳轉(zhuǎn)到頁面的頂部(一屏)
2、在較短的頁面中不顯示,而在多屏的長頁面會自動(dòng)顯示出來
3、支持IE8及其以上瀏覽器,Chrome和Safari等就更不必說了
4、不支持IE6(早該淘汰了)
這里介紹的是開源的lee-goToTop
使用方法:
demo.html
<!DOCTYPE html>
<html>
<head>
<title>返回頂部-Demo</title>
<link rel="stylesheet" type="text/css" href="css/to-top.css"/>
</head>
<body>
<p>向下拖動(dòng)滾動(dòng)條(進(jìn)入第二屏),右下角會出現(xiàn)“返回頂部”圖標(biāo)</p>
<p>Item 1</p>
<p>Item 2</p>
<p>Item 3</p>
<p>Item 4</p>
<p>Item 5</p>
<p>Item 6</p>
<p>Item 7</p>
<p>Item 8</p>
<p>中間部分自己加</p>
<p>Item 96</p>
<p>Item 97</p>
<p>Item 98</p>
<p>Item 99</p>
<p>Item 100</p>
<img src="images/to-top.png" id="toTop"/>
<script style="text/javascript" src="js/to-top.js"></script>
</body>
</html>
to-top.css
* html, * html body{
background-image:url(about:blank);
background-attachment:fixed;
}
#toTop{
position:fixed;
_position:absolute;
right:30px;
bottom:40px;
_top:expression(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-40);
cursor:pointer;
display:none;
}
to-top.js
/*!
author: 李進(jìn)
email: tjuking@gmail.com
blog: tjuking.iteye.com
time: 2012-12-06
*/
(function(win, doc){
//變量
var compatMode = doc.compatMode,
isChrome = win.navigator.userAgent.indexOf("Chrome") === -1 ? false : true,
scrollEle = compatMode === "BackCompat" || isChrome ? doc.body : doc.documentElement,
clientEle = compatMode === "BackCompat" ? doc.body : doc.documentElement,
toTopImg = doc.getElementById("toTop"),
rate = 0.6,
timeGap = 10;
//返回頂部圖標(biāo)的點(diǎn)擊響應(yīng)
toTopImg.onclick = function(){
var moveInterval = setInterval(moveScroll, timeGap);
function moveScroll(){
var scrollTop = scrollEle.scrollTop;
if(scrollTop === 0){
clearInterval(moveInterval);
return ;
}
scrollEle.scrollTop = scrollTop * rate;
}
};
//滾動(dòng)時(shí)判斷是否顯示返回頂部圖標(biāo)
win.onscroll = function(){
var display = toTopImg.style.display;
if(scrollEle.scrollTop > clientEle.clientHeight){
if(display !== "block"){
toTopImg.style.display = "block";
}
}else{
if(display !== "none"){
toTopImg.style.display = "none";
}
}
};
})(window, document);
lee-goToTop開源代碼下載地址:https://github.com/tjuking/lee-goToTop
可以在js文件中修改彈性值rate、timeGap以滿足定制化需求,例如:
rate = 0.8; //默認(rèn) rate = 0.6
注:這種方法采用的是原生javascript實(shí)現(xiàn)的,如果想使用jQuery,請看另一篇文章《jQuery實(shí)現(xiàn)“返回頂部”的功能(支持IE6) 》