C'est l'une des choses qui peut être étonnamment délicate à réaliser.
De nombreuses personnes suggèrent d'utiliser float:left;
pour ça. Personnellement, je n'aime vraiment pas les flotteurs ; ils semblent causer plus de problèmes qu'ils n'en résolvent.
Ma préférence va à l'utilisation de l'inline-block. Il s'agit d'une méthode d'affichage qui combine des propriétés en ligne (afin de pouvoir aligner facilement des éléments les uns à côté des autres, etc.) et des propriétés de bloc (comme la possibilité de spécifier des dimensions).
Donc la réponse est simplement de les rendre tous les deux display:inline-block;
et donner aux invites une largeur fixe, ce qui permettra d'aligner les champs de saisie à côté d'elles.
Vous aurez également besoin d'une sorte de saut de ligne après le champ de saisie, sinon l'invite suivante apparaîtra sur la même ligne, ce qui n'est pas l'effet recherché. La meilleure façon d'y parvenir est de placer chaque invite et son champ dans un conteneur. <div>
.
Votre HTML ressemblera donc à ceci :
<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>
et votre CSS ressemblera à ceci :
.myfields label, .myfields input {
display:inline-block;
}
.myfields label {
width:200px; /* or whatever size you want them */
}
J'espère que cela vous aidera.
Editar : vous pouvez utiliser ce plugin pour définir la largeur de chaque étiquette :
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);
}
de cette page dans un commentaire
et vous l'utilisez de cette façon :
$("div.myfields div label").autoWidth();
et c'est tout... toutes vos étiquettes vont prendre la largeur de l'étiquette la plus longue