offsetTop、offsetLeft、offsetWidth、offsetHeight、offsetParent、offsetrect

  offsetParent参考:

offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素(在标准兼容模式下为html元素;在怪异呈现模式下为body元素)的引用。 当容器元素的style.display 被设置为 "none"时(译注:IE和Opera除外),offsetParent属性 返回 null。

句法:

parentObj = element.offsetParent

变量:

· parentObj 是一个元素的引用,当前元素的偏移量在其中计算。

测试代码1:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Untitled Document</title>

<script type="text/javascript" language="JavaScript">

function offset_init(){

var pElement = document.getElementById("sonObj");

parentObj = pElement.offsetParent;

alert(parentObj.tagName);

}

</script>


</head>

<body onload="offset_init()">

<div id="parent">

             <p id="sonObj">测试OffsetParent属性</p>

         </div>

    </body>

</html>

 

 

 

 

测试结果:

Firefox3:"BODY"

Internet Explorer 7:"BODY"

Opera 9.51:"BODY"

Chrome 0.2:"BODY"

Safari 3:"BODY

 

测试代码3:

 

 

测试代码4:

 

 

 

测试代码2:

 

结论:

当某个元素的父元素进行了CSS定位时(absolute或者relative),则这个元素的offsetParent属性的取值为其父元素。更确切地说,这个元素的各种偏移量计算(offsetTop、offsetLeft等)的参照物为其父元素。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Untitled Document</title>

<style type="text/css">

#parent{

position:absolute;

                <!--position:relative;-->

left:25px;

top:188px;

border:1px solid black;

}

</style>

<script type="text/javascript" language="JavaScript">

function offset_init(){

var pElement = document.getElementById("sonObj");

parentObj = pElement.offsetParent;

alert(parentObj.tagName);

}

</script>

</head>

<body onload="offset_init()">

<div id="parent">div测试代码<p id="sonObj">测试OffsetParent属性</p></div>

 

</body>

</html>

 

测试结果:

Firefox3:"DIV"

Internet Explorer 7:"DIV"

Opera 9.51:"DIV"

Chrome 0.2:"DIV"

Safari 3:"DIV"

测试结果:

Firefox3:"BODY"

Internet Explorer 7:"BODY"

Opera 9.51:"BODY"

Chrome 0.2:"BODY"

Safari 3:"BODY"

 

结论:

当只有某个元素进行了CSS定位,其父元素及其DOM结构层次上都未进行CSS定位时,则这个元素的offsetParent属性的取值为HTMLBODYElement。更确切地说,这个元素的各种偏移量计算(offsetTop、offsetLeft等)的参照物为Body元素。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Untitled Document</title>

<style type="text/css">

#sonObj{

position:relative;

left:25px;

top:188px;

border:1px solid black;

}

</style>

<script type="text/javascript" language="JavaScript">

function offset_init(){

var pElement = document.getElementById("sonObj");

parentObj = pElement.offsetParent;

alert(parentObj.tagName);

}

</script>

</head>

<body onload="offset_init()">

<h1 id="Grandfather">

<div id="parent">

<p id="sonObj">测试OffsetParent属性</p>

</div>

</h1>

 

</body>

</html>

 

测试结果:

Firefox3:"H1"

Internet Explorer 7:"H1"

Opera 9.51:"H1"

Chrome 0.2:"H1"

Safari 3:"H1"

 

结论:

当某个元素及其父元素都未进行CSS定位时(absolute或者relative),则这个元素的offsetParent属性的取值为在DOM结构层次中距离其最近,并且已进行了CSS定位的元素。

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Untitled Document</title>

<style type="text/css">

#Grandfather{

position:relative;

left:25px;

top:188px;

border:1px solid black;

}

</style>

<script type="text/javascript" language="JavaScript">

function offset_init(){

var pElement = document.getElementById("sonObj");

parentObj = pElement.offsetParent;

alert(parentObj.tagName);

}

</script>

</head>

<body onload="offset_init()">

<h1 id="Grandfather">

<div id="parent">

<p id="sonObj">测试OffsetParent属性</p>

</div>

</h1>

 

</body>

</html>

 

结论:

