position
static:默认值。没有定位,元素出现在正常的流中。
relative:生成相对定位的元素,相对于其自身位置进行定位。
说明:元素仍然保持其未定位前的形状,它原本在文本流中所占的空间仍保留
fixed: 生成固定定位的元素,相对于浏览器窗口进行定位。
说明:给元素设置固定定位之后,元素原先在正常文档流中所占的空间会消失。
absolute: 生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位
说明:指绝对定位元素会根据有定位设置(除static定位)的父元素作为参照进行定位;如果父元素没有定位设置,那就继续向上找祖父元素,
看是否有定位设置,有的话就根据祖父元素定位,没有的话,那就继续向上找…….如果都没有,就根据窗口进行定位。
包含块:绝对定位元素参照的有定位设置的父元素我们称为包含块,包含块是绝对定位的基础,包含块就是为绝对定位元素提供坐标偏移和显示范围的参照物;
设置某个元素为包含块:给此元素添加relative,fixed,absolute都OK,推荐使用relative,因为不会影响元素在文本流中的显示;
总结元素绝对定位三部曲:
(1) 先确定绝对定位元素的包含块
(2) 设置元素绝对定位
(3) 定位的坐标位置
sticky(css3中新增的属性值): 粘性定位,该定位基于用户滚动的位置。
注意:父元素不能有overflow属性;需搭配top等属性;
说明:元素在浏览器范围内定位时就像 position:relative; 而当页面滚动超出目标区域时,它的定位效果就像 position:fixed,它会固定在目标位置
定位需要配合使用的属性
left 属性规定元素的左边缘偏移的大小。
right 属性规定元素的右边缘偏移的大小。
top 属性规定元素的顶部边缘偏移的大小。
bottom 属性规定元素的底部边缘偏移的大小。
属性值:
auto: 默认值。通过浏览器计算左边缘的位置。
%: 设置以包含元素的百分比计的左边位置。可使用负值。
length:使用 px、em 等单位设置元素的左边位置。可使用负值。
z-index
z-index : 属性设置元素的堆叠顺序,拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
属性值:
auto:默认值。
number:无单位的整数值,可为负数。
说明:
(1)此属性仅仅作用于position属性值为relative或absolute,fixed的对象。
(2)该属性设置一个定位元素沿z轴的位置,z轴定义为垂直延伸到显示区的轴,如果为正数,则离用户更近,为负数则表示离用户更远。