position属性
CSS的 position 属性设置元素的定位方式,为将要定位的元素定义定位规则。(摘自 MDN)
其默认值为static,当元素的position属性不为static就被称之为 定位元素。其包括相对定位元素、绝对定位元素、粘性定位元素三种类型。最后的粘性属性sticky还处在实验状态中。其余3种属性值如下:
- relative 为相对定位。relative元素依据自身的原始位置进行相对变化,其原始位置保留不会改变布局。和static一样不会脱离文档普通流(normal-flow)。 什么是文档普通流
- absolute 为绝对定位。absolute元素会递归查找该元素的祖先元素,如果最近的祖先元素position设置为relavite/absolute/fixed,则依据该祖先元素进行偏移。如果不存在包含上述属性的祖先元素,该元素的位置则由初始包含块(initial containing block)定位。absolute的元素会脱离普通流。
- fixed 为固定定位。fixed元素通过相对于屏幕视窗的位置来指定元素空间。fixed元素依然会脱离普通流。
说完理论,我们思考barelyfitz上的 案例。我们知道absolute会脱离普通流,那在使用中出现案例第五步中的遮盖问题。两个absolute定位的元素#div-1a、#div-1b将普通流中的#div-1c遮盖掉。作者使用float属性来解决这个问题。