绝对定位水平居中

绝对定位的元素不能通过 margin: 0 auto;实现水平居中,怎么办?

绝对定位水平居中:先让元素左边距位于父容器 50% 处,再通过负 margin-left(自身元素宽度的一半)向左偏移,实现水平居中

子元素是绝对定位(脱标),父元素无法根据子元素的高度来撑开自身高度,需要设置父元素的高度


定位的特性

绝对定位和固定定位的特性(与浮动类似):

1. 行内元素添加绝对定位或固定定位后,可以直接设置宽度和高度(正常情况行内元素无法设置宽高)。

2. 块级元素添加绝对定位或固定定位后,如果没有设置宽度和高度,默认大小由内容决定(正常情况块级元素宽度占满父元素)。

记忆技巧:元素添加绝对定位或固定定位后,会脱离文档流,表现得像"独立"的元素,不再受正常布局规则的限制。


脱离文档流的元素不会触发外边距塌陷

浮动元素、绝对定位元素、固定定位元素不会触发外边距塌陷(外边距合并)。

简单理解:因为这些元素已经"脱离"了正常的文档流,就像从队伍中站出来一样,自然不会再与队伍中的其他成员发生"拥挤"(外边距合并)的问题了。


绝对定位(固定定位)会完全压住盒子

浮动元素不同,它只会压住下面标准流的盒子,但不会压住盒子里面的文字(或图片)

而绝对定位(固定定位)会完全压住下面标准流的所有内容,包括文字和图片。

原因分析:浮动最初的设计目的就是为了实现文字环绕效果,所以文字会主动围绕浮动元素排列。而绝对定位/固定定位是为了让元素"悬浮"在页面上方,因此会遮挡住下方的所有内容。