Reputation: 196539
It seems that fieldset defaults to 100% width of its container. Is there any way that you can have the field set just be as big as the widest control inside the fieldset?
Upvotes: 85
Views: 119686
Reputation: 1243
max-inline-size: max-content
may help you, example:
<fieldset style="max-inline-size: max-content">
<legend>Legend</legend>
<div><input type="text" style="width: 100px" /></div>
<div>
<input type="text" style="width: 200px" />
</div>
<div>
<input type="text" style="width: 50px" />
</div>
</fieldset>
BTW, <fieldset>
has min-inline-size: min-content
by default. So if you meet width
or max-width
'seems' does not take effect, you can set min-inline-size: 0
to fix this.
See: Styling with CSS - : The Field Set element - HTML: HyperText Markup Language | MDN
Upvotes: 0
Reputation: 1124
try this
<fieldset style="max-width: max-content;" >
<legend>Blah</legend>
</fieldset>
Upvotes: 1
Reputation: 384
i fixed my issue by override legend style as Below
.ui-fieldset-legend
{
font-size: 1.2em;
font-weight: bold;
display: inline-block;
width: auto;`enter code here`
}
Upvotes: -1
Reputation:
fieldset {display:inline}
or fieldset {display:inline-block}
If you want to separate two fieldsets vertically, use a single <br/>
between them. This is semantically correct and no harder than it has to be.
Upvotes: 17
Reputation: 1
<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>
Upvotes: -2
Reputation: 1
Going further of Mihai solution, cross-browser left aligned:
<TABLE>
<TR>
<TD>
<FORM>
<FIELDSET>
...
</FIELDSET>
</FORM>
</TD>
</TR>
</TABLE>
Cross-browser right aligned:
<TABLE>
<TR>
<TD WIDTH=100%></TD>
<TD>
<FORM>
<FIELDSET>
...
</FIELDSET>
</FORM>
</TD>
</TR>
</TABLE>
Upvotes: -2
Reputation: 1
You can also put the fieldset inside a table, like so:
<table>
<tr>
<td>
<fieldset>
.......
</fieldset>
</td>
</tr>
</table>
Upvotes: -3
Reputation: 11
Unfortunately neither display:inline-block
nor width:0px
works in Internet Explorer up to version 8. I have not tried Internet Explorer 9. Much as I would like to ignore Internet Explorer, I can't.
The only option that works on Firefox and Internet Explorer 8 is float:left
. The only slight drawback is that you have to remember to use clear:both
on the element that follows the form. Of course, it will be very obvious if you forget ;-)
Upvotes: 1
Reputation: 22841
You could float it, then it will only be as wide as its contents, but you'll have to make sure you clear those floats.
Upvotes: 8
Reputation: 532465
Use display: inline-block
, though you need to wrap it inside a DIV to keep it from actually displaying inline. Tested in Safari.
<style type="text/css">
.fieldset-auto-width {
display: inline-block;
}
</style>
<div>
<fieldset class="fieldset-auto-width">
<legend>Blah</legend>
...
</fieldset>
</div>
Upvotes: 134
Reputation: 12264
You can always use CSS to constrain the width of the fieldset, which would also constrain the controls inside.
I find that I often have to constrain the width of select
controls, or else really long option text will make it totally unmanageable.
Upvotes: 0