【发布时间】:2018-09-04 15:24:29
【问题描述】:
考虑以下示例...
body {
margin: 0;
}
* {
box-sizing: border-box;
}
.parent {
min-height: 100vh;
width: 50vw;
margin: 0 auto;
border: 1px solid red;
display: flex;
align-items: center;
justify-content: center;
}
.child {
border: 1px solid blue;
width: 150%;
}
<div class="parent">
<div class="child">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Amet tellus cras adipiscing enim eu turpis. Neque aliquam vestibulum morbi blandit. Sem integer vitae justo eget magna.
</div>
</div>
...我希望孩子长到width:150% 并在左右方向上都超过其父级(因为它是水平居中的)。
为什么不会发生这种情况?
注意:我对来自官方或可靠来源的答案感兴趣,最好是找出任何提及行为的错误或规范以及任何可能的解决方法。
调试信息:在最新的 Chrome、Ubuntu 17.10 中体验到这一点。还没有测试过跨浏览器,会和我一样更新。
【问题讨论】:
-
为什么它会超越其父级?
-
@VXp 为什么不呢?
-
显然是默认行为。
-
你的问题的解决方法是使用
min-width而不是width,官方原因还不知道。 -
@TemaniAfif 因为您不希望容器包含比自身更大的东西。就能够理解布局而言,允许 默认 简直是疯了;它降低了您预测实际渲染大小的能力,使您能够了解每个正在渲染的对象的大小。