当前位置: 首页 > 知识库问答 >
问题:

用文本溢出的Flex容器填充Flex项[重复]

寇涵容
2023-03-14

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

  • 如何防止弹性项因其文本而溢出

这个解决方案非常有效:

.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版本)

但是,如果我将显示的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>

共有1个答案

袁英豪
2023-03-14

... 如果我将显示的div放入带有display:flex的div中,我的问题又回来了。。。这个问题和上面的问题完全一样。

解决方案也与该问题相同:将min width:0添加到弹性项。

如该问题的公认答案所述,默认情况下,弹性项不能小于其内容的大小。

现在您已经创建了一个新的主容器(.test flex),您已经将以前的主容器(.container)作为一个flex项。

您现在需要覆盖flex项目的默认设置(minwidth:auto)以允许。容器缩小到其子容器的大小(带文本的div)。

您可以通过以下方式实现:

  • 最小宽度:0,或
.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>
 类似资料:
  • 我知道这些帖子: 在flexbox中防止子元素溢出其父元素 flex子节点上的文本溢出省略号不工作 为什么flex项不缩小过去的内容大小? 没有答案从那里修复我在下面的代码片段中的问题。这是html树: 父柔性柱 子柔性行 标签flex(因此我可以垂直对齐文本) 我能让它工作的唯一方法是将标签设为,但我真的希望保留flex。 我已经做了: 关于儿童: 设置 设置 设置溢出:隐藏 设置

  • 要在应用程序中使用Flexbox,您需要使用display属性创建/定义Flex容器。 Usage - display: flex | inline-flex 此属性接受两个值 flex - 生成块级弹性容器。 inline-flex - 生成内联flex容器框。 现在,我们将看到如何使用display属性和示例。 Flex 将此值传递给display属性时,将创建块级Flex容器。 它占用父容

  • 问题内容: 我有的容器。我希望中间的孩子能占据整个空间,所以我定了它。到目前为止,一切都很好。 下一个级别是中间的孩子有2个孩子,因此我也希望将其设置为flex(如果您迷路了,请跳到摘要),第一个孩子设置省略号样式。现在,省略号停止工作。 如果您单击该按钮,您会看到所有带有短文本的内容都很好; 有任何想法吗? 问题答案: 添加到。 其实,MOSH Feu的建议在他的回答,也应该工作,确实,跨浏览器

  • 我的容器带有。我希望中间的孩子将占据整个空间,因此我将其设置为。到现在为止,一直都还不错。 下一个级别是中间的孩子有2个孩子,所以我也想设置它flex(如果你失去了我,就跳到片段)和第一个孩子我设置省略号样式。现在,省略号停止工作。 如果你会点击按钮,你会看到一切都好短的文字; 有什么想法吗?

  • 问题内容: 我在正确使用flexbox时遇到问题,想澄清一下嵌套父元素和子元素的工作方式。 我知道孩子继承了父母的弹性。但是,如果您需要为孩子的孩子(孩子)抚养孩子,这会被覆盖吗?flexbox的正确用法是什么? 我什么时候都适用于孩子 的 孩子(婴儿)的缘故,或将是覆盖孩子的父母柔性? 问题答案: 一个范围 柔性格式化的内容被限制在一个父/子关系。 这意味着弹性容器始终是父容器,而弹性项目始终是

  • 我试图找出如何使列表中的最后一个flex项不扩展到容器的底部。它有一个contenteditable div,当有人输入多行文本时,我需要将其展开。 主要的灵活项目是一列中的3个div,标题栏宽度为100%,内容容器宽度为100%,有增长和收缩,页脚是灵活的,应该会导致内部容器收缩。 目前,当你在div.detail聊天输入中输入多行文本时,它确实会向上扩展,但也会向下推按钮。 这样地: