javascript返回頂部效果(自寫代碼)

來源:互聯網
上載者:User

現在很多網站都用到了返回頂部的效果,當然懶的話也可以直接 a 網站連結到 #,這樣也可以達到效果。今天抽空用原生 javascript 寫了個,由於本人水平有限,如有問題請指出。
html 代碼複製代碼 代碼如下:<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>js-回到頂部</title>
<style type="text/css">
*{margin:0;padding:0;}
.wrapper{width:960px;margin-left:auto;margin-right:auto;}
p{margin:10px;line-height:30px;}
#top{position:fixed;right:130px;bottom:50px;background:gray;padding:5px;display:block;}
</style>
</head>
<body>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<p>“記事本”是一個用來建立簡單的文檔的基本的文字編輯器。“記事本”最常用來查看或編輯文本 (.txt) 檔案,但是許多使用者發現“記事本”是建立網頁的簡單工具。</p>
<p>因為“記事本”僅支援很基本的格式,所以您不能在需要保持純文字的文檔中偶爾儲存特殊格式。因為特殊字元或其他格式不能在所發布的網頁上顯示,否則可能導致錯誤,所以,在為網頁建立 HTML 文檔時它特別有用。</p>
<p>可以將記事本檔案儲存為 Unicode、ANSI、UTF-8 或高位在前的 Unicode 格式。當使用不同字元集的文檔時,這些格式可以向您提供更大的靈活性。</p>
<a href="javascript:;" id="top">回到頂部</a>
</body>
</html>
<script type="text/javascript" src="js/toTop.js"></script>
<script type="text/javascript">
window.onload = function(){
toTop('top',false);
}
</script>

toTop.js 代碼複製代碼 代碼如下://第一個參數是按鈕id;第二個參數是一個布爾值,true是一直顯示按鈕,false是當滾動距離不為0時,顯示按鈕
function toTop(id,show){
var oTop = document.getElementById(id);
var bShow = show;
if(!bShow){
oTop.style.display = 'none';
setTimeout(btnShow,50);
}
oTop.onclick = scrollToTop;
function scrollToTop(){
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var iSpeed = Math.floor(-scrollTop/2);
if(scrollTop <= 0){
if(!bShow){
oTop.style.display = 'none';
}
return;
}
document.documentElement.scrollTop = document.body.scrollTop = scrollTop + iSpeed;
setTimeout(arguments.callee,50);
}
function btnShow(){
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if(scrollTop <= 0 ){
oTop.style.display = 'none';
}else{
oTop.style.display = 'block';
}
setTimeout(arguments.callee,50);
}
}

注意
ie6 下 position:fixed 無效,具體相容請點擊瀏覽器的各種bug。另外以前寫過一篇css解決ie6下position:fixed失效,並不支援該效果。
PS:這是本人閑著無聊,通過自己所學的 javascript 知識,隨意寫的一些效果。

第二種方法
很多網頁在下方都會放置一個“返回頂部”按鈕,尤其是頁面底部沒有導航的網頁,這樣可以協助訪客重新找到導航或者重溫一遍廣告(想得真美)。隨著近幾年來 JavaScript 的應用日漸廣泛,滑動效果無處不在,於是我也跟跟風,將返回頂部功能做成了滑動效果。後來為了更貼合物理特徵, 改造做成了減速的滑動效果。

首先說一下原理吧,我們會擷取捲軸到頁面頂部的距離,然後上移一定的距離;再擷取捲軸到頁面頂部的距離,上移一定的距離(比上一次小一點);以此類推 ...
先上代碼吧: 複製代碼 代碼如下:<script type="text/javascript">
/**
* 回到頁面頂部
* @param acceleration 加速度
* @param time 時間間隔 (毫秒)
**/
function goTop(acceleration, time) {
acceleration = acceleration || 0.1;
time = time || 16;
var x1 = 0;
var y1 = 0;
var x2 = 0;
var y2 = 0;
var x3 = 0;
var y3 = 0;
if (document.documentElement) {
x1 = document.documentElement.scrollLeft || 0;
y1 = document.documentElement.scrollTop || 0;
}
if (document.body) {
x2 = document.body.scrollLeft || 0;
y2 = document.body.scrollTop || 0;
}
var x3 = window.scrollX || 0;
var y3 = window.scrollY || 0;
// 捲軸到頁面頂部的水平距離
var x = Math.max(x1, Math.max(x2, x3));
// 捲軸到頁面頂部的垂直距離
var y = Math.max(y1, Math.max(y2, y3));
// 滾動距離 = 目前距離 / 速度, 因為距離原來越小, 速度是大於 1 的數, 所以滾動距離會越來越小
var speed = 1 + acceleration;
window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
// 如果距離不為零, 繼續調用迭代本函數
if(x > 0 || y > 0) {
var invokeFunction = "goTop(" + acceleration + ", " + time + ")";
window.setTimeout(invokeFunction, time);
}
}
</script>

document.documentElement.scrollTop, document.body.scrollTop, window.scrollY 其實都是一樣的,但它們只在某些瀏覽器中起作用。至於那哪個在哪些瀏覽器起作用可以自己調試一下。
如何使用? 複製代碼 代碼如下:<a href="#" onclick="goTop();return false;">TOP</a>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.