为何<body>与<nav>的父子样式关系未达预期?关于<a>布局的疑问
问题解答
首先明确结论:不会,<a>元素的位置会被设置的top:50%和left:40%影响,<nav>不存在所谓“浏览器无法识别的不确定属性”。
原因拆解:
<nav>是块级元素,默认布局规则下,它的宽度会自动填充父元素(<body>)的可用宽度,且你已经给它设置了明确的height:10em,所以它的尺寸是完全确定的。- 对于设置了
position:relative的<a>元素,它的包含块是父元素<nav>的内容框。根据CSS规则,百分比单位的top和left是相对于包含块的对应维度计算的:top:50%会基于<nav>的高度(10em)计算,即偏移5em;left:40%会基于<nav>的宽度(即<body>的可用宽度)计算,偏移宽度的40%。
- 即便没给
<body>设置CSS,浏览器默认样式会给<body>赋予明确的盒模型属性(比如默认margin,但不影响<nav>的宽度填充逻辑),所以<nav>的布局和尺寸都是确定的,不会出现“不确定属性”导致<a>的偏移规则失效。
内容的提问来源于stack exchange,提问作者tennis
相关产品推荐
相关产品推荐

