似乎 fieldset 默认为其容器的 100% 宽度。有什么方法可以让字段集与字段集中最宽的控件一样大?
使用
display: inline-block
,尽管您需要将它包装在 DIV 中以防止它实际显示内联。在 Safari 中测试过。
<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}
如果要垂直分隔两个字段集,请在它们之间使用一个
<br/>
。这在语义上是正确的,并不比它必须的更难。
你可以浮动它,然后它只会和它的内容一样宽,但你必须确保清除那些浮动。
这也行。
fieldset {
width:0px;
}
不幸的是,
display:inline-block
和 width:0px
在 Internet Explorer 8 之前的版本中都不起作用。我没有尝试过 Internet Explorer 9。尽管我很想忽略 Internet Explorer,但我不能。
唯一适用于 Firefox 和 Internet Explorer 8 的选项是
float:left
。唯一的小缺点是您必须记住在表单后面的元素上使用clear:both
。当然,忘记了会很明显;-)
试试这个
<fieldset>
<legend style="max-width: max-content;" >Blah</legend>
</fieldset>
你总是可以使用 CSS 来限制字段集的宽度,这也会限制里面的控件。
我发现我经常需要限制
select
控件的宽度,否则太长的选项文本将使其完全无法管理。
fieldset {
min-width: 0;
max-width: 100%;
width: 100%;
}
我通过如下覆盖图例样式解决了我的问题
.ui-fieldset-legend
{
font-size: 1.2em;
font-weight: bold;
display: inline-block;
width: auto;`enter code here`
}
更进一步的米海解决方案,跨浏览器左对齐:
<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>