文本溢出:省略号和弹性

Lor*_*con 8 html javascript css css3 flexbox

我有一个带有display: flex属性集的容器元素.一个孩子有固定的宽度(flex: 0 0 auto),另一个没有(flex: 1).灵活的孩子有一些其他的孩子:我希望这个容器(inner)根据父宽度剪辑其子元素.

我设法做到了这一点,但我也希望得到省略号溢出,以防内容被剪裁(子节点数不固定).

到目前为止这是我的代码:

.outer {
  border: 1px solid red;
  display: flex;
  width: 400px;
}

.inner {
  display: flex;
  min-width: 0;
  overflow: hidden;
  flex: 1;
  text-overflow: ellipsis;
}

.child {
  display: inline-block;
  white-space: nowrap;
  flex: 1;
  border: 1px solid blue;
}

.btn {
  border: 1px solid green;
  flex: 0 0 auto;
}
Run Code Online (Sandbox Code Playgroud)

住在这里:http://jsbin.com/niheyiwiya/edit?html,css,output

如何获得以下预期结果?(黑客欢迎 - 请css取悦!)

在此输入图像描述

Mic*_*l_B 5

您的布局存在一些问题:

  1. text-overflow: ellipsis仅适用于display: blockdisplay: inline-block容器。失败了,因为您已.inner设置为display: flex

  2. text-overflow: ellipsis必须包含white-space: nowrap在同一声明中。您的.inner规则中遗漏了它。

  3. 省略号适用于文本,而不适用于块级元素

尝试这个:

* {
  margin: 15px 1px
}
.outer {
  border: 1px solid red;
  display: flex;
  width: 400px;
}
.inner {
  /* display: flex */          /* removed */
  min-width: 0;
  overflow: hidden;
  flex: 1;
  text-overflow: ellipsis;
  white-space: nowrap;         /* new */
}
.child {
  display: inline;             /* adjusted */
  white-space: nowrap;
  flex: 1;
}
.btn {
  border: 1px solid green;
  flex: 0 0 auto;
}
Run Code Online (Sandbox Code Playgroud)
<div class="outer">
  <div class="inner">
    <div class="child">child 1</div>
    <div class="child">child 2</div>
    <div class="child">child 3</div>
    <div class="child">child 4</div>
    <div class="child">child 5</div>
    <div class="child">child 6</div>
    <div class="child">child 7</div>
  </div>
  <div class="btn">My big big big button!</div>
</div>
Run Code Online (Sandbox Code Playgroud)

有关text-overflow: ellipsis此处的更多信息:在多行文本中使用省略号