html - flexbox:打断长文本直到同胞适合容器

标签 html css flexbox

<分区>

我有两个灵活的 child 。我不知道那些 child 的大小,但我想要 .right (其中包含未知但数量有限的状态图标)不会中断,并且适合在线,而 .left子项(包含可能太长文本的标签)中断,以便 .right适合 child 。

在代码片段中,.left应该打破文本,以便 .right适合。这两个 child 都不应该溢出 .container .

我可以使用 word-break: break-word 来完成此操作在 .left ,但这是非标准的。我也可以使用 word-break: break-all , 但它不会首先尝试将单词换行(如 word-wrap 所做的那样),这是不可取的。 word-wrap: break-word什么都不做。

如前所述,我无法使用 width: calc( 100% - <right-width> ).left ,因为我不知道 .right 的宽度 child 。

注: child 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>

最佳答案

  • left 上的 min-width: 0 确保元素不会auto-resize 到父 flex 容器,并根据需要包裹。它可以用 overflow: hidden 代替,它有 same effect .

    如果留给 auto(默认 min-width flex 值),如果容器太大,它会溢出容器。 (感谢@Michael_B)

  • flex: 1(flex: 1 0 0flex-grow: 1; flex-shrink: 0; flex-basis: 0 的简写) 确保 left 增长并将 right 元素推到右边(感谢@LGSon)
  • right 具有初始 flex 值(flex: 0 1 auto),确保它不会断字并且不会增长到超过其内容大小, 要么。

    WTBS,如果它变得太大,它还需要 word-wrap: break-word; min-width: 0 同左。

注意:删除了不属于 OP 要求的 20px 高度。

.container {
  display: flex;
  width: 200px;
  background: pink; 
}

.left {
  background: rgba(0,255,0,.1);
  word-wrap: break-word;  
  min-width: 0;
  flex: 1;
}

.right {
  background: rgba(0,0,255,.1);
}
<div class="container">
  <div class="left">aaaaaaaa bbbbbbbbbbbbbbbbbbbb</div>
  <div class="right">cccccc ccccc</div>
</div>

关于html - flexbox:打断长文本直到同胞适合容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225684/

相关文章:

javascript - 从 api 中解析 php 中的 json 数组

html - IE10 CSS动画问题

javascript - Angular 和 ionic 问题

html - Flexbox 无法在 Firefox 中正常工作

javascript - 重置 td 的文本内容

javascript - 以最小/最大高度/宽度显示图像,同时在 IE8 中保持纵横比

css - 存储多个缩略图与使用 CSS

html - CSS - 我无法与 flex 对齐

css - Flexbox 布局和图像高度调整

html - 嵌入式溢出 :hidden only partially working