我有一个设置了display: flex属性的容器元素。
一个 child 的宽度是固定的(flex: 0 0 auto),另一个 child 的宽度不是(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;
}

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

如何获得以下预期结果? (欢迎黑客-请仅使用CSS!)

javascript - 文字溢出: ellipsis and flex-LMLPHP

最佳答案

您的布局存在一些问题:

  • text-overflow: ellipsis仅适用于display: blockdisplay: inline-block容器。失败是因为您已将.inner设置为display: flex
  • text-overflow: ellipsis必须在同一声明中包括white-space: nowrap。您的.inner规则中缺少它。
  • 省略号适用于文本,而不适用于块级元素

  • 试试这个:

    * {
      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;
    }
    <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>


    有关text-overflow: ellipsis的更多信息,请点击此处:Applying an ellipsis to multiline text

    关于javascript - 文字溢出: ellipsis and flex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39472747/

    10-11 12:26