J'ai un scénario de forme très basique et connu dans lequel je dois aligner correctement les étiquettes à côté des entrées. Cependant, je ne sais pas comment faire.
Mon objectif serait que les étiquettes soient alignées à côté des entrées sur le côté droit. Voici un exemple d'image du résultat souhaité.
J'ai fait un violon pour votre commodité et pour clarifier ce que j'ai maintenant - http://jsfiddle.net/WX58z/
Fragment:
<div class="block">
<label>Simple label</label>
<input type="text" />
</div>
<div class="block">
<label>Label with more text</label>
<input type="text" />
</div>
<div class="block">
<label>Short</label>
<input type="text" />
</div>
Bien que les solutions ici soient réalisables, une technologie plus récente a permis ce que je pense être une meilleure solution. CSS Grid Layout nous permet de structurer une solution plus élégante.
Le CSS ci-dessous fournit une structure de «paramètres» à 2 colonnes, où la première colonne devrait être une étiquette alignée à droite, suivie d'un contenu dans la deuxième colonne. Un contenu plus compliqué peut être présenté dans la deuxième colonne en l'enveloppant dans un <div>.
[En remarque: j'utilise CSS pour ajouter le ':' qui suit chaque étiquette, car il s'agit d'un élément stylistique - ma préférence.]
la source
grid-template-columns: max-content 1fr;
, la deuxième colonne utilisera toute la largeur restante. C'est pour moi le Saint Graal de telles mises en page, où aucune colonne ou largeur de contenu ne doit être spécifiée, et tout s'intègre parfaitement dans l'espace disponible, automatiquement.A répondu à une question comme celle-ci auparavant, vous pouvez consulter les résultats ici:
Créer un formulaire pour avoir des champs et du texte côte à côte - quelle est la manière sémantique de le faire?
Donc, pour appliquer les mêmes règles à votre violon, vous pouvez utiliser
display:inline-block
pour afficher votre étiquette et vos groupes d'entrée côte à côte, comme ceci:CSS
violon mis à jour
la source
J'utilise quelque chose de similaire à ceci:
Style:
la source
Vous pouvez également essayer d'utiliser flex-box
la source
Je sais que c'est un vieux fil, mais une solution plus simple serait d'intégrer une entrée dans l'étiquette comme ceci:
la source
Voici la largeur des étiquettes génériques pour toutes les étiquettes de formulaire. Rien ne fixe la largeur.
appelez la calculatrice setLabelWidth avec toutes les étiquettes. Cette fonction chargera toutes les étiquettes sur l'interface utilisateur et découvrira la largeur maximale des étiquettes. Appliquez la valeur de retour de la fonction ci-dessous à toutes les étiquettes.
la source
Vous pouvez faire quelque chose comme ceci:
HTML:
CSS:
J'espère que cela t'aides ! :)
la source