2010-10-26 5 views
4

Comment aligner les éléments de formulaire input et select dans my test case, afin que leurs bordures horizontales soient alignées et que tout le texte, y compris les étiquettes, soit aligné sur la ligne de base?Comment aligner une entrée et sélectionner des éléments de formulaire dans une rangée

Je veux avoir un label et un élément de forme input avec un autre label et un élément de forme selectdans une rangée. Par conséquent je veux avoir horizontal frontières de select et input éléments alignés, et je veux aussi avoir tout le texte, y compris les étiquettes aligné à la base de référence. C'est possible? Je n'ai pas réussi à le faire sur IE8 ou FF sur Win

J'ai essayé box-sizing: border-box; pour forcer input et select pour être rendu en utilisant le même modèle de boîte .

Voir my test case, qui a ce code:

<form action="Submit" method="post"> 
    <p> 
     <label>Sex<select><option value="" selected="selected">Sex</option></select></label> 
     <label>Date of Birth<input type="text" value="Date of Birth" /></label> 
    </p> 
</form> 
body, input, select { 
    font-family: Helvetica,Arial,sans-serif; 
    font-size: 12px; 
} 

select, input { 
    height: 20px; 
    padding: 0; 
    margin: 0; 
    border: 1px solid gray; 
    box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
} 

label { 
    padding: 0; 
    margin: 0; 
} 

Répondre

1

Il semble que lorsque je ne définis pas la hauteur de select et input éléments alors en réglant le border à 1px obtient aligné. Je ne modifie pas la valeur par défaut vertical-align: baseline pour conserver les lignes de base de texte alignées. Je l'ai fait trop compliqué avant. Ce petit CSS l'a fait:

body, input, select { 
    font-family:Helvetica,Arial,sans-serif; 
    font-size: 12px; 
} 

select, input { border: 1px solid gray; } 
+0

J'ai ajouté 'margin: 0;' avant 'border: 1px solid grey': puisque j'ai des étiquettes au-dessus de chaque contrôle, je préfère le même espace verticalement sous chaque étiquette (le select se termine un peu plus bas que l'entrée mais est moins perceptible). – Fil

10

Je suggère d'ajouter ce style aux select et input éléments:

vertical-align: bottom; 

Vous pouvez ajouter le remplissage à l'élément select. Cependant, vous obtiendrez des espaces autour de la flèche déroulante. 2px devrait bien se passer, mais jouez avec. Cela devrait aider avec les lignes de base de texte.

+0

Merci pour votre réponse. Cela aligne les bordures horizontales. Cependant, les lignes de base de texte ne sont pas sur la même ligne. –

+0

@michal vous pouvez ajouter un remplissage à l'élément select. Cependant, vous obtiendrez des espaces autour de la flèche déroulante. 2px devrait être ok, mais jouer avec ... –

+0

J'ai édité ma réponse, je ne pense pas que la ligne-hauteur vous donne un avantage supplémentaire. bonne chance ... –

Questions connexes