【问题标题】:css Flex fluid widthscss Flex 流体宽度
【发布时间】:2021-05-08 11:29:41
【问题描述】:

我有一个有点复杂的问题。我必须在 2 列中展示食谱的成分。一栏是配料数量和计量单位,右边是配料。đ

结构明智的一种成分得到 2 个 DIV-s,左右部分

.recipeIngredient {
  display: flex
}

.unit {
  flex: 1: border-right:1 px solid #666;
  padding-right: 3%;
  text-align: right;
}

.ingredient {
  flex: 2;
  padding-left: 3%;
  text-align: left
}
<p class='recipeIngredient'>
  <div class='unit'>1 kg</div>
  <div class='ingredient'>flour (it should be wholegrain type</div>
</p>
<p class='recipeIngredient'>
  <div class='unit'>2 pieces of big</div>
  <div class='ingredient'>tomatoe</div>
</p>

可以有很多行。

我用浮点数和宽度做了这个,但效果不好,所以我尝试使用 flex。在我的示例中,左列是 33% 宽度,而右列是两倍大小。这通常没问题。但有时我会在左栏中得到更长的线,有时在右栏中。

如果我在第一列中的所有行都很短,而右边的行更长,必须分成两行,我如何才能使宽度变得流畅,宽度比例会改变,只给出所需的空间左列还是右列?

这里的另一个问题是,如果两列的内容都太长,我想优先考虑左列,右列应该中断,而不是左列,因为如果列是这样的,它看起来很愚蠢:

最多 1 个 |全麦花
公斤

如果可能的话,我宁愿全麦花会破裂,而左侧会保持在一起。如果左侧有空间,则缩小列并为右侧留出更多空间。

我不确定这是否可能,因为我有基于行而不是基于列的单元格,并且所有单元格都应该根据整体进行调整,而不是单独调整,我希望所有成分对齐(左侧对齐右侧左对齐)。

我的代码还有另一个问题。如果我喜欢将成分垂直对齐到底部而不是顶部,这样它就会读取

最多 1 个 |
公斤        |全麦花

看起来更好。但是使用 flex 将其放在底部会使右侧单元格缩小到内容,因此顶部缺少分隔线。

PS - 也许不使用 CSS 网格会更好?但我想我的结构不是最适合它的,但它是谷歌智能卡所需要的。

【问题讨论】:

  • 老实说table 会是更好的布局方法。
  • 好的,我想即使没有表格 html 标签,我也可以使用表格?在 css 中显示:表?用table断词可以这样吗?

标签: css flexbox


【解决方案1】:

使用表:

section {
  display: table;
  table-layout: fixed;
  border: 1px solid;
  max-width: 200px;
}

.recipeIngredient {
  display: table-row;
}

.unit,
.ingredient {
  display: table-cell;
  outline: 1px solid;
  padding: 5px;
}

.unit {
  white-space: nowrap;
}
<section>
  <div class='recipeIngredient'>
    <div class='unit'>1 kg</div>
    <div class='ingredient'>flour (it should be wholegrain type</div>
  </div>
  <div class='recipeIngredient'>
    <div class='unit'>2 pieces of big</div>
    <div class='ingredient'>tomatoe</div>
  </div>
</section>

【讨论】:

  • 这是一个很好的解决方案!谢谢你。但是 nowrap 不可用,因为即使展开其他单元格,单元格也不会换行,所以在移动设备上它会向右滚动条。我只是希望左侧不会包装 IF POSSIBLE,因为现在有时使用固定的 withs 和 floats 这个词即使在不需要宽度设置为 33%(左列)的情况下也会中断。如果单元格上没有设置宽度,表格单元格如何响应内容?
  • @Jerry2 将其替换为最小宽度配置(例如:最小宽度:100px;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2011-11-12
  • 2011-12-22
  • 1970-01-01
  • 2014-10-28
相关资源
最近更新 更多