为何为.logo下的<a>设置position:absolute会导致父元素宽度变为0?
问题成因解析
.logo是div标签,属于块级元素,默认会自动撑满父元素宽度,这个行为的前提是它的子元素处于正常文档流中,子元素的存在会维持父元素的流式尺寸。- 给内部
<a>标签加position:absolute后,这个<a>会完全脱离正常文档流——它不再属于父元素的“内容”范畴,不再参与父元素的宽度计算。 - 此时
.logo没有其他正常流内的子元素,也没手动设置宽度,就会自动收缩到最小宽度(也就是0),视觉上就“消失”了;但绝对定位的<a>脱离了文档流,不受父元素尺寸限制,所以文本还能正常显示。 - 去掉
position:absolute后,<a>回到正常文档流,父元素.logo会重新以子元素为依据,恢复默认的100%父元素宽度。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

