我面临的问题与这个问题几乎相同:
这个解决方案非常有效:
.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>
... 如果我将显示的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聊天输入中输入多行文本时,它确实会向上扩展,但也会向下推按钮。 这样地: