position定位
我们常常需要使用定位模型达到布局的目的。
这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。
接下来介绍position的五种定位模型。
一、static自然模型
.box{
position:static;
}
static——静态定位、常规定位、自然定位;默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
二、relative相对定位模型
生成相对定位的元素,相对于其正常位置进行定位。
top/right/bottom/left 以及"z-index” 定位元素偏移量。
.box:nth-child(2){
position: relative;
top: -10px;//在原元素的上边减少10px
left: 10px;//在原元素的左边添加10px
border-color: red;
}
三、absolute绝对定位模型
1.absolute基础知识
.box{
position: absolute;
}
- 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素框从文档流完全删除。
详解:
1.绝对定位的元素的位置相对于最近的已定位祖先元素进行定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的 包含块,也就是html;
2.最近已定位祖先元素:可以是父元素,也可以是父元素的父元素,若直属父元素没有定位,会一直向上找,直到找到有定位的祖先元素;
3.最近的已定位祖先元素的要求:该定位必须是static定位以外的定位(可以是absolute、relative、fixed)。
- 元素的位置通过 “left”, “top”, “right” 以及 "bottom"属性进行规定。
- 使用absolute的元素的位置与文档流无关,不占据空间。元素绝对定位后生成块状元素,无论原来它在正常文档流中是什么类型的元素。
- 相对定位一般都是配合绝对定位元素使用。
例子:
1.不设置任何定位时
<!DOCTYPE html>
<html>
<head>
<title>position</title>
<style type="text/css">
*{
background: gray;}
.one{
height: 300px;
width: 300px;
background-color: yellow;
margin: 100px 100px;
}
.two{
height: 200px;
width: 200px;
background-color: blue;
margin: 100px;
}
.three{
height: 100px;
width: 100px;
background-color: red