【发布时间】:2018-03-11 22:12:37
【问题描述】:
我有两个灵活的孩子。我不知道这些孩子的大小,但我希望 .right (其中包含未知但有限数量的例如状态图标)不会损坏并适合在线,而 .left 孩子(其中包含标签可能太长的文本)无法打破,以便 .right 孩子适合。
在 sn-p 中,.left 应该打破文本,以便 .right 适合。两个孩子都不应该溢出.container。
我可以通过在.left 上使用word-break: break-word 来完成此操作,但这是非标准的。我也可以使用word-break: break-all,但首先不会尝试在下一行换行(就像word-wrap 所做的那样),这是不可取的。 word-wrap: break-word 什么都不做。
如上所述,我不能在.left 上使用width: calc( 100% - <right-width> ),因为我不知道.right 孩子的宽度。
注意:孩子的height: 20px 只是为了看到父容器。这不是要求的一部分。
奖励:在示例中,.container 的宽度是已知的,但也可能未知(即它可能以某种方式继承它)。
.container {
display: flex;
width: 200px;
height: 40px;
background: pink;
}
.left {
background: rgba(0,255,0,.1);
height: 20px;
// word-break: break-word; // works in WebKit, but non-standard
word-wrap: break-word;
}
.right {
background: rgba(0,0,255,.1);
height: 20px;
}
<div class="container">
<div class="left">xoxoxoxoxoxoxoxoxoxoxoxoxoxoxox</div>
<div class="right">rarararara</div>
</div>
【问题讨论】:
-
对于您使用
word-break: break-all和word-break: break-word之间的区别,我有点困惑。两者似乎对我都有预期的效果。另外,考虑到它实际上比 flexbox 本身具有 更好 的支持,我不明白为什么它是非标准的... -
@Michael_B 我希望
.left文本换行而不是省略号。 @ObsidianAgeword-break: break-word在 FF 和 Edge 中 完全 是 not implemented,而word-break: break-all具有轻微但重要(且不受欢迎)的不同行为 (see the docs) -
是的,我明白了。这是我为潜在的简单解决方案而提出的一个选项。