Ésta es una de esas cosas que pueden ser sorprendentemente difícil de hacerlo bien.
Muchas personas sugerirán usar float:left;
para esto. Personalmente, realmente no me gustan las carrozas; parecen causar más problemas de los que resuelven.
Mi preferencia es usar bloque en línea. Este es un método de visualización que combina propiedades en línea (para que pueda alinear fácilmente elementos uno al lado del otro, etc.) con propiedades de bloque (como la posibilidad de especificar dimensiones).
Así que la respuesta es simplemente hacer que ambos sean display:inline-block;
y darles a las solicitudes un ancho fijo, lo que hará que los campos de entrada junto a ellos se alineen.
También necesitará algún tipo de avance de línea o corte después del campo de entrada, de lo contrario, el próximo aviso aparecerá en la misma línea, que no es el efecto deseado. La mejor forma de lograr esto es colocar cada mensaje y su campo en un contenedor <div>
.
Así el código HTML se verá así:
<fieldset id="o-bs-sum-buginfo" class="myfields">
<div>
<label for="o-bs-sum-bug-ErrorPrefix">Error Prefix</label>
<input type="text" id="o-bs-sum-bug-ErrorPrefix" name="ErrorPrefix" value="" />
</div>
<div>
<label for="o-bs-sum-bug-ErrorNumber">Error Number</label>
<input type="text" id="o-bs-sum-bug-ErrorNumber" name="ErrorNumber" value="" />
</div>
....
</fieldset>
y el CSS se verá así:
.myfields label, .myfields input {
display:inline-block;
}
.myfields label {
width:200px; /* or whatever size you want them */
}
Espero que ayude.
Editar: puede utilizar este plugin para establecer el ancho de cada etiqueta:
jQuery.fn.autoWidth = function(options)
{
var settings = {
limitWidth : false
}
if(options) {
jQuery.extend(settings, options);
};
var maxWidth = 0;
this.each(function(){
if ($(this).width() > maxWidth){
if(settings.limitWidth && maxWidth >= settings.limitWidth) {
maxWidth = settings.limitWidth;
} else {
maxWidth = $(this).width();
}
}
});
this.width(maxWidth);
}
from this page in a comment
y usarlo de esta manera:
$("div.myfields div label").autoWidth();
y eso todas ... todas sus etiquetas tomarán el ancho de la etiqueta más larga
Funciona perfecto. Me habría enfrentado a problemas sin el contenedor div envolviendo etiqueta y entrada. – hashg