CSS `position` 定位属性详解
背景:给 PaperMod 博客做「左侧悬浮目录」时,从 fixed 迁移到 sticky,系统梳理了 position 的完整体系。 一、一句话总纲 position 决定了一个元素"相对于谁、用什么规则来定位"。 CSS 里有 5 个值(其中 4 个常用)。它们最大的区别,就在两个问题: 参照物是谁 —— 相对自己?相对祖先?相对屏幕? 会不会脱离文档流 —— 原来的位置还占不占? 二、先理解前提:什么是「文档流」 网页元素默认从上到下、从左到右自然排列,像写字一样一行行排下来。 这个「自然的排列规则」就叫文档流(normal flow)。 默认情况(position: static),所有元素都待在文档流里,一个接一个。 position 的很多值,本质就是"让元素脱离这个自然流,然后相对某个参照物重新定位"。 三、五个值逐个拆解 1. static(默认值) .element { position: static; } 所有元素的默认状态,不写 position 就是它。 元素乖乖待在文档流里,按顺序排列。 top / left / right / bottom 这些偏移属性对它无效。 一句话:就正常排着,别动我。 2. relative(相对定位) .element { position: relative; top: 10px; left: 20px; } 相对它自己原来的位置偏移。 关键点 1:仍然占着原来的位置(不脱离文档流,坑还在)。 关键点 2:top: 10px = 从原位置往下挪 10px;left: 20px = 往右挪 20px。 一句话:我人挪了,但原来的座位还给我留着。 ...