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-blockniwidth:0pxfunciona 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:bothen 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
selectcontroles, 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