当某个元素及其父元素都未进行CSS定位时,则这个元素的offsetParent属性的取值为根元素。更确切地说,这个元素的各种偏移量计算(offsetTop、offsetLeft等)的参照物为Body元素。(其实无论时标准兼容模式还是怪异模式,根元素都为Body元素)

1、offsetTop 是获得 HTML 元素距离上方或外层元素的位置,返回的是数字;

2、offsetLeft 是获得 HTML 元素距离左方或外层元素的位置,返回的是数字;


2、offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示的部分,也就是其实际占据的宽度,整型,单位像素。

 

3、obj.offsetHeight 指 obj 控件自身的绝对高度,不包括因 overflow 而未显示的部分,也就是其实际占据的高度,整型,单位像素。

格式:NewRectangle:=OffsetRect(Rectange,x,y);

说明:该函数是的作用是按照Rectange的形状复制一个矩形,矩形的位置由原矩形的位置和参数x,y来决定。参数x,y是新矩形相对原矩形移动的位置,当x大于零时,新矩形在原矩形的右边,当y大于零时,新增矩形在原矩形的下方;当参数小于零时,位置相反


top。postop。等等

1. top

此属性仅仅在对象的定位(position)属性被设置时可用。否则,此属性设置会被忽略。

< div  style ="background-color:red; position:absolute; width:100px; height:100px;" >

< style ="background-color:silver; position:absolute; top:-5px;" > 测试top </ p >

</ div >

上面是一个段落P包含在一个DIV内,可以看到P的top设置为-5px后,它的上边距超过了容器DIV的上边距,超过的这段距离就是设置的5px。

需要注意的是,DIV和P这一对包含元素,都需要设置position为absolute才能得到想要的结果,假如父元素不设置,则子元素的参照将是更上层定义过position的元素,直到整个文档;

2. posTop

posTop的数值其实和top是一样的,但区别在于,top固定了元素单位为px,而posTop只是一个数值(这一点可以通过alert("top="+id.style.top)和alert("posTop="+id.style.posTop)来证明),因此一般使用posTop来进行运算。

< div  style ="background-color:red; position:absolute; width:100px; height:100px;" >

< id ="test"  style ="background-color:silver; position:absolute;" > 测试posTop </ p >

</ div >

< script >
test.style.posTop 
=   15 + 8 ;
alert(
" top= " + test.style.top);
alert(
" posTop= " + test.style.posTop);
</ script >

无论你使用top或posTop来赋值,最后的结果都是一致的

3. scrollTop

< div  id ="container"  style ="background-color:silver; width:100px; height:100px; overflow:auto;" >
< style ="background-color:red;" >
别再做情人 做只猫 做只狗 不做情人 做只宠物至少可爱迷人 和你相交不浅无谓明日会被你憎
</ p >
</ div >

< script >
container.scrollTop 
=   12 ;
</ script >

这一段文本在这个100*100的DIV内无法完全显示,所以设置了overflow为auto,它会出现一个上下方向的滑动框,假如没有设置id.scrollTop属性的话,默认情况下滑块位置在顶端。而设置了scrollTop值为12后,滑块的位置改变了,默认显示是卷过了12个象素的文本。如果设置overflow为hidden,则将会无法显示顶部12个象素的文本。

注意设置方式是id.scrollTop,而不是id.style.scrollTop。

4. scrollHeight 与 offsetHeight

offsetHeight是自身元素的高度,scrollHeight是 自身元素的高度+隐藏元素的高度。

< div  id ="container"  style ="background-color:silver; width:100px; height:100px; overflow:auto;" >
< style ="background-color:red; height:250px; " >
别再做情人 做只猫 做只狗 不做情人 做只宠物至少可爱迷人 和你相交不浅无谓明日会被你憎
</ p >
</ div >

< script >
alert(container.offsetHeight);
alert(container.scrollHeight);
</ script >

将依次输出100,250。因为已经指定了元素的height为100px,所以offsetHeight始终为100px;内部元素为250px,而容器元素只有100px,那么还有150px的内容它无法显示出来,但它却是实际存在的,所以scrollHeight值为100+150=250。




你可能感兴趣的:(html,css,Opera,测试,firefox,Safari)