jQuery的解決方案
我開始用一個jQuery協助解決。
的CSS是這樣的:
div {
width: 100%;
overflow: auto;
}
a {
border: 1px solid gray;
margin: 3px;
height: 50px;
float: left;
}
.c {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.d {
float: right;
}
和jQuery函數:
$("div").each(function(){
var innerWidth = 0;
$(this).find("a").not(".flex").each(function(){
innerWidth += $(this).outerWidth(true);
});
var flexWidth = $(this).width() - innerWidth - 9; /* padding + border + 1 */
$(this).find(".flex").width(flexWidth);
});
有一個硬編碼的常量,表示左/右填充和邊界在柔性與DIV(a.c
在你的例子中),並由於某種原因,有一個1px調整,以保持浮線在一條線上。 (不太確定起源...)。
小提琴:http://jsfiddle.net/audetwebdesign/HmvsN/
與浮子固定寬度
我作了輕微調整到如下的HTML的混合物(在a.c
前方移動a.d
):
<div class="ex2">
<a href="a" class="a">First column</a>
<a href="b" class="b">Second column</a>
<a href="d" class="d">Last column</a>
<a href="c" class="c flex">Very long text...</a>
</div>
和使用以下CSS:
.ex2 a {
border: 1px solid gray;
margin: 3px;
height: 50px;
}
.ex2 .a {
width: 90px;
float: left;
}
.ex2 .b {
width: 90px;
float: left;
}
.ex2 .c {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
margin: 3px 100px 3px 199px;
}
.ex2 .d {
width: 90px;
float: right;
}
本質上,浮動左邊的兩個元素和右邊的一個,使它環繞更寬的一個。較寬元素的寬度具有左/右邊距以適應浮動元素。
總體而言,兩種方法都有優點,但對於我們所得到的結果似乎有很多工作要做......
要觸發省略號,你需要或者指定或'a.c'元素計算的寬度。或者,您可以使用jQuery來計算'a.c'的理想寬度。你的要求有多靈活? –
我曾考慮過使用jQuery,但是在一頁上有很多這樣的頁腳後綴會帶來很多負擔。除了省略號之外,我怎樣才能讓a.c只用CSS填充剩餘空間? –
可以在三個窄列上設置%寬度嗎? –