offsetTop和scrollTop的区别
2010-05-11 23:25
113 查看
最近想写个组件,结果被这两个属性搞的有点晕,查了下文档和资料,对这两个属性总结如下:
一直以来对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.offsetParent :
当前对象的上级层对象.
注意.如果对象是包括在一个DIV中时,此DIV不会被当做是此对象的上级层,(即对象的上级层会跳过DIV对象)上级层是Table时则不会有问题.
利用这个属性,可以得到当前对象在不同大小的页面中的绝对位置.
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
得到绝对位置脚本代码
1function GetPosition(obj)
2
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
3
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var left = 0;
4
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var top = 0;
5
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
while(obj != document.body)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
8
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
left = obj.offsetLeft;
9
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
top = obj.offsetTop;
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
obj = obj.offsetParent;
12
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
alert("Left Is : " + left + "/r/n" + "Top Is : " + top);
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
6.scrollLeft :
对象的最左边到对象在当前窗口显示的范围内的左边的距离.
即是在出现了横向滚动条的情况下,滚动条拉动的距离.
7.scrollTop
对象的最顶部到对象在当前窗口显示的范围内的顶边的距离.
即是在出现了纵向滚动条的情况下,滚动条拉动的距离.
8.测试offsetTop和scrollTop的html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function test(){
var oIframe = document.getElementById("div1");
alert(oIframe.offsetTop);
alert(oIframe.scrollTop);
}
//-->
</SCRIPT>
</HEAD>
<BODY style="border:1px red solid;padding:20px;margin:0px;">
<div id="div1" style="border:1px blue solid;height:400px;width:200px;overflow:auto">
<iframe id="iframe1" src="http://www.baidu.com" width="400" height="500" style="border:1px red solid;" scrolling="no">
</iframe>
</div>
<input type="button" value="OK" onclick="test()"/>
</BODY>
</HTML>
<script type="text/javascript" ></script>
一直以来对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.offsetParent :
当前对象的上级层对象.
注意.如果对象是包括在一个DIV中时,此DIV不会被当做是此对象的上级层,(即对象的上级层会跳过DIV对象)上级层是Table时则不会有问题.
利用这个属性,可以得到当前对象在不同大小的页面中的绝对位置.
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
得到绝对位置脚本代码
1function GetPosition(obj)
2
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
3
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var left = 0;
4
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var top = 0;
5
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
while(obj != document.body)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
8
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
left = obj.offsetLeft;
9
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
top = obj.offsetTop;
10
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
obj = obj.offsetParent;
12
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
alert("Left Is : " + left + "/r/n" + "Top Is : " + top);
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
6.scrollLeft :
对象的最左边到对象在当前窗口显示的范围内的左边的距离.
即是在出现了横向滚动条的情况下,滚动条拉动的距离.
7.scrollTop
对象的最顶部到对象在当前窗口显示的范围内的顶边的距离.
即是在出现了纵向滚动条的情况下,滚动条拉动的距离.
8.测试offsetTop和scrollTop的html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function test(){
var oIframe = document.getElementById("div1");
alert(oIframe.offsetTop);
alert(oIframe.scrollTop);
}
//-->
</SCRIPT>
</HEAD>
<BODY style="border:1px red solid;padding:20px;margin:0px;">
<div id="div1" style="border:1px blue solid;height:400px;width:200px;overflow:auto">
<iframe id="iframe1" src="http://www.baidu.com" width="400" height="500" style="border:1px red solid;" scrolling="no">
</iframe>
</div>
<input type="button" value="OK" onclick="test()"/>
</BODY>
</HTML>
<script type="text/javascript" ></script>
相关文章推荐
- Javascript中的offsetHeight、clientHeight、scrollTop 、clientTop的区别
- e.pageX,e.clientX.e.screenX.offsetLeft,scrollTop事件的区别
- js之clientHeight、offsetHeight,scrollHeight,scrollTop的区别
- scrollTop和offsetTop的区别,scrollTopLeft和offsetLeft的区别
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
- 令人头疼的clientTop、scrollTop、offsetTop
- height、clientHeight、scrollHeight、offsetHeight的区别,和获取scrollTop的方法
- Js中 关于top、clientTop、scrollTop、offsetTop
- scrollTop clientTop offsetTop scrollHeight clientHeight clientWidth的区别及用法
- smoothScrollToPositionFromTop和smoothScrollToPosition的区别
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
- 图示offsetWidth clientWidth scrollWidth scrollTop scrollLeft等属性的细微区别
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版【转】
- Element.scrollTop以及documentElement与body之间的区别
- html中offsetTop、clientTop、scrollTop、offsetTop
- Top, clientTop, offsetTop,scrollTop的区别
- js中top、clientTop、scrollTop、offsetTop的区别
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
- 关于document.documentElement.scrollTop和document.body.scrollTop的区别