【问题标题】:Flex item filled with text overflowing flex container [duplicate]Flex项目充满了溢出flex容器的文本[重复]
【发布时间】:2023-03-29 09:10:01
【问题描述】:

我面临的问题与这个问题几乎相同:

而且这个解决方案效果很好:

.container {
    display: -webkit-flex; 
}

.container>div:first-child{
    white-space:nowrap;
   -webkit-order:1;
   -webkit-flex: 1;
   -webkit-flex: 0 1 auto; /*important*/
    text-overflow: ellipsis;
    overflow:hidden;
    min-width:0px; /* new algorithm mises the calculation of the width */
}

.container > div:last-child {
    -webkit-flex: 1;
    -webkit-order:2;
    background: red;
    -webkit-flex:1 0 auto; /*important*/
}
.container > div:first-child:hover{
    white-space:normal;
}
<div class="container">
    <div>foo barfoo bar</div>
    <div>foo bar</div>
</div>

<div class="container">
        <div>foo barfoo barfoo barfoo barfoo barfoo barfoo bar
        foo barfoo barfoo barfoo barfoo barfoo barfoo bar
        foo barfoo barfoo barfoo barfoo barfoo barfoo bar</div>
    <div>foo bar</div>
</div>
<div class="container">
    <div>foo barfoo bar</div>
    <div>foo bar</div>
</div>

<div class="container">
        <div>foo barfoo barfoo barfoo barfoo barfoo barfoo bar
        foo barfoo barfoo barfoo barfoo barfoo barfoo bar
        foo barfoo barfoo barfoo barfoo barfoo barfoo bar</div>
    <div>foo bar</div>
</div><div class="container">
    <div>foo barfoo bar</div>
    <div>foo bar</div>
</div>

(jsFiddle version)

但是,如果我将呈现的 div 放入带有 display: flex 的 div 中,我的问题又回来了。

这是不起作用的完整代码。问题和上一题完全一样。

.container {
    display: flex; 
}

.container>div:first-child{
    white-space:nowrap;
   -webkit-order:1;
   -webkit-flex: 1;
   -webkit-flex: 0 1 auto; /*important*/
    text-overflow: ellipsis;
    overflow:hidden;
    min-width:0px; /* new algorithm mises the calculation of the width */
}

.container > div:last-child {
    -webkit-flex: 1;
    -webkit-order:2;
    background: red;
    -webkit-flex:1 0 auto; /*important*/
}


.test-flex {
  display: flex;
}
<div class="test-flex">
  <div class="container">
          <div>foo barfoo barfoo barfoo barfoo barfoo barfoo bar
          foo barfoo barfoo barfoo barfoo barfoo barfoo bar
          foo barfoo barfoo barfoo barfoo barfoo barfoo bar</div>
      <div>foo bar</div>
  </div>
</div>

【问题讨论】:

    标签: html css flexbox


    【解决方案1】:

    ...如果我将呈现的 div 放在带有display: flex 的 div 中,我的问题又回来了。 ...问题和上面的问题完全一样。

    解决方法也和that question中的一样:在弹性项目中添加min-width: 0

    正如该问题的accepted answer 中所述,默认情况下,弹性项目不能小于其内容的大小。

    现在您已经创建了一个新的主容器 (.test-flex),您已将之前的主容器 (.container) 设为弹性项目。

    您现在需要覆盖弹性项目 (min-width: auto) 的默认设置,以允许 .container 缩小到其子项(带有文本的 div)的大小。

    你可以这样做:

    • min-width: 0,或
    • overflow: hidden

    .container {
      display: flex;
      min-width: 0;  /* NEW */
    }
    .container>div:first-child {
      white-space: nowrap;
      order: 1;
      flex: 0 1 auto;
      text-overflow: ellipsis;
      overflow: hidden;
      min-width: 0px;
    }
    .container > div:last-child {
      order: 2;
      background: red;
      flex: 1 0 auto;
    }
    .test-flex {
      display: flex;
    }
    <div class="test-flex">
      <div class="container">
        <div>foo barfoo barfoo barfoo barfoo barfoo barfoo bar foo barfoo barfoo barfoo barfoo barfoo barfoo bar foo barfoo barfoo barfoo barfoo barfoo barfoo bar</div>
        <div>foo bar</div>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 2013-09-24
      • 2017-09-07
      • 2018-02-22
      • 1970-01-01
      • 2019-01-14
      • 2018-06-27
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多