這是這些東西可以是令人驚訝的棘手得到正確的。
很多人會建議使用float:left;
。就我個人而言,我真的不喜歡花車;他們似乎會造成比解決問題更多的問題。
我的首選是使用內聯塊。這是一種顯示方法,它將內聯屬性(因此您可以輕鬆地將元素相互對齊等)與塊屬性(如能夠指定尺寸)結合使用。
所以答案是簡單地讓它們都爲display:inline-block;
並給出提示固定的寬度,這將使得它們旁邊的輸入字段排成一行。
您還需要某種換行符或輸入字段之後的中斷,否則下一個提示符將顯示在同一行上,這不是所需的效果。達到此目的的最佳方法是將每個提示和其字段放入一個容器<div>
中。
所以你的HTML看起來像這樣:
<fieldset id="o-bs-sum-buginfo" class="myfields">
<div>
<label for="o-bs-sum-bug-ErrorPrefix">Error Prefix</label>
<input type="text" id="o-bs-sum-bug-ErrorPrefix" name="ErrorPrefix" value="" />
</div>
<div>
<label for="o-bs-sum-bug-ErrorNumber">Error Number</label>
<input type="text" id="o-bs-sum-bug-ErrorNumber" name="ErrorNumber" value="" />
</div>
....
</fieldset>
和你的CSS看起來就像這樣:
.myfields label, .myfields input {
display:inline-block;
}
.myfields label {
width:200px; /* or whatever size you want them */
}
希望有所幫助。
編輯: 你可以使用這個插件來設置每個標籤的寬度:
jQuery.fn.autoWidth = function(options)
{
var settings = {
limitWidth : false
}
if(options) {
jQuery.extend(settings, options);
};
var maxWidth = 0;
this.each(function(){
if ($(this).width() > maxWidth){
if(settings.limitWidth && maxWidth >= settings.limitWidth) {
maxWidth = settings.limitWidth;
} else {
maxWidth = $(this).width();
}
}
});
this.width(maxWidth);
}
from this page in a comment
,你使用這種方式:
$("div.myfields div label").autoWidth();
和多數民衆所有......你所有的標籤都將採用最長標籤的寬度
完美的作品。如果沒有div容器纏繞標籤和輸入,我會遇到問題。 – hashg 2011-01-09 22:24:23