Parece que fieldset tiene por defecto el 100% de ancho de su contenedor. ¿Hay alguna forma de que el conjunto de campos sea tan grande como el control más amplio dentro del conjunto de campos?
Respuestas:
Úselo display: inline-block
, aunque debe envolverlo dentro de un DIV para evitar que se muestre en línea. Probado en Safari.
<style type="text/css">
.fieldset-auto-width {
display: inline-block;
}
</style>
<div>
<fieldset class="fieldset-auto-width">
<legend>Blah</legend>
...
</fieldset>
</div>
display: inline-block;
no funciona en iE6 e IE7. Feliz si no tienes que preocuparte por ellos. :)
fieldset {display:inline}
o fieldset {display:inline-block}
Si desea separar dos conjuntos de campos verticalmente, use uno <br/>
entre ellos. Esto es semánticamente correcto y no más difícil de lo que debería ser.
Esto también funciona.
fieldset {
width:0px;
}
Desafortunadamente, display:inline-block
ni width:0px
funciona en Internet Explorer hasta la versión 8. No he probado Internet Explorer 9. Por mucho que me gustaría ignorar Internet Explorer, no puedo.
La única opción que funciona en Firefox e Internet Explorer 8 es float:left
. El único pequeño inconveniente es que hay que recordar utilizarlo clear:both
en el elemento que sigue al formulario. Por supuesto, será muy obvio si lo olvidas ;-)
Siempre puede usar CSS para restringir el ancho del conjunto de campos, lo que también restringiría los controles internos.
Encuentro que a menudo tengo que restringir el ancho de los select
controles, o de lo contrario, el texto de opción realmente largo lo hará totalmente inmanejable.
fieldset {
min-width: 0;
max-width: 100%;
width: 100%;
}
prueba esto
<fieldset>
<legend style="max-width: max-content;" >Blah</legend>
</fieldset>
Solucioné mi problema anulando el estilo de leyenda como se muestra a continuación
.ui-fieldset-legend
{
font-size: 1.2em;
font-weight: bold;
display: inline-block;
width: auto;`enter code here`
}
Yendo más allá de la solución Mihai, alineación a la izquierda en todos los navegadores:
<TABLE>
<TR>
<TD>
<FORM>
<FIELDSET>
...
</FIELDSET>
</FORM>
</TD>
</TR>
</TABLE>
Alineado a la derecha en varios navegadores:
<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>