html+javascript實現回到頂部操作

一.首先介紹常用的屬性:

HTML精確定位:scrollLeft,scrollWidth,clientWidth,offsetWidth:
scrollHeight: 獲取對象的滾動高度。
scrollLeft:設置或獲取位于對象左邊界和窗口中目前可見內容的最左端之間的距離
scrollTop:設置或獲取位于對象最頂端和窗口中可見內容的最頂端之間的距離
scrollWidth:獲取對象的滾動寬度
offsetHeight:獲取對象相對于版面或由父坐標 offsetParent 屬性指定的父坐標的高度
offsetLeft:獲取對象相對于版面或由 offsetParent 屬性指定的父坐標的計算左側位置
offsetTop:獲取對象相對于版面或由 offsetTop 屬性指定的父坐標的計算頂端位置
event.clientX 相對文檔的水平座標
event.clientY 相對文檔的垂直座標
event.offsetX 相對容器的水平坐標
event.offsetY 相對容器的垂直坐標
document.documentElement.scrollTop 垂直方向滾動的值
event.clientX+document.documentElement.scrollTop 相對文檔的水平座標+垂直方向滾動的量.
這里是JavaScript中建造遷移轉變代碼的常用屬性:
網頁可見區域寬: document.body.clientWidth;
網頁可見區域高: document.body.clientHeight;
網頁可見區域寬: document.body.offsetWidth (包含邊線的寬);
網頁可見區域高: document.body.offsetHeight (包含邊線的寬);
網頁正文全文寬: document.body.scrollWidth;
網頁正文全文高: document.body.scrollHeight;
網頁被卷去的高: document.body.scrollTop;
網頁被卷去的左: document.body.scrollLeft;
網頁正文項目組上: window.screenTop;
網頁正文項目組左: window.screenLeft;
屏幕辨別率的高: window.screen.height;
屏幕辨別率的寬: window.screen.width;
屏幕可用工作區高度: window.screen.availHeight;

qubie.png

1. offsetLeft

假設 obj 為某個 HTML 控件。
obj.offsetTop 指 obj 間隔上方或上層控件的地位,整型,單位像素。
obj.offsetLeft 指 obj 間隔左方或上層控件的地位,整型,單位像素。
obj.offsetWidth 指 obj 控件自身的寬度,整型,單位像素。
obj.offsetHeight 指 obj 控件自身的高度,整型,單位像素。
我們對前面提到的“上方或上層”與“左方或上層”控件作個申明。
例如:
<div id="tool">
<input type="button" value="提交">
<input type="button" value="重置">
</div>
“提交”按鈕的 offsetTop 指“提交”按鈕距“tool”層上邊框的間隔,因為距其上邊比來的是 “tool” 層的上邊框。
“重置”按鈕的 offsetTop 指“重置”按鈕距“tool”層上邊框的間隔,因為距其上邊比來的是 “tool” 層的上邊框。
“提交”按鈕的 offsetLeft 指“提交”按鈕距“tool”層左邊框的間隔,因為距其左邊比來的是 “tool” 層的左邊框。
“重置”按鈕的 offsetLeft 指“重置”按鈕距“提交”按鈕右邊框的間隔,因為距其左邊比來的是“提交”按鈕的右邊框。
以上屬性在 FireFox 中也有效。
另 外:我們這里所說的是指 HTML 控件的屬性值,并不是 document.body,document.body 的值在不合瀏覽器中有不合申明(實際上大多半景象是因為對 document.body 申明不合造成的,并不是因為對 offset 申明不合造成的),點擊這里查看不合點。

2. clientHeight
大師對 clientHeight 都沒有什么貳言,都認為是內容可視區域的高度,也就是說頁面瀏覽器中可以看到內容的這個區域的高度,一般是最后一個對象條以下到狀況欄以上的這個區域,與頁面內容無關。
offsetHeight
IE、Opera 認為 offsetHeight = clientHeight + 遷移轉變條 + 邊框。
NS、FF 認為 offsetHeight 是網頁內容實際高度,可以小于 clientHeight。
scrollHeight
IE、Opera 認為 scrollHeight 是網頁內容實際高度,可以小于 clientHeight。
NS、FF 認為 scrollHeight 是網頁內容高度,不過最小值是 clientHeight。
簡單地說
clientHeight 就是透過瀏覽器看內容的這個區域高度。
NS、 FF 認為 offsetHeight 和 scrollHeight 都是網頁內容高度,只不過當網頁內容高度小于便是 clientHeight 時,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 認為 offsetHeight 是可視區域 clientHeight 遷移轉變條加邊框。scrollHeight 則是網頁內容實際高度。
同理
clientWidth、offsetWidth 和 scrollWidth 的申明與上方雷同,只是把高度換成寬度即可。
然則
FF 在不合的 DOCTYPE 中對 clientHeight 的申明不合, xhtml 1 trasitional 中則不是如上申明的。其它瀏覽器則不存在此題目。
題目:scrollTop、scrollLeft、scrollWidth、scrollHeight

