第九章: 网页元素定位Position
position属性
- static:默认值,没有定位
- relative:相对定位
- absolute:绝对定位
- fixed:固定定位 (一般不用)
static没有定位,以标准流方式显示
relative设置相对定位的盒子会相对它原来的位置,通过指定偏移,到达新的位置。设置相对定位的盒子仍在标准流中,它对父级盒子和相邻的盒子都没有任何影响。
设置了position属性值为relative的网页元素,无论是在标准流中还是在浮动流中,都不会对它的父级元素和相邻元素有任何影响,它只针对自身原来的位置进行偏移。
absolute属性值 偏移设置: left、right、top、bottom
使用了绝对定位的元素以它最近的一个“已经定位”的“祖先元素” 为基准进行偏移。如果没有已经定位的祖先元素,那么会以浏览器窗口为基准进行定位。
绝对定位的元素从标准文档流中脱离,这意味着它们对其他元素的定位不会造成影响。
z-index属性
调整元素定位时重叠层的上下位置 z-index属性值:整数,默认值为0 设置了positon属性时,z-index属性可以设置各元素之间的重叠高低关系。 z-index值大的层位于其值小的层上方
网页中的元素都含有两个堆叠层级,一个是未设置绝对定位时所处的环境,此时z-index是0;另一个是设置绝对定位时所处的堆叠环境,此时层的位置由z-index的值确定。
改变设置绝对定位和没有设置绝对定位的层的上下堆叠顺序,只需调整绝对定位层的z-index值即可。
使用opacity:x或filter:alpha(opacity=x)方式设定网页元素的透明度。
练习:
//相对定位
<style type="text/css">
.box1,.box2,.box3{ width:100px; height:50px; border:#000 solid 1px;}
.box2{ position:relative; top:20px; left:35px;}
</style>
<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
</body>
//<title>绝对定位</title>
<style type="text/css">
.box1,.box2,.box3{ width:100px; height:50px; border:#000 solid 1px;}
.box2{ position:absolute; top:20px; left:40px;}
</style>
<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
</body>
//z-index对比
<style type="text/css">
*{ margin:0; padding:0;}
.main{ width:200px; height:170px; position:relative; border:#000 solid 2px;}
.box1{ width:100px; height:100px; background:#F00; position:absolute; top:20px; left:20px;}
.box2{ width:100px; height:100px; background:#0F0; position:absolute; top:40px; left:40px;}
.box3{ width:100px; height:100px; background:#00F; position:absolute; top:60px; left:60px;}
</style>
<body>
<div class="main">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>
</body>
// z-index对比
<style type="text/css">
*{ margin:0; padding:0;}
.main{ width:200px; height:170px; position:relative; border:#000 solid 2px;}
.box1{ width:100px; height:100px; background:#F00; position:absolute; top:20px; left:20px; z-index:1;}
.box2{ width:100px; height:100px; background:#0F0; position:absolute; top:40px; left:40px;}
.box3{ width:100px; height:100px; background:#00F; position:absolute; top:60px; left:60px;}
</style>
<body>
<div class="main">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>
</body>