我在React应用程序上遇到了各种小故障,奇怪的渲染工件等等,并且想知道从浏览器的角度定义维度的工作方式。
假设我有一个网格显示,其中有一个div
,它具有grid-template-columns:1fr auto1fr
和一个子div
,它具有跨越grid-columns:2/3
-换句话说,跨越在父网格的auto
区域中。
正如我所理解的,网格模板列中的值auto
定义了要调整大小以适应其内容的列。
现在让我们添加一个img
,将max-width
设置为100%
-换句话说,我们不希望超过父容器的大小。
但是,父容器的宽度是由auto
规则决定的--那么浏览器如何让孩子知道要占100%呢?
示例
null
.box {
display: grid;
grid-template-columns: 1fr auto 1fr;
background-color: lightblue;
}
.box>div {
border: 1px solid red;
grid-column: 2 / 3;
margin: 10px 10px 0px;
}
<div class="box">
<div style="">
<img src="https://via.placeholder.com/800" style="max-width:100%">
</div>
</div>
null
为了解释这一点,我将从一个更简化的示例开始,该示例将产生相同的输出:
null
<div style="display:inline-block">
<img src="https://via.placeholder.com/1000x100">
</div>
<div style="display:inline-block">
<img src="https://via.placeholder.com/1000x100" style="max-width:100%">
</div>
<div style="display:inline-block">
<!-- even a big explicit width specified won't change the behavior -->
<img src="https://via.placeholder.com/1000x100" style="wdith:2000px;max-width:100%">
</div>
<div style="display:inline-block">
<img src="https://via.placeholder.com/1000x100" style="width:100%">
</div>