定位布局
一. 定位布局
35.[HTML5第一季] 第27章 CSS传统布局[下]
Position属性
值 | 描述 |
---|---|
absolute |
生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
fixed |
生成绝对定位的元素,相对于浏览器窗口进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
relative |
生成相对定位的元素,相对于其正常位置进行定位。 因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 |
static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
inherit | 规定应该从父元素继承 position 属性的值。 |
//绝对定位,脱离文档流,以窗口文档左上角0,0 为起点
header {
position: absolute;
top: 100px;
left: 100px;
}
所谓脱离文档流的意思,就是本身这个元素在文档流是占位的。如果脱离了,就不占有文档的位置,好像浮在了空中一般,有了层次感。
由于绝对定位脱离了文档流,出现层次概念。那么每个元素到底在那一层,会不会冲突覆盖。
这时通过z-index 属性来判定它们的层次关系。
值 | 描述 |
---|---|
auto | 默认。堆叠顺序与父元素相等。 |
number | 设置元素的堆叠顺序。 |
//设置在100 层上
header {
z-index: 100;
}
//以窗口参考定位,脱离文档流,会随着滚动条滚动而滚动
header {
position: fixed;
top: 100px;
left: 100px;
}
//相对定位,不脱离文档流,占位偏移
header {
position: relative;
top: 100px;
left: 100px;
}
这三种分别都在各自的情况下使用,均比较常用。但还有一种情况,就是:
1.既要脱离文档流(这样元素之间不会相互冲突);
2.以父元素,比如body 或其他父元素为参考点(这样可以实现区域性绝对定位);
3.还必须是绝对定位。
//第一步,将需要设置参考点的父元素设置为相对,且不设置坐标
body {
/*此父元素设置一个没有Top和left的相对定位, 叫作设置参考点*/
position: relative;
}
//第二步,如果父元素设置了参考点,子元素的绝对定位将以它为基准
header {
position: absolute;
top: 0px;
left: 0px;
}
1.固定布局
//CSS 部分
body {
width: 960px;
margin: 0 auto;
position: relative;
}
header {
width: 960px;
height: 120px;
background-color: olive;
position: absolute;
top: 0;
left: 0;
}
aside {
width: 200px;
height: 500px;
background-color: purple;
position: absolute;
top: 120px;
left: 0;
}
section {
width: 760px;
height: 500px;
background-color: maroon;
position: absolute;
top: 120px;
/*left: 200px;*/
right: 0;
}
footer {
width: 960px;
height: 120px;
background-color: gray;
position: absolute;
top: 620px;
}