これは、正しく理解するのが驚くほど難しいものの 1 つです。
多くの人がこれを使用することを提案し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();
それだけです...すべてのラベルは、最も長いラベルの幅になります