CSS定位
定位基础
定位就是将盒子定在某一位置,定位=定位模式+位偏移。
定位模式和位偏移都属于属性
- 定位模式用于指定一个元素在文档中的定位方式
- 边偏移就是决定该元素的最终位置。
定位模式由position属性设置,属性值分为四个
| 属性 | 属性值 | 语义 |
|---|---|---|
| position | static | 静态定位 |
| relative | 相对定位 | |
| absolute | 绝对定位 | |
| fixed | 固定定位 | |
| sticky | 粘性定位 |
边偏移有四个属性 top left right bottom
| 属性 | 属性值示例 | 描述 |
|---|---|---|
| top | top: 50px; | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
| bottom | bottom: 50px; | 下端偏移量,定义元素相对于其父元素下边线的距离 |
| left | left: 50px; | 左端偏移量,定义元素相对于其父元素左边线的距离 |
| right | right: 50px | 右端偏移量,定义元素相对于其父元素右边线的距离 |
1 | 选择器 { |
「static定位」
static定位是元素的默认定位方式,无定位的意思,按照标准流的位置,平时很少用到这种
「relative定位」
相对定位
特点:
- 元素在移动位置时,相对于它原来的位置来移动的,移动位置时以自身位置为参考点
- 不会脱标,继续保留原来标准流的位置,后面盒子仍以标准流对待他
- 子绝父相
「absolute定位」
绝对定位
特点:
- 移动位置时相对它祖先元素来移动,如果没有祖先元素或者祖先元素没有添加定位,则以浏览器为准定位
- 如果祖先元素有定位(相对绝对固定),则以最近一级有定位的祖先元素为参考点
- 会脱标,不占有原来的位置
- 子绝父相
「fixed定位」
固定定位,是固定在浏览器可视区的位置,浏览器滚动时元素位置不改变
特点:
- 以浏览器可视窗口为参考点移动元素,与父元素无关,不随滚动条滚动
- 也会脱标,不占有原来的位置,可以看作时特殊的绝对定位
「sticky定位」
粘性定位,被认为是相对定位和固定定位的混合
特点:
- 以浏览器可视窗口为参照物(固定特点)
- 不会脱标,占有原来的位置(相对特点)
- 必须添加边偏移其中一个元素才有效
- 跟页面滚动搭配使用,兼容性差
「子绝父相」
子元素用绝对定位,父元素用相对定位。可以让子元素固定在父元素里面显示,父元素占有位置
「CSS小算法」
固定定位固定在版心右侧位置,多走版心宽度一半位置就可让固定定位盒子贴着版心右侧对齐了
- 让固定定位的盒子left:50%,走到版心一半的位置
- 让固定定位的盒子margin:left;版心宽度一半的距离
定位拓展
「定位叠放次序」
多个盒子使用定位时,可能会出现重叠,可通过z-index属性来控制盒子前后次序(z轴)
1 | 选择器{ |
- 属性值可以是正整数,负整数,或0。默认是auto,数值越大越靠上
- 若属性值相同按书写顺序,后来居上
- 数字不加单位
- 只有定位的盒子才有z-index 属性
「定位盒子垂直居中」
加了定位的盒子不能通过margin: 0 auto;水平居中,需要通过下面算法实现水平和垂直居中
- left: 50%;让盒子左侧移动到父级元素的水平中心位置
- margin-left: 100px; 让盒子向左移动自身宽度的一半
- 垂直居中同理
定位特殊性
「绝对定位和固定定位和浮动类似」
- 行内元素添加绝对或固定后,可以直接设置宽度和高度
- 块级元素添加后,如不设置宽度和高度,默认为内容大小
「脱标盒子不会引发外边距塌陷」
浮动元素,绝对定位,固定定位都不会触发外边距合并问题
「绝对固定定位会完全压住盒子」
- 浮动元素会压住标准流和盒子,但不会压住标准流盒子里面的文字图片
- 绝对和固定会压住盒子所有内容
- 浮动之所以不会压住文字,是因为浮动最初目的就是做文字环绕效果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 孤梭の个人博客!




