fieldset のデフォルトはコンテナの幅 100% に設定されているようです。フィールドセット内の最も幅の広いコントロールと同じ大きさのフィールドを設定する方法はありますか?
12 に答える
を使用display: inline-block
しますが、実際にインラインで表示されないように DIV 内にラップする必要があります。サファリでテスト済み。
<style type="text/css">
.fieldset-auto-width {
display: inline-block;
}
</style>
<div>
<fieldset class="fieldset-auto-width">
<legend>Blah</legend>
...
</fieldset>
</div>
fieldset {display:inline}
またfieldset {display:inline-block}
2 つのフィールドセットを垂直に分離したい場合は、<br/>
それらの間にシングルを使用します。これは意味的に正しく、必要以上に難しくありません。
フロートすることもできますが、コンテンツと同じ幅しかありませんが、それらのフロートを確実にクリアする必要があります。
残念ながら、バージョン 8 までの Internet Explorer ではどちらdisplay:inline-block
もwidth:0px
動作しません。Internet Explorer 9 は試していません。Internet Explorer を無視したいのですが、できません。
Firefox と Internet Explorer 8 で機能する唯一のオプションは ですfloat:left
。clear:both
唯一のわずかな欠点は、フォームに続く要素で使用することを覚えておく必要があることです。もちろん、忘れたら一目瞭然です;-)
いつでも CSS を使用してフィールドセットの幅を制限できます。これにより、内部のコントロールも制限されます。
多くの場合、コントロールの幅を制限する必要があることがわかりましたselect
。そうしないと、非常に長いオプション テキストが完全に扱いにくくなります。
Mihai ソリューションをさらに進めると、クロスブラウザーは左揃えになります。
<TABLE>
<TR>
<TD>
<FORM>
<FIELDSET>
...
</FIELDSET>
</FORM>
</TD>
</TR>
</TABLE>
クロスブラウザ右揃え:
<TABLE>
<TR>
<TD WIDTH=100%></TD>
<TD>
<FORM>
<FIELDSET>
...
</FIELDSET>
</FORM>
</TD>
</TR>
</TABLE>
<table style="position: relative; top: -0px; left: 0px;">
<tr>
<td>
<div>
<fieldset style="width:0px">
<legend>A legend</legend>
<br/>
<table cellspacing="0" align="left">
<tbody>
<tr>
<td align='left' style="white-space: nowrap;">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</td>
</tr>
</table>
次のように、フィールドセットをテーブル内に配置することもできます。
<table>
<tr>
<td>
<fieldset>
.......
</fieldset>
</td>
</tr>
</table>