Création de formulaire ont des champs et le texte en regard les uns des autres - qu'est-ce que la sémantique façon de le faire?
Je veux créer un formulaire donc il y a du texte sur le côté gauche et les entrées sur le droit, actuellement je suis en train de faire
<div id="labels">
<ul>
<li>The Label</li>
</ul>
</div>
<div id="inputs">
<ul>
<li><input type="text /></li>
</ul>
</div>
Et le CSS
input[type=text] {
height: 14px;
}
#labels {
float: left;
}
#inputs {
float: right;
}
li {
padding-top: 4px;
padding-left: 10px;
}
//Text size is 14px
Ce qui se passe est que le texte et les champs ne sont pas parfaitement alignés (les entrées obtenir progressivement plus faibles comme je l'ai ajouter des éléments). Je pense c'est parce que toutes les entrées peuvent être 14px (j'utilise des listes déroulantes, des cases à cocher, les radios, etc.).
Quelle serait la bonne façon de créer cette? Je connais un tableau serait résoudre le problème, mais c'est que de la sémantique?
- Attendez, quoi? Vous ne voulez pas utiliser un tableau, parce que cela serait "sémantique", mais vous êtes à l'aide de listes? Pourquoi? Vous n'avez pas de soins pour les listes? Vous comme d'abuser d'eux?
Vous devez vous connecter pour publier un commentaire.
Ce genre de question a été posée plusieurs fois ici, vous pouvez faire une recherche simple et de trouver de nombreuses solutions.
Mais ici, c'est un formulaire simple pour vous aider à démarrer:
HTML
CSS
Voici une démo: http://jsfiddle.net/5aduZ/1/
Beaucoup de gens ne seront pas d'accord avec mon utilisation de divs pour séparer les éléments de formulaire, mais par le biais de tests, j'ai trouvé ce format la plus sûre et la meilleure façon d'aller à ce sujet car il sépare les champs proprement, et il fonctionne très bien sous IE. De Plus, c'est le format utilisé par les grands garçons (facebook, twitter, google).
Il fait sens pour l'étiquette à côté de l'entrée dans le HTML, c'est plus facile à lire et plus facile à gérer. Typique HTML pour la ce serait:
Et CSS serait:
Si vraiment vous ne pouvez pas modifier votre code HTML, vous pouvez créer une CSS
height
sur le<li>
balise pour résoudre le problème d'alignement. Mais je fortement vous recommandons de choisir l'une ou l'autre des solutions proposées, parce que votre code HTML est très difficile à lire dans son état actuel. Et vous devez utiliser le<label>
tag.Écrire ce
<input type="text" name="firstname" />
et régler la hauteur de la largeur et de rembourrageDans mon entreprise, le chemin du retour quand nous avons commencé notre première application web en 2001, nous avons utilisé une table.
Et bien que cela fonctionne, du point de vue philosophique, je n'aime pas l'approche, car autant que je suis concerné, un tableau doit tenir table-isée de données.
Vous pouvez utiliser le CSS et DIV, ainsi:
Voir ici: http://jsfiddle.net/9P7pg/
Ou, vous pouvez éviter l'utilisation de div à l'ensemble, et il suffit d'appliquer la
display: inline-block
pour chaquelabel
etinput
(ou de l'utilisation des classes). Mais alors vous aurez également à vous rappeler d'utiliser un espace insécable pour retours entre l'étiquette-combinaison de champs.il y a une liste spéciale pour cela! il est appelé liste de définitions (dl) et est composé de définition des termes et des définitions les définitions (dt/dd). j'ai l'habitude de mettre le texte dans la dt et la boîte de saisie de la dd. comme ceci:
fieldset
? Vous ne pouvez pas mettre un<fieldset≥
directement en tant qu'enfant d'un<DL>
, si vous vous retrouvez avec compliqué de nidification. Sémantiquement, ce n'est pas une liste de définition, et par programmation, c'est plus compliqué.