这是一件令人惊讶地棘手的事情。
许多人建议使用float:left;
。个人而言,我非常不喜欢浮动;它们似乎会带来更多问题。
我的偏好是使用inline-block。这是一种显示方法,将内联属性(因此您可以轻松地将元素对齐在一起等)与块属性(例如能够指定尺寸)结合起来。
所以答案很简单,只需使它们都为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;
}
编辑:你可以使用这个插件来设置每个标签的宽度:
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);
}
从此网页中的评论获取
然后你可以这样使用:
$("div.myfields div label").autoWidth();
就是这样... 所有的标签都会采用最长标签的宽度