scrollTop 用法说明

下面的演示中,外层元素的高度值是200px,内层元素的高度值是300px。很明显,“外层元素中的内容”高过了“外层元素”本身.当向下拖动滚动条时,有部分内容会隐没在“外层元素的上边界”之外,scrollTop就等于这部分“不可见的内容”的高度。
演示:(拖动滚动条,可以看到scrollTop值的变化)
这些文字显示在内层元素中。
scrollTop值是:

这些文字显示在内层元素中。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

解释:
内层元素的高度值300px > 外层元素的高度值200px,因此“外层元素的内容”(也就是“内层元素”)无法完全显示,而外层元素把overflow设置为auto,因此外层元素的右侧会出现一个上下方向的滑动条
初始状态下,“内层元素的上边界”和“外层元素的上边界”重合,没有任何内容超过“外层元素的上边界”,此时scrollTop属性的值为0。
当向下拖动滚动条时,超过“外层元素的上边界”的内容会逐渐增多,scrollTop值就等于这些超出的部分。
当拖动滚动条到最底部时,“内层元素的下边界”和“外层元素的下边界”重合,超过“外层元素的上边界”的内容的高度=300px-200px=100px,这也就是此时的scrollTop值。
通过js代码来读取,写入scrollTop的值
注意:scrollTop的使用方式是element.scrollTop,而不是element.style.scrollTop
通过js代码来读取scrollTop的值
上面的演示实例中,其实已经用到了scrollTop的读取操作。具体来说就是,在拖动滚动条的过程中,会读取此时的scrollTop的值,并在下方文字中显示出来。
上面的演示实例的完整原码:

这些文字显示在内层元素中。

scrollTop值是:

var 外层元素_div = document.getElementById("外层元素");
外层元素_div.onscroll=读取scrollTop的值并显示出来;
////注册onscroll事件处理函数。当拖动滚动条时,会产生onscroll事件
var span_演示元素scrollTop的值 = document.getElementById("演示元素scrollTop的值");
//onscroll事件的处理函数
function 读取scrollTop的值并显示出来()
{span_演示元素scrollTop的值.innerHTML=外层元素_div.scrollTop;
//读取"外层元素"此时的scrollTop的值并显示出来
}
读取scrollTop的值并显示出来();
//页面加载完成后,执行一次此函数。显示最初的scrollTop值,此时的值为0

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

解释:
当拖动“外层元素的滚动条”时,会产生onscroll事件。为这个事件注册一个名为读取scrollTop的值并显示出来的处理函数
在读取scrollTop的值并显示出来这个事件处理函数中,通过外层元素_div.scrollTop得到“外层元素”当时的scrollTop的值,并显示在页面上。
通过js代码来设置scrollTop的值
对上面的演示例子作一些修改。添加功能:通过js语句来设置scrollTop的值
示例:
这些文字显示在内层元素中。
scrollTop值是:
把scrollTop设为50把scrollTop设为500
输入scrollTop的值:确定
上面的演示实例的完整原码:

这些文字显示在内层元素中。

scrollTop值是:

把scrollTop设为50
把scrollTop设为500

输入scrollTop的值:
确定

var div_外层元素A = document.getElementById("外层元素A");
div_外层元素A.onscroll=读取scrollTop的值并显示出来;
//注册onscroll事件处理函数。当拖动滚动条时,会产生onscroll事件
var span_外层元素A的scrollTop的值 = document.getElementById("外层元素A的scrollTop的值");
//onscroll事件的处理函数
function 读取scrollTop的值并显示出来()
{span_外层元素A的scrollTop的值.innerHTML=div_外层元素A.scrollTop;
//读取"外层元素"此时的scrollTop的值并显示出来
}
读取scrollTop的值并显示出来();
//页面加载完成后,执行一次此函数。显示最初的scrollTop值,此时的值为0
div_外层元素A.scrollTop = 10;
//通过js语句来设置scrollTop的值,本条语句会触发onscroll事件,使得"读取scrollTop的值并显示出来"函数执行一次。
function 设置scrollTop的值()
{ if("" != document.getElementById("输入scrollTop的值").value)
div_外层元素A.scrollTop = document.getElementById("输入scrollTop的值").value;
else alert("请输入一个数值");
}

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

