css absolute 定位和 fixed 定位

1,668 阅读2分钟

CSS 的元素有 5 种定位方式,分别是:

  • static
  • relative
  • absolute
  • fixed
  • sticky

其中,使用 static, relative 和 sticky 定位的元素,存在于正常的布局中;而使用 absolute 或 fixed 定位的元素,则会脱离正常布局,它们不再占据实际的空间,也不会对其他元素的位置产生影响。所以,absolute 和 fixed 这两个定位,又叫做绝对定位。如果把页面看作一块平地,页面上的元素是这片平地上的物体,那么脱离正常布局的元素就相当于被抬起来,脱离了地面。

absolute

使用 absolute 定位的元素,脱离了正常的布局,它原来的位置会被后续的非绝对定位元素替代,可以使用 top,right,bottom,left 等属性来控制它的具体位置。此时它会根据最近的、非 static 定位的祖先元素来计算具体的位置。比如,top: 10px,表示:将该元素置于距离其最近非 static 定位的祖先元素的顶部的 10px 处。

截屏2021-11-13 上午11.52.52.png

position: absolute; right: 10px 截屏2021-11-13 上午11.54.53.png

fixed

使用 fixed 定位的元素,和使用了 absolute 布局的元素类似:

  • 脱离了正常的布局
  • 原来的位置会被后续的非绝对定位元素替代
  • 可以使用 top, right, bottom, left 等属性进行定位

和 absolute 布局不同的是:

  • fixed 元素的位置,是相对于视图进行计算的。

比如,top: 10px,表示:将该元素置于距离视图顶部 10px 处。

屏幕录制2021-11-13 下午1.54.41.gif

例外

正常情况下,fixed 元素的位置,是相对于视图进行计算的。比如,top: 10px,表示:将该元素置于距离视图顶部 10px 处。但是,如果其祖先元素存在例如 transform 属性的话,那么 fixed 元素的位置,就会相对于那个使用了 transform 属性的元素。

截屏2021-11-13 下午12.41.25.png