Sur le formulaire, j'ai un champ de sélection et deux champs de saisie. Ces éléments sont alignés verticalement. Malheureusement, je ne peux pas obtenir la même largeur de ces éléments.
Voici mon code:
<select name="name1" style="width:198px">
<option>value1</option>
<option>value2</option>
</select><br/>
<input type="text" name="id1" style="width:193px"><br/>
<input type="text" name="id2" style="width:193px">
Pour l'exemple ci-dessus, la meilleure largeur pour l'élément select est 198 ou 199 px (bien sûr, j'ai essayé 193px, mais la différence est majeure). Je pense que cela dépend de la résolution, sur divers ordinateurs et navigateurs, car ces éléments n’ont pas la même largeur (parfois, je pense que la différence est d’environ 1 ou 2 px). J'ai essayé de définir ces éléments dans des lignes div ou table, mais cela n'aide pas.
Q: Comment puis-je obtenir exactement la même largeur de ces éléments?
Réponse mise à jour
Voici comment changer le modèle de boîte utilisé par les éléments input/textarea/select afin qu’ils se comportent tous de la même manière. Vous devez utiliser le box-sizing
propriété qui est implémentée avec un préfixe pour chaque navigateur
-ms-box-sizing:content-box;
-moz-box-sizing:content-box;
-webkit-box-sizing:content-box;
box-sizing:content-box;
Cela signifie que la différence de 2px mentionnée précédemment n'existe pas.
exemple à http://www.jsfiddle.net/gaby/WaxTS/5/
note: On IE il fonctionne à partir de la version 8 et vers le haut ..
Original
si vous réinitialisez leurs bordures alors l'élément select
sera toujours inférieur de 2 pixels à l'élément input
.
J'ai essayé la réponse de Gaby (+1) ci-dessus mais cela n'a que partiellement résolu mon problème. Au lieu de cela, j'ai utilisé le CSS suivant, où content-box a été changé en border-box:
input, select {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Ajoutez ce code en css:
select, input[type="text"]{
width:100%;
box-sizing:border-box;
}