1.
语法
position : sttic | bsolute | fixed | reltive
3.绝对定位(bsolute):将被赋予此定位方法的对象从文档流中拖出,使用left,right,
top,bottom等属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,即还是遵循HTML定位规则的,则依据body 对象左上角作为参考进行定位。绝对定位对象可层叠,层叠顺序可通过z-index 属性控制,z-index值为无单位的整数,大的在最上面,可以有负值(目前负值FF不支持)。
相对定位(reltive):对象不可层叠,依据left,right,top,bottom等属性在正常文档流中偏移自身位置。同样可以用z-index分层设计。
4.
(1)无定位设置,对象遵循HTML定位规则。一般是子级不会跑出父级外边去(子级没有使用负边界情况),子级一般是靠在父级左上角的,父级放
在最下层。
<html >
<hed>
<met http-equiv="Content-Type" content="text/html; chrset=gb2312" />
<title>无定位设定,对象遵循HTML定位规则</title>
<sty le type="text/css">
<!--
body {
mrgin:0px;
font-size: 9pt;
mrgin-top: 150px;css中的position属性
mrgin-left: 150px;
}
.box1 {
bckground-color: #33CCFF;
height: 200px;
width: 200px;
}
.box2 {
bckground-color: #66CC66;
height: 100px;
width: 100px;
}
-->
</sty le>
</hed>
<body>
<div clss="box1">
<div clss="box2"></div>
</div>
</body>
</html>
(2) 给设定了定位属性的对象指定left,right,top,bottom属性中的至少一个,不然定位不起作用。下
面实例中虽然给box2设定了定位属性position: bsolute,但是如果没有指定其中一个方位定位值top: 0px,定位是不发生作用的.
(3) 相对定位对象会占据它原来位置,在下面实例中,没有设定相对定位前,绿小盒子是在蓝盒子左上角的,之前也设定了绿小盒子的浮动方式为左浮动,可以看到文本环绕在它右边,但是后来用相对定位方法把绿小盒子重定位到外面去了,它还占着自己原来位置,因为你还可以看到文本流没有发生自动填补流动。因此这种直接的相对定位方法较少用,因为重定位对象后原来位置空了一块。相对定位常与绝对定位结合用,一般是给父级设定相对定位方式,子级元素就可以相对它进行方便的绝对定位了(请注意看后面的实例)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trnsitionl//EN" "/TR/xhtml1/DTD/xhtml1-trnsitionl.dtd">
<html xmlns="/1999/xhtml">
<hed>
<met http-equiv="Content-Type" content="text/html; chrset=gb2312" />
<title>相对定位对象会占据原有位置</title>
<style type="text/css">
<!--
body {
mrgin:0px;
font-size: 9pt;
line-height:12pt;
mrgin-top: 150px;
mrgin-left: 150px;
}
.box1 {
bckground-color: #3CF;
height: 200px;
width: 200px;
}
.box2 {
bckground-color: #6C6;
height: 100px;
width: 100px;
position: reltive;
flot: left;
top:-120px;
}
-
->
</style>
</hed>
<body>
<div clss="box1">
<div clss="box2"></div>
[相对定位对象会占据原有位置]现在绿小盒子是以子盒子形式存在蓝大盒子中,并设定了浮动方式为左浮动,所以这些文字能环绕在它右边,当绿小盒子用相对定位方法重定位到外边去了,文字还是不能流入它的区域,即左上角空白区域,那是因为绿盒子还占用着它原来位置。</div>
</body>
</html>
(4) 相对定位的对象不可以重叠。这一点也许比较难理解,先来这样理解吧,因为相对定位的对像没有
脱离文本流,就像两个还是住在同一层楼的人,任何时候,他们脚下踩的地方不可能被另一个人踩着的,如果可以就意味着两个人共享一块地方了。在下面的实例中,两个小盒子都刚好排在大盒子上方,所以在大盒子中输入的文字被挤到了下面。上面两个盒子我再用相对定位的方法对调了它们的位置,当前它们下方的空间其实不是自己的,也正因为它们没有重叠,所以盒子上方还是有两个盒子占用的空间,下面文字无法向上流动(我已对盒子设定了浮动属性的了,如果不设定,即使有空间文本也不会往上流,上面盒子是块级元素,会独立占据一行)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trnsitionl//EN" "/TR/xhtml1/DTD/xhtml1-trnsitionl.dtd">
<html xmlns="/1999/xhtml">
<hed>
<met http-equiv="Content-Type" content="text/html; chrset=gb2312" />
<title>相对定位对象不可层叠</title>
<style type="text/css">
<!--
body {
mrgin:0px;
font-size: 9pt;
line-height:12pt;
mrgin-top: 150px;
mrgin-left: 150px;
}
.box1 {
bckground-color: #33CCFF;
height: 200px;
width: 210px;
pdding:5px;
}
.box2 {
bckground-color: #66CC66;
height: 100px;
width: 100px;
position: reltive;
flot: left;
left:100px;
}
.box3 {
bckground-color: #CC99FF;
height: 100px;
width: 100px;
position: reltive;
flot: left;
right:100px;
}
-->
</style>
</hed>
<body>
<div clss="box1">
<div clss="box2">我家在左边</div>
<div clss="box3">我家在右边</div>
相对定位对象是在正常文本流中移动的,所以它的存在还是会影响文本流的布局,如果是绝对定位,这些文本应向上流入上方两个盒子的底部了。
</div>
</body>
</html>
(5)给包含块一个高度,或者说给定位对象的父级设定一个高度。不然也许显示的结果并不是你想要的。在下面的例子中,如果你本意要实现下面效果:把小盒子在父盒子中的左上角垂直往下偏移,上方留出一块区域,如果你删除了box1的高度会怎么样呢?自己测试一下吧。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trnsitionl//EN" "/TR/xhtml1/DTD/xhtml1-trnsitionl.dtd">
<html xmlns="/1999/xhtml">
<hed>
<met http-equiv="Content-Type" content="text/html; chrset=gb2312" />
<title>给包含块一个高度</title>
<style type="text/css">
<!--
body {
mrgin:0px;
font-size: 9pt;
line-height:12pt;
mrgin-top: 150px;
mrgin-left: 150px;
}
.box1 {
bckground-color: #33CCFF;
width: 200px;
height: 200px;/*如果不设定这个高度,也许显示的结果并不是你想要的*/ }
.box2 {
bckground-color: #CC99FF;
height: 100px;
width: 100px;
position:reltive;
bottom:-100px;
}
-->
</style>
</hed>
<body>
<div clss="box1">
<div clss="box2"></div>
</div>
</body>
</html>
(6)综合实例见证定位的魅力
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论