3. scrollLeft
scrollTop 是“卷”起來的高度值,示例:
<div style="width:100px;height:100px;background-color:#FF0000;overflow:hidden;" id="p">
<div style="width:50px;height:300px;background-color:#0000FF;" id="t">若是為 p 設置了 scrollTop,這些內容可能不會完全顯示。</div>
</div>
<script type="text/javascript">
var p = document.getElementById("p");
p.scrollTop = 10;
</script>
因為為外層元素 p 設置了 scrollTop,所以內層元素會向上卷。
scrollLeft 也是類似事理。
我們已經知道 offsetHeight 是自身元素的寬度。
而 scrollHeight 是內部元素的絕對寬度,包含內部元素的隱蔽的項目組。
上述中 p 的 scrollHeight 為 300,而 p 的 offsetHeight 為 100。
scrollWidth 也是類似事理。
IE 和 FireFox 周全支撐,而 Netscape 和 Opera 不支撐 scrollTop、scrollLeft(document.body 除外)。

4. clientLeft
返回對象的offsetLeft屬性值和到當前窗口左邊的真實值之間的間隔,可以懂得為邊框的長度

一向以來對offsetLeft,offsetTop,scrollLeft,scrollTop這幾個辦法很含混,花了一天的時候好好的進修了一下.得出了以下的成果:

1.offsetTop :

當前對象到其上級層頂部的間隔.

不克不及對其進行賦值.設置對象到頁面頂部的間隔請用style.top屬性.

2.offsetLeft :

當前對象到其上級層左邊的間隔.

不克不及對其進行賦值.設置對象到頁面左部的間隔請用style.left屬性.

3.offsetWidth :

當前對象的寬度.

與style.width屬性的差別在于:如對象的寬度設定值為百分比寬度,則無論頁面變大還是變小,style.width都返回此百分比,而offsetWidth則返回在不合頁面中對象的寬度值而不是百分比值

4.offsetHeight :

與style.height屬性的差別在于:如對象的寬度設定值為百分比高度,則無論頁面變大還是變小,style.height都返回此百分比,而offsetHeight則返回在不合頁面中對象的高度值而不是百分比值

**5. scrollLeft **
對象的最左邊到對象在當前窗口顯示的局限內的左邊的間隔.
便是在呈現了橫向遷移轉變條的景象下,遷移轉變條拉動的間隔.

6. scrollTop
對象的最頂部到對象在當前窗口顯示的局限內的頂邊的間隔.
便是在呈現了縱向遷移轉變條的景象下,遷移轉變條拉動的間隔.
我們這里說說四種瀏覽器對 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的申明,這里說的是 document.body,若是是 HTML 控件,則又有不合,點擊這里查看。
這四種瀏覽器分別為IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。
clientHeight
大師對 clientHeight 都沒有什么貳言,都認為是內容可視區域的高度,也就是說頁面瀏覽器中可以看到內容的這個區域的高度,一般是最后一個對象條以下到狀況欄以上的這個區域,與頁面內容無關。
offsetHeight
IE、Opera 認為 offsetHeight = clientHeight + 遷移轉變條 + 邊框。
NS、FF 認為 offsetHeight 是網頁內容實際高度,可以小于 clientHeight。
scrollHeight
IE、Opera 認為 scrollHeight 是網頁內容實際高度,可以小于 clientHeight。
NS、FF 認為 scrollHeight 是網頁內容高度,不過最小值是 clientHeight。
簡單地說
clientHeight 就是透過瀏覽器看內容的這個區域高度。
NS、 FF 認為 offsetHeight 和 scrollHeight 都是網頁內容高度,只不過當網頁內容高度小于便是 clientHeight 時,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 認為 offsetHeight 是可視區域 clientHeight 遷移轉變條加邊框。scrollHeight 則是網頁內容實際高度。
同理
clientWidth、offsetWidth 和 scrollWidth 的申明與上方雷同,只是把高度換成寬度即可。

二. 整體代碼:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #to_top{
                width:30px; 
                height:40px;
                padding:10px; 
                font:14px/20px arial; 
                text-align:center; 
                background-color:#9999AA;
                position:absolute; 
                cursor:pointer;
                color:#fff;
            }
        </style>
        <script type="text/javascript">
            window.onload = function(){
                var oTop = document.getElementById("to_top");
                var screenw = document.documentElement.clientWidth || document.body.clientWidth;//獲取可視區域寬度
                var screenh = document.documentElement.clientHeight || document.body.clientHeight;//獲取可視區域高度
                oTop.style.left = screenw - oTop.offsetWidth +"px";//確定按鈕距離屏幕可視區域左邊的位置
                oTop.style.top = screenh - oTop.offsetHeight + "px";
                window.onscroll = function(){
                    var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;//獲取滾動條的滾動高度
                    oTop.style.top = screenh - oTop.offsetHeight + scrolltop +"px";
                }
                 oTop.onclick = function(){
                    document.documentElement.scrollTop = document.body.scrollTop =0;
                }
            }       
        </script>
    </head>
    <body style="height:1000px;">
        <h3 style="text-align: center;">回來了回來了回來了</h3>
        <div id="to_top">返回頂部</div>
    </body>
</html>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • HTML精確定位:scrollLeft,scrollWidth,clientWidth,offsetWidth s...
    brightranger閱讀 981評論 0 1
  • javascript的offset、client、scroll在使用過程中非常頻繁,接下來將對此進行一一介紹,需要...
    呱呱呱呱儂閱讀 1,049評論 0 0
  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,798評論 0 8
  • 今天玩 antd-mobile 碰到一個滾動條的問題:在 Tab 組件中使用多個 ListView ,當操作第一個...
    BertFu閱讀 30,624評論 7 9
  • 這幾天在陪兒子睡前閱讀,他讀他的故事書,我讀我的雜書。 最近在讀的就是《故事動力學》,一本如何教你如何寫好一個故事...
    船長辛巴達閱讀 745評論 0 1