前面说到,被设置了float的元素无法使用left、top、right、bottom等位置属性。
那么什么情况下可以用位置属性呢?
答案是:position
position
position:static; (默认值)
没有定位,元素出现在正常的流中,top, bottom, left, right, z-index 属性不生效。
这是position属性中,唯一不能定位的样式。
position:relative;
生成相对定位的元素,相对于其正常位置进行定位。
因为相对于元素原本位置(static)进行定位,所以无法使用z-index属性,只能在同平面上进行定位。如:top, bottom, left, right
position:absolute;
生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
元素的层叠通过"z-index"属性进行规定。
z-index
属性控制元素层级,数值越大,越往上突出,数值越小,越往下沉。
很多人不知道怎么灵活控制absolute属性,有时候加了absolute之后,布局就乱掉了。
实际上,absolute需要跟父布局配合使用。
将absolute布局的父级布局设置为position:relative;
之后,absolute布局基本会被控制在父布局之内,不用担心跑偏。
position:fixed;
生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed
属性是相对于浏览器窗口定位,所以不依赖父布局在什么位置。
在用absolute属性,担心受到父布局限制的时候,就可以用fixed属性。
position: inherit;
从父元素继承 position 属性的值。
如果需要跟父布局保持同样的position定位,就可以用inherit属性。
小结:
position样式 | 功能 | 支持定位属性 |
---|---|---|
static | 无定位 | 无 |
relative | 相对定位 | left、top、right、bottom |
absolute | 相对父布局(static除外)绝对定位 | left、top、right、bottom、z-index |
fixed | 相对浏览器绝对定位 | left、top、right、bottom、z-index |
inherit | 继承父布局position样式 | 试父布局情况而定 |
练习:试一试
<html>
<head>
<style type="text/css">
p.one
{
position:fixed;
top:30px;
right:5px;
}
div{
position:relative;
width:300px;
height:100px;
background-color:#ff0;
margin-top:100px;
margin-left:300px;
}
body{
border:5px solid red;
}
</style>
</head>
<body>
<p>这是body内容,红框以内是浏览器范围</p>
<div>
这是父布局,“更多的文本”是fixed样式,没有在这里面
<p class="one">这是fixed布局,相对浏览器定位。</p>
</div>
</body>
</html>
暂无评论