如何设置 flex:auto 元素的子列表的宽度
P粉676588738
P粉676588738 2023-09-09 18:09:18
0
2
592

您好,我有一个 CSS 问题。 有两列,右 (B) 列的固定宽度为 100px,左 (A) 列必须填充剩余宽度。另外,在 A 列内,有一个水平添加的子组件列表。

问题是,当添加子组件时,A列的宽度变长,B列变低。

如何才能让添加子组件时,如果超过A列宽度,则添加到A列内的底线?

  • 当子元素数量较少时
  • 当子元素数量增加时(按原样)
  • 当子元素数量增加时(TO-BE)

P粉676588738
P粉676588738

全部回复(2)
P粉146080556

您可以使用显示网格来代替 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 之外的所有空间都将被第一个元素填充。

P粉419164700

在整个容器和 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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板