【发布时间】:2016-05-13 15:49:56
【问题描述】:
我有一个 flex-box 容器 (.search-bar),里面有两个包含文本的 div (.title)。我希望第二个孩子占用所有额外的空间,并在空间有限时成为最后一个椭圆形的孩子。即第一个孩子应该根据需要椭圆化以保持第二个孩子完全显示,并且第二个孩子应该只有在第一个孩子不再可见时才椭圆化。
演示:
.search-bar {
flex: 1;
display: flex;
align-items: center;
overflow: hidden;
width: 500px;
background: white;
}
.title {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
flex-shrink: 1;
}
.title:last-of-type {
flex: 1;
flex-shrink: 0;
}
.title + .title::before {
content: '>';
margin: 0 10px;
}
<div class='search-bar'>
<div class='title'>
Doop Doop Doop Doop Doop Doop Doop
</div>
<div class='title'>
Doge Doge Doge Doge Doge Doge Doge
</div>
</div>
last-of-type 标题上的 flex-shrink: 0 似乎没有任何作用,最后一个子元素始终是椭圆形的。
有没有办法让第一个标题在第二个之前变成椭圆形?
【问题讨论】:
-
第二个
.title是.search-bar中其类型的最后一个标签吗?:*-type选择器仅适用于标签,不适用于类名。 -
请包含一个 MCVE,Andrew。迭代和帮助你会更容易。
-
@Shaggy,是的,选择器已正确应用于最后一个
.title。 -
想不出任何可以在 flexbox 中“优先考虑”收缩/省略的设置/属性......事实上,flexbox 的全部意义。
-
@TylerH 添加了一个带有基本示例的 jsFiddle。