文本溢出:省略号导致flex项溢出flex容器

pea*_*red 6 html css ellipsis css3 flexbox

我在flex容器中有两列.其中一列(橙色)包含一个化身,其宽度应恰好是容器的10%.

另一列(蓝色)包含面板,面板的标题可能很长,所以我应该通过css截断它.这张照片显示了我的期望:

我期待的是:

我所期待的

但是当我想要做的时候text-overflow: ellipsis,我的第二排比柔性容器更宽.以下是此行为的示例:

https://jsfiddle.net/8krtL9ev/1/

.container {
  background: #ddd;
  width: 400px;
  height: 200px;
  padding: 10px;
  display: flex;
}

.row1 {
  background: red;
  flex-basis: 10%;
  flex-shrink: 0;
}

.row2 {
  background: blue;
  flex-basis: 90%;
  margin-left: 10px;
  padding: 10px;
  display: flex;
}

.panel {
  background: green;
  flex-basis: 50%;
  overflow: hidden;
}

.panel-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="row1">
  </div>

  <div class="row2">
    <div class="panel">
      <div class="panel-title">
        <span>Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.</span>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

jaf*_*ech 3

使用width代替flex-basis. 因为在本文档中他们提到了

9.9.3。弹性项目固有尺寸贡献

Flex 项目的主要大小最小内容/最大内容贡献是其外部最小内容/最大内容大小,由其 Flex 基本大小限制为最大值(如果不可增长)和/或最小值(如果它不可收缩),然后通过其最小/最大主要尺寸属性进一步限制。

不要忘记将宽度设置calc(90% - 30px)row2宽度

.container {
  background: #ddd;
  width: 400px;
  height: 200px;
  padding: 10px;
  display: flex;
}

.row1 {
    background: red;
    /* flex-basis: 10%; */
    width: 10%;
    flex-shrink: 0;
}

.row2 {
    background: blue;
    /* flex-basis: 90%; */
    width: calc(90% - 30px);
    margin-left: 10px;
    padding: 10px;
    display: flex;
}

.panel {
  background: green;
  flex-basis: 50%;
  overflow: hidden;
}

.panel-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="row1">
  </div>

  <div class="row2">
    <div class="panel">
      <div class="panel-title">
        <span>Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.</span>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案太过分了。蓝色框溢出了容器,因为 Flex 项目的默认最小尺寸是“min-width: auto”(内容长度)。解决该问题所需要做的就是在“.row2”上使用“min-width: 0”或“overflow:hidden”覆盖默认值。 (3认同)