css - 嵌套 flex 盒元素中的文本被截断

标签 css flexbox ellipsis truncated

我想要截断 Flexbox 元素中的文本。这完全没问题。但如果这个 Flexbox 元素包裹在另一个 Flexbox 元素中,它就会崩溃。有没有办法让一切变得流畅并且不会破裂?

我做了一支笔,你可以看到它在这里断了:http://codepen.io/anon/pen/apJYaN

.accordeon {
  width: 300px;
  background-color: #eeeeee;
}

.accordeon__row {
  /* if you remove this, then it works */
  display: flex;
}

.accordeon__row-label {
  flex-basis: 30%;
}

.accordeon__row-content {
  list-style-type: none;
  padding-left: 0;
  margin-bottom: 0;
  margin-top: 0;
}

.accordeon__row-item {
  display: flex;
}

.accordeon__row-value {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div class="accordeon">
  <div class="accordeon__row">
    <div class="accordeon__row-label">
      Mobility
    </div>
    <ul class="accordeon__row-content">
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Supermarket
        </div>
      </li>
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Supermarket
        </div>
      </li>
    </ul>
  </div>
  <div class="accordeon__row">
    <div class="accordeon__row-label">
      Mobility
    </div>
    <ul class="accordeon__row-content">
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Supermarket
        </div>
      </li>
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Supermarket
        </div>
      </li>
    </ul>
  </div>
  <div class="accordeon__row">
    <div class="accordeon__row-label">
      Schools
    </div>
    <ul class="accordeon__row-content">
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Akademisches Gymnasium Beethovenplatz 1
        </div>
      </li>
      <li class="accordeon__row-item">
        <div class="accordeon__row-value">
          1 min
        </div>
        <div class="accordeon__row-value">
          Supermarket
        </div>
      </li>
    </ul>
  </div>
</div>

最佳答案

您可以添加以下行:

.accordeon__row-content {
  ...
  min-width: 0; /* https://www.w3.org/TR/css-flexbox-1/#min-size-auto */
}

并调整这一行:

.accordeon__row-label {
  flex: 0 0 30%; /* fixed width flex item, previously flex-basis: 30%; */
}

<强> codepen

关于css - 嵌套 flex 盒元素中的文本被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764652/

相关文章:

html - 动态设置最后一行的 <hr> 分隔线样式

css - 如果第一列中没有内容,两列布局能否缩小为一列?

html - 如何缩短输入字段的宽度 - Bootstrap v5 或 CSS

html - 对一个子元素应用省略号,但不对另一个子元素应用省略号

javascript - 单击 td 内的超链接时更改 td 颜色

javascript - Jquery 弹出窗口不再工作

javascript - 用onclick替换不同div中的内容

css - 无法使用 flexbox 使我的按钮正确对齐

html - TD元素的控制溢出

html - 为什么 CSS 省略号在表格单元格中不起作用?