这是其中一件很难做到的事情。
很多人会建议使用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);
}
从此页面中的评论
你这样使用它:
$("div.myfields div label").autoWidth();
仅此而已...您所有的标签都将采用最长标签的宽度