css中position属性定位:absolute与relative

maolai web前端css中position属性定位:absolute与relative已关闭评论141阅读模式

定位层是由html元素(标签)形成的一个特殊的box盒子。其重点在于“定位”,而html元素(标签)的定位方式由css来控制。通常情况下,html元素(标签)默认的定位方式叫作“静态定位”,存在于普通文档流中。而定位层是指的那些修改了定位方式的box,即非静态定位的box。

定位层的“定位”需要根据参照对象来实现定位的位置。定位层的主要作用是来实现小范围内容元素的排版和定位。

position规定html元素的定位类型

说明 参照对象
static 默认值,静态定位 无定位,html元素出现在默认文档流中,是默认的定位方式。
absolute 绝对定位 相对于非satic定位的第一个父元素进行定位
reletive 相对定位 相对自身默认文档流中的正常位置进行定位
fixed 绝对定位 相对于浏览器窗口进行定位(即使窗口是滚动的也不移动)

当html元素(标签)被设置成定位层之后,可以激活定位相关的属性设置

说明
top 规定定位元素的上边界与参照对象之间的距离偏移
right 规定定位元素的右边界与参照对象之间的距离偏移
bottom 规定定位元素的下边界与参照对象之间的距离偏移
left 规定定位元素的左边界与参照对象之间的距离偏移

这4个定位控制属性均可以使用负值。同方向有冲突时,则top、left优先。

position定位与float一样,也是css排版中非常重要的概念。position从字面意思上看就是制定块的位置。即块相对于其父块的位置和相对它自身应该在的位置。absolute绝对定位例子如下图:代码显示如左,效果图显示如右;

css中position属性定位:absolute与relative-图片2

上图总结:当将子块的position设置为absolue时,子块已经不再从属于父块,其左边框设置的距离是相对页面body的距离,而不是它的父块father的距离,因absolute绝对定位已经使元素脱离文档流。

如果div里有两个盒子,各独立占一行,当给盒子1设置position为absolute时,它就不再隶属于父块了,因此盒子2代替盒子1成了父块中的第一个盒子(即父块的最上面)。代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>position:absolute</title>
<style>
body {
margin: 20px;
font-size: 14px;
}
#father {
background-color: #377BE5;
border: 1px dashed #000;
width: 500px;
height: 500px;
}
#box {
background-color: #EBE482;
border: 1px dashed #000;
padding: 20px;
position: absolute;     /*absolute绝对对定位*/
left: 38px;            /*box的左边框距离页面左侧38px(即距离body左侧38px,不是距离它的父元素father);*/
top: 58px;            /*box的上边框距离页面顶部40px(即距离body顶部58px,不是距离它的父元素father)*/
}
#box2 {
background-color: #39EC6A;
border: 1px dashed #000;
padding: 20px;
}
</style>
</head>
<body>
<div id="father">
<div id="box">absolute</div>
<div id="box2">box2</div>
</div>
</body>
</html>

css中position属性定位:absolute与relative-图片3

当将块的position参数设置为relative时,与将其设置为absolute时完全不同,这时子块是相对于自身在父块的原先位置来进行定位的,如下:

#box {
background-color: #EBE482;
border: 1px dashed #000;
padding: 20px;
position: relative;       /*relative相对定位*/
left: 18px;              /*box的左边框距离它原来位置的18px*/
top: 38px;               /*box的上边框距离它原来位置的38px*/
}

将子块position属性设置为relative时,子块仍然属于基父块,只是相对于自己在父块中的原先位置有了移动改变。

z-index属性用于调整定位时重叠的上下位置,当块设置了position属性时,该值便可设置各块之间的重叠高低关系。默认值为0,没有单位。z-index的值允许设置负值。当值为负值时,定位层处于普通文档流之下,会被覆盖。

 
maolai
  • 本文由 maolai 发表于 2016年12月8日 08:11:22
  • 转载请务必保留本文链接:http://www.bokequ.com/130.html