通过定位可以将元素放在页面中的任意位置。
position属性
使用position属性为元素开启定位,他的可选值有:
- static:默认值,元素不开启定位;
- relative:开启相对定位;
- absolute:开启绝对定位;
- fixed:开启固定定位;
- sticky:开启粘滞定位。
offset偏移量
在介绍定位前,首先我们要了解偏移量的概念,这里的偏移量可以简单理解为定位元素与定位位置的距离,偏移量有四个,分别是:top,bottom,left,right。top与bottom确定垂直方向上的位置,left与right确定水平方向上的位置,一般同一方向上只会设置一个。
relative相对定位
相对定位的特点:
- 相对定位不会使元素脱离文档流,元素开启相对定位后,其原位置仍保留;;
- 元素开启相对定位后,不设置偏移量则元素不会发生任何变化;
- 相对定位会提升元素的层级,使元素优先显示;
- 相对定位参照元素在文档流中的位置进行定位;
- 相对定位也不会改变元素的性质,即块元素仍是块元素,行内仍是行内。
absolute绝对定位
绝对定位的特点:
- 绝对定位会使元素脱离文档流;
- 开启绝对定位后,不设置偏移量元素位置不发生变化;
- 绝对定位也会提升元素的层级;
- 绝对定位相对于包含块进行定位;
- 绝对定位会改变元素的性质,行内变成块,块的高度被内容撑开。
包含块(containing block)
一般情况下,包含块就是当前元素最近的祖先块元素;
绝对定位下的包含块:指离他最近的且开启了定位的祖先块元素;如果所有祖先元素都没有开启定位,则根元素就是它的包含块,html(根元素)也叫初始包含块。
fixed 固定定位
固定定位也是一种绝对定位,其特点大部分和绝对定位一致,唯一不同的是:固定定位永远参照于浏览器的视口进行定位。
sticky 粘滞定位
特点与相对定位相似,不同的是,开启了粘滞定位后可以使元素在页面滚动时在某个位置固定;但是使用时必须指定top,right,bottom,left中的一个,且父元素高度必须大于sticky元素。