This question already has answers here:
Why don't flex items shrink past content size?
(2个答案)
3年前关闭。
我将以下布局考虑在内。每个列表项由两列表示。第二列应占用所有可用空间,但如果第一列占用太多空间,则应以最小大小将其 anchor 定在右侧。第一栏应显示省略号。
最后一种情况正在发生问题。当第一列包含太多文本时,它没有显示省略号,而是将其自身拉伸(stretch)到flexbox之外,从而导致出现水平滚动条,而第二列则没有 anchor 定在右侧。
我想要这样渲染(模型):
我该如何实现?
这是sample fiddle。
原始答案/解释。
W3C规范说:“,默认情况下,伸缩项不会缩小到其最小内容大小(最长的单词或固定大小的元素的长度)以下。要更改此设置,请设置“最小宽度”或“最小高度” '属性。“
如果我们遵循这一思路,我相信该错误已从Canary中删除,而不是相反。
一旦将
因此,该错误是在较早的实现中出现的,而canary删除了该错误。
这个例子在金丝雀中工作。 http://jsfiddle.net/iamanubhavsaini/zWtBu/
我使用的是Google Chrome版本23.0.1245.0金丝雀。
(2个答案)
3年前关闭。
我将以下布局考虑在内。每个列表项由两列表示。第二列应占用所有可用空间,但如果第一列占用太多空间,则应以最小大小将其 anchor 定在右侧。第一栏应显示省略号。
最后一种情况正在发生问题。当第一列包含太多文本时,它没有显示省略号,而是将其自身拉伸(stretch)到flexbox之外,从而导致出现水平滚动条,而第二列则没有 anchor 定在右侧。
我想要这样渲染(模型):
我该如何实现?
这是sample fiddle。
.container {
display: -webkit-flex;
}
div {
white-space: nowrap;
text-overflow: ellipsis;
}
.container > div:last-child {
-webkit-flex: 1;
background: red;
}
<!-- a small first column; the second column is taking up space as expected -->
<div class="container">
<div>foo barfoo bar</div>
<div>foo bar</div>
</div>
<!-- a large first column; the first column is overflowing out of the flexbox container -->
<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>
最佳答案
更新
添加有效的代码:
.container {
display: -webkit-flex;
}
.container>div:first-child{
white-space:nowrap;
-webkit-order:1;
-webkit-flex: 0 1 auto; /*important*/
text-overflow: ellipsis;
overflow:hidden;
min-width:0; /* new algorithm overrides the width calculation */
}
.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>
原始答案/解释。
W3C规范说:“,默认情况下,伸缩项不会缩小到其最小内容大小(最长的单词或固定大小的元素的长度)以下。要更改此设置,请设置“最小宽度”或“最小高度” '属性。“
如果我们遵循这一思路,我相信该错误已从Canary中删除,而不是相反。
一旦将
min-width
放入0
,请检查它在Canary中的工作原理。因此,该错误是在较早的实现中出现的,而canary删除了该错误。
这个例子在金丝雀中工作。 http://jsfiddle.net/iamanubhavsaini/zWtBu/
我使用的是Google Chrome版本23.0.1245.0金丝雀。
09-25 17:57