|
演示:(拖動滾動條,可以看到scrollTop值的變化)
這些文字顯示在內(nèi)層元素中。
scrollTop值是:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
解釋:
內(nèi)層元素的高度值300px > 外層元素的高度值200px,因此“外層元素的內(nèi)容”(也就是“內(nèi)層元素”)無法完全顯示,而外層元素把overflow設(shè)置為auto,因此外層元素的右側(cè)會出現(xiàn)一個上下方向的滑動條
初始狀態(tài)下,“內(nèi)層元素的上邊界”和“外層元素的上邊界”重合,沒有任何內(nèi)容超過“外層元素的上邊界”,此時scrollTop屬性的值為0。
當(dāng)向下拖動滾動條時,超過“外層元素的上邊界”的內(nèi)容會逐漸增多,scrollTop值就等于這些超出的部分。
當(dāng)拖動滾動條到最底部時,“內(nèi)層元素的下邊界”和“外層元素的下邊界”重合,超過“外層元素的上邊界”的內(nèi)容的高度=300px-200px=100px,這也就是此時的scrollTop值。
通過js代碼來讀取,寫入scrollTop的值
注意:scrollTop的使用方式是element.scrollTop,而不是element.style.scrollTop
通過js代碼來讀取scrollTop的值
上面的演示實例中,其實已經(jīng)用到了scrollTop的讀取操作。具體來說就是,在拖動滾動條的過程中,會讀取此時的scrollTop的值,并在下方文字中顯示出來。
上面的演示實例的完整原碼:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
解釋:
當(dāng)拖動“外層元素的滾動條”時,會產(chǎn)生onscroll事件。為這個事件注冊一個名為讀取scrollTop的值并顯示出來的處理函數(shù)
在讀取scrollTop的值并顯示出來這個事件處理函數(shù)中,通過外層元素_div.scrollTop得到“外層元素”當(dāng)時的scrollTop的值,并顯示在頁面上。
通過js代碼來設(shè)置scrollTop的值
對上面的演示例子作一些修改。添加功能:通過js語句來設(shè)置scrollTop的值
示例:
這些文字顯示在內(nèi)層元素中。
scrollTop值是:
把scrollTop設(shè)為50把scrollTop設(shè)為500
輸入scrollTop的值:確定
上面的演示實例的完整原碼:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
解釋:
形如div_外層元素A.scrollTop = 12345;的賦值語句會觸發(fā)onscroll事件,使得讀取scrollTop的值并顯示出來函數(shù)執(zhí)行一次
上一個例子中已經(jīng)提到:當(dāng)拖動滾動條到最底部時,scrollTop=300px-200px=100px,這是scrollTop能夠取的最大值。當(dāng)用更大的值賦給scrollTop時,scrollTop會自動把它轉(zhuǎn)變?yōu)?00。例如上面的“把scrollTop設(shè)為500”按鈕,scrollTop會把500轉(zhuǎn)變?yōu)?00。
得到body元素的scrollTop
body元素的scrollTop是超出“瀏覽器窗口上邊界”的內(nèi)容的高度
當(dāng)html文檔頭部包含有“文檔類型聲明”時,需要用document.documentElement.scrollTop獲得正確的值,而document.body.scrollTop的值為0
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script type="text/Javascript">
alert("document.documentElement.scrollTop:"+document.documentElement.scrollTop //"正確的值"
+"document.body.scrollTop:"+document.body.scrollTop //"值為0"
);
</script>
當(dāng)html文檔頭部不包含任何“文檔類型聲明”時,需要用document.body.scrollTop獲得正確的值,而document.documentElement.scrollTop的值為0
下面定義的get_scrollTop_of_body()方法可以處理這種差異
復(fù)制代碼 代碼如下:
function get_scrollTop_of_body(){
var scrollTop;
if(typeof window.pageYOffset != 'undefined'){
scrollTop = window.pageYOffset;
}
else
if(typeof document.compatMode != 'undefined' &&
document.compatMode != 'BackCompat'){
scrollTop = document.documentElement.scrollTop;
}
else
if(typeof document.body != 'undefined'){
scrollTop = document.body.scrollTop;
}
return scrollTop;
}
JavaScript技術(shù):scrollTop 用法說明,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。