解释:
形如div_外层元素A.scrollTop = 12345;的赋值语句会触发onscroll事件,使得读取scrollTop的值并显示出来函数执行一次
上一个例子中已经提到:当拖动滚动条到最底部时,scrollTop=300px-200px=100px,这是scrollTop能够取的最大值。当用更大的值赋给scrollTop时,scrollTop会自动把它转变为100。例如上面的“把scrollTop设为500”按钮,scrollTop会把500转变为100。
得到body元素的scrollTop
body元素的scrollTop是超出“浏览器窗口上边界”的内容的高度
当html文档头部包含有“文档类型声明”时,需要用document.documentElement.scrollTop获得正确的值,而document.body.scrollTop的值为0


代码如下:

<!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>

当html文档头部不包含任何“文档类型声明”时,需要用document.body.scrollTop获得正确的值,而document.documentElement.scrollTop的值为0
下面定义的get_scrollTop_of_body()方法可以处理这种差异


代码如下:

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;
}

(0)

相关推荐

  • jquery scrollTop方法根据滚动像素显示隐藏顶部导航条

    本文使用jquery的scrollTop方法监视页面垂直滚动像素,并根据像素隐藏或者显示顶部的导航条. 效果预览网址:http://www.keleyi.com/keleyi/phtml/scrolloversee.htm scrollTop的介绍: 语法 $(selector).scrollTop(offset) 参数 offset 描述 可选.规定相对滚动条顶部的偏移,以像素计. 定义和用法 scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置. scroll top offse

  • top、clientTop、scrollTop、offsetTop

    top.clientTop.scrollTop.offsetTop 图示说明如下: 51windows.Net var s = ""; s += "\r\n网页可见区域宽:"+ document.body.clientWidth; s += "\r\n网页可见区域高:"+ document.body.clientHeight; s += "\r\n网页可见区域宽:"+ document.body.offsetWidth +&q

  • js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • javascript scrollTop正解使用方法

    javascript scrollTop 获取滚动条相对于其顶部的偏移(如制作自动显示隐藏的"返回顶部"按钮).在实际应用中经常会遇到以下问题:document.documentElement.scrollTop在Chrome里总为0document.body.scrollTop 在IE和firefox里总为0 1.各浏览器下 window.pageYOffset/document.documentElement.scrollTop/document.body.scrollTop的差异

  • 关于window.pageYOffset和document.documentElement.scrollTop

    举个例子: Css:假定进行如下简单设置: html{height:1000px;} JS: 复制代码 代码如下: function(){ window.scrollBy(0,100); alert(window.pageYOffset); } Results: //点击一次后弹出:100;得出的是一个数值,read-only属性:value:Integer(整数),default:0; 附注:当滚动条到达页面最底部时,window.pageYOffset=1000-document.docum

  • 关于scrollLeft,scrollTop的浏览器兼容性测试

    今天在修改原群组弹窗的时候,发现弹窗在谷歌浏览器chrome下的位置跟在别的浏览器下不一样.逐一排查,肯定是在计算窗口位置的时候,少加了scrollTop这个值.在查看源代码的时候发现直接采用 document.documentElement.scrollTop这个,但在chrome下这个值为0. 在有文档声明的情况下,也就是第一行有个dtd声明,标准浏览器认识document.documentElement.scrollTop,可chrome竟然不认识这斯.在没有文档声明的情况下,chrome

  • jQuery动画效果animate和scrollTop结合使用实例

    CSS属性值是逐渐改变的,这样就可以创建动画效果.只有数字值可创建动画(比如 "margin:30px").字符串值无法创建动画(比如 "background-color:red"). 复制代码 代码如下: $('#shang').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);}); 上面的代码表示滚动条跳到0的位置,页面移动速度是800.结合scrollTop实用示例: 复制代码

  • jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>jQuery的位置

  • js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth   (包括边线的宽);网页可见区域高: document.body.offsetHeight  (包括边线的宽);网页正文全文宽: document.body.scrollWidth;网页正文全文高: document.body.scrollHeight;网页被卷去的高: documen

  • JS中完美兼容各大浏览器的scrolltop方法

    1.各浏览器下 scrollTop的差异 IE6/7/8/9/10: 对于没有doctype声明的页面里可以使用  document.body.scrollTop 来获取 scrollTop高度 : 对于有doctype声明的页面则可以使用 document.documentElement.scrollTop  : Safari: safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset : Firefox: 火狐等等相对标准些的浏览器就省心多了,直接

随机推荐