【发布时间】:2020-10-03 15:31:42
【问题描述】:
我正在尝试将一堆 div 并排放置,从左到右。所以我使用了一个方向设置为row的flexbox。
我希望这些 div 中的每一个都从里面的内容中导出它们的高度和宽度,因此我将它们的高度和宽度保留为默认值。
最后,我想使用 svg 作为背景。为此,我使用了一个网格容器并将 svg 和 div 放置在同一列和同一行中,正如 stackoverflow post 中所建议的那样。我将 svg 的高度和宽度设置为 100% 以确保它填满整个背景。
但是,当我将所有内容组合在一起时,div 的宽度设置不正确。 div 的高度似乎是由里面的内容设置的,但宽度似乎总是默认为300px。对于我的一生,我无法弄清楚这个宽度是如何计算的。如果内容比300px 更宽,那么一切都按预期工作。但是如果内容小于300px,则容器永远不会缩小以适应。
如何确保 div 始终缩小以适应?请参阅下面的代码示例:
.top {
padding: 20px;
display: flex;
flex-direction: row;
}
.grid-container {
background-color: red;
display: grid;
}
.svg {
grid-column: 1;
grid-row: 1;
width: 100%;
height: 100%;
}
.content {
grid-column: 1;
grid-row: 1;
font-size: 100px;
}
This div has calculated width 300px for some reason
<div class="top">
<div class="grid-container" key="1">
<svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none">
<polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" />
</svg>
<div class="content">
ab
</div>
</div>
<!-- more grid-containers -->
</div>
This works as expected
<div class="top">
<div class="grid-container">
<svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none">
<polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" />
</svg>
<div class="content">
abcdefghijkl
</div>
</div>
<!-- more grid-containers -->
</div>
【问题讨论】:
标签: html css svg flexbox css-grid