您好,我有一个 CSS 问题。 有两列,右 (B) 列的固定宽度为 100px,左 (A) 列必须填充剩余宽度。另外,在 A 列内,有一个水平添加的子组件列表。
问题是,当添加子组件时,A列的宽度变长,B列变低。
如何才能让添加子组件时,如果超过A列宽度,则添加到A列内的底线?
您可以使用显示网格来代替 Flex。使用网格,您可以定义项目是动态的还是静态的。
示例:
.main { display: grid; grid-template-columns: 1fr 100px; }
<div class="main"> <div class="dynamic-size"> I am dynamic in size </div> <div class="static-size"> I'll always be 100px </div> </div>
grid-template-columns 中的 1fr 代表一个可用空间,这意味着除了第二个元素的 100px 之外的所有空间都将被第一个元素填充。
在整个容器和 A 上都使用 flex-wrap,并将 A 框的宽度设置为 calc(100% - 100px)。
body { width: 100vw; padding: 0; margin: 0; color: white; } #flex { display: flex; background-color: grey; width: 100vw; height: fit-content; flex-wrap: wrap; } #a { width: calc(100% - 100px); height: fit-content; background-color: red; display: flex; flex-wrap: wrap; justify-content: space-around; align-items: center; } #a .x { width: 100px; margin: 10px; background-color: green; height: 200px; } #b { width: 100px; height: 500px; background-color: blue; }
<div id="flex"> <div id="a"> A <div class="x">X</div> <div class="x">X</div> <div class="x">X</div> </div> <div id="b"> B </div> </div>
您可以使用显示网格来代替 Flex。使用网格,您可以定义项目是动态的还是静态的。
示例:
grid-template-columns 中的 1fr 代表一个可用空间,这意味着除了第二个元素的 100px 之外的所有空间都将被第一个元素填充。
在整个容器和 A 上都使用 flex-wrap,并将 A 框的宽度设置为 calc(100% - 100px)。