让我们拿下面的小提琴:http://jsfiddle.net/wQP8p/
<div class="card">
<div class="preview"></div>
<div class="name">Super Long Title Because I Want To Do It So</div>
<div class="extra">OK</div>
</div>
和CSS
.card {
display: flex;
flex-wrap: wrap;
width: 200px;
}
.preview {
width: 100%;
padding-top: 45%;
background: red;
}
.name {
flex: auto;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
background: yellow;
}
.extra {
flex: none;
background: blue;
}
我该怎么做才能保留省略号,并将蓝色元素放在黄色元素的左边?
不幸的是,Flexbox不能以这种方式工作。如果你想让弹性物品并排出现,你必须给它们一个合适的弹性基准值,让它们在启用包装时能够放在弹性容器中(弹性收缩在这里也没有任何作用)。
http://jsfiddle.net/wQP8p/2/
.name {
flex: 1 80%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
background: yellow;
}
.extra {
flex: 1 20%;
background: blue;
}
如果内容是动态的(即,您不知道要设置的实际宽度),则必须在这些元素周围添加一个包装器。
您可以将.extra
div放在.name
div中,并将display:inline-block;
应用于.extra
类,如本JSFiddle所示。
编辑:这可能不是一个最佳实践,但它似乎达到了你所追求的美学。