Bonjour,
J'aurais aimé avoir quelques conseils pour aligner correctement mes formulaires de façon efficace et responsive.
Je crois que j'ai presque trouvé ce que je voulais avec display:table, à un détail près...
Exigeances/notes:
1 - Je pourrais faire beaucoup plus simple en donnant une taille aux labels. Mais justement je voudrais ne pas devoir spécifier de taille nulle part, afin que ça se passe le plus facilement possible quelque soit la taille de l'écran. D'où une tentative avec display:table.
2 - Les flottants, je voudrais éviter; enfin disons plutôt que je ne les maîtrise que moyennement et j'obtiens parfois des choses inattendues et inexpliquables quand je'ssaie de les utiliser; bref c'est pas bullet-proof dans toutes les situations.
3 - J'aimerais conserver un code HTML aussi simple que possible, en évitant au maximum de multiplier les <div> et autres éléments sémantiquement inutiles. De nouveau pour que ça passe comme sur des roulettes avec les mobiles.
4 - Niveau compatbilité, tant que ça marche sur les navigateurs plus ou moins récents et IE11, ça ira
Mon problème avec mon code actuel utilisant display:table, c'est les boutons à la fin du formulaire.
Ce serait mieux s'ils s'affichaient côte-à-côte, et que le premier soit aligné avec le bord gauche des champs et non pas tout au bord gauche de la page, non ?
LE reste, apparament, ça a l'air de marcher pas trop mal.
Questions plus générales:
Est-ce qu'utiliser display:table dans ce contexte est judicieux ?
Peut-on faire mieux avec flexbox ? Comment ? J'ai du mal à comprendre comment flexbox fonctionne...
Merci pour vos réponses.
J'aurais aimé avoir quelques conseils pour aligner correctement mes formulaires de façon efficace et responsive.
Je crois que j'ai presque trouvé ce que je voulais avec display:table, à un détail près...
Exigeances/notes:
1 - Je pourrais faire beaucoup plus simple en donnant une taille aux labels. Mais justement je voudrais ne pas devoir spécifier de taille nulle part, afin que ça se passe le plus facilement possible quelque soit la taille de l'écran. D'où une tentative avec display:table.
2 - Les flottants, je voudrais éviter; enfin disons plutôt que je ne les maîtrise que moyennement et j'obtiens parfois des choses inattendues et inexpliquables quand je'ssaie de les utiliser; bref c'est pas bullet-proof dans toutes les situations.
3 - J'aimerais conserver un code HTML aussi simple que possible, en évitant au maximum de multiplier les <div> et autres éléments sémantiquement inutiles. De nouveau pour que ça passe comme sur des roulettes avec les mobiles.
4 - Niveau compatbilité, tant que ça marche sur les navigateurs plus ou moins récents et IE11, ça ira
Mon problème avec mon code actuel utilisant display:table, c'est les boutons à la fin du formulaire.
Ce serait mieux s'ils s'affichaient côte-à-côte, et que le premier soit aligné avec le bord gauche des champs et non pas tout au bord gauche de la page, non ?
LE reste, apparament, ça a l'air de marcher pas trop mal.
Questions plus générales:
Est-ce qu'utiliser display:table dans ce contexte est judicieux ?
Peut-on faire mieux avec flexbox ? Comment ? J'ai du mal à comprendre comment flexbox fonctionne...
Merci pour vos réponses.
form {
display: table;
}
form>p {
display: table-row;
}
form p>input, form p>label, form p>span {
display: table-cell;
}
label {
text-align: right;
padding-right: 7px;
}
<form>
<p><label for="one">Label 1: </label>
<input type="text" id="one" value="blabla" />
<span>Valeur incorrecte</span>
</p>
<p><label for="two">Label 2 plus long: </label>
<input type="text" id="two" value="bip bip" />
<span>Valeur incorrecte</span>
</p>
<p><label for="three">Un très très très long label: </label>
<input type="text" id="three" value="coyote" />
<span>Valeur incorrecte</span>
</p>
<p>
<input type="submit" value="Valider" />
<input type="reset" value="Annuler" />
</p>
</form>