似乎字段集默认为其容器的 100% 宽度。有什么方法可以让字段集与字段集中最宽的控件一样大?
12 回答
使用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;
}
不幸的是,在 Internet Explorer 8 之前的版本中既不工作display:inline-block
也不width:0px
工作。我没有尝试过 Internet Explorer 9。尽管我很想忽略 Internet Explorer,但我不能。
唯一适用于 Firefox 和 Internet Explorer 8 的选项是float:left
. 唯一的小缺点是您必须记住clear:both
在表单后面的元素上使用。当然,如果您忘记了,那将非常明显;-)
您始终可以使用 CSS 来限制字段集的宽度,这也会限制内部的控件。
我发现我经常不得不限制select
控件的宽度,否则很长的选项文本会使其完全无法管理。
fieldset {
min-width: 0;
max-width: 100%;
width: 100%;
}
试试这个
<fieldset>
<legend style="max-width: max-content;" >Blah</legend>
</fieldset>
我通过覆盖图例样式解决了我的问题,如下所示
.ui-fieldset-legend
{
font-size: 1.2em;
font-weight: bold;
display: inline-block;
width: auto;`enter code here`
}
更进一步的 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>