css - flex 方向的神秘行为 : column

标签 css flexbox

当我写这样的代码时,我知道文本不会中断。

.a {
  display: flex;
  border: 1px solid yellow;
}

.b {
  border: 1px solid green;
  overflow-wrap: break-word;
}
<div class="a">
  <div class="b">texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</div>
</div>

这个问题的原因是min-width: auto将 flex 元素的文本宽度设置为 min-width .因此,这个问题用min-width: 0解决了.

.a {
  display: flex;
  border: 1px solid yellow;
}

.b {
  border: 1px solid green;
  overflow-wrap: break-word;
  min-width: 0; /* add this code! */
}
<div class="a">
  <div class="b">texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</div>
</div>

接下来我写了这样一段代码。

然而,min-width该代码的一部分没有像我预期的那样工作,一个长词溢出了。这是一个在 flex-direction: row 没有发生的问题.这是什么原因?

为什么 min-width: 0 在 flex-direction: column 中不起作用?

.a {
  display: flex;
  flex-direction: column;
  border: 1px solid yellow;
  align-items: start;
}

.b {
  border: 1px solid green;
  overflow-wrap: break-word;
  min-width: 0;
}
<div class="a">
  <div class="b">texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</div>
</div>

最佳答案

对于flex-direction: row主轴水平横轴是< em>垂直。
对于 flex-direction: column,它们会切换,因此 ma​​in-axisverticalcross-axis水平,你知道的。

现在让我提醒你
justify-contentflex-growflex-shrinkflex-basis 属性适用于 主轴
align-items 适用于横轴

当您设置 align-items: start 时,您将覆盖默认的 align-items: stretch 并且您的 flex-item 可以采用任何大于 min-widthwidth(因为既没有指定 width 也没有指定 max-width)。

要实现所需的行为,只需删除 align-items: start;
min-width: 0 也可以安全删除,因为它什么都不做。

请看下面的片段:

.a {
  display: flex;
  flex-direction: column;
  border: 1px solid yellow;
  /* align-items: start; let's use default value instead */
}

.b {
  border: 1px solid green;
  overflow-wrap: break-word;
  /* min-width: 0; this does nothing */
}
<div class="a">
  <div class="b">texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</div>
</div>

关于css - flex 方向的神秘行为 : column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784320/

相关文章:

css - 如何解释 `flex-grow:0`?

css - 使用 flexbox 网格的 Bootstrap 4 砌体布局

html - 在 flex 容器中将搜索字段居中,同时将 Logo 保持在右侧?

css - 使 flexbox 换行倒置

html - CSS - 选择器 nth-child

html - 表单字段 : Title on top of the field?

html - CSS 媒体查询中的边距不符合预期

css - 定位应用于具有多个类的 div 的类

javascript - jEditable 输入框 CSS 样式

css - Flexbox 对齐内容与可变数量的元素不一致