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?
80
Ú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}
ofieldset {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.fuente
Podrías flotarlo, entonces solo será tan ancho como su contenido, pero tendrás que asegurarte de despejar esos flotadores.
fuente
Esto también funciona.
fieldset { width:0px; }
fuente
Desafortunadamente,
display:inline-block
niwidth: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 utilizarloclear:both
en el elemento que sigue al formulario. Por supuesto, será muy obvio si lo olvidas ;-)fuente
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.fuente
fieldset { min-width: 0; max-width: 100%; width: 100%; }
fuente
prueba esto
<fieldset> <legend style="max-width: max-content;" >Blah</legend> </fieldset>
fuente
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` }
fuente
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>
fuente
<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>
fuente
También puede poner el conjunto de campos dentro de una tabla, así:
<table> <tr> <td> <fieldset> ....... </fieldset> </td> </tr> </table>
fuente