Comment aligner les cases à cocher (checkboxes) et leur label quel que soit le navigateur ?

Aligner les cases à cocher de manière identique pour tous les navigateurs est problématique. En effet, les rendus diffèrent entre Firefox, Internet Explorer ou Safari...

Aligner les cases à cocher de manière identique pour tous les navigateurs est un casse-tête. En effet, les rendus sont différents selon que l'on utilise Firefox, Internet Explorer ou encore Safari mais également selon la version d'Internet Explorer utilisée (voir aussi le tutoriel : Comment utiliser jQuery pour vérifier la propriété checked d'une case à cocher ?).

Afin d'atténuer les différences entre navigateurs, il est nécessaire de remettre à zéro les propriétés des éléments. Cela consiste à fixer à zéro la valeur des marges et bordures, de fixer la taille de police à 100%, de préciser que la police est la même que celle de l'élément parent est de fixer la propriété vertical-align à la valeur baseline, pour toutes les balises HTML.

Pour assurer la compatibilité avec Internet Explorer 6 et 7, le hack *overflow est une propriété seulement comprise par ces deux navigateurs qui aligne la case à cocher. Pour les autres navigateurs, l'alignement par le bas est la propriété CSS la mieux comprise par tous les navigateurs. Il faut ensuite fixer la position de la case à cocher à relative et les deux éléments sont alignés.

Les autres propriétés (indentation du texte, marges, alignement, dimensions) sont à régler en fonction de la police utilisée. Exemple de code :

<form>
<div>
<label><input type=checkbox /> Label text</label>
</div>
</form>
<style type=text/css>
label {
display: block;
padding-left: 15px;
text-indent: -15px;
}
input {
width: 13px;
height: 13px;
padding: 0;
margin:0;
vertical-align: bottom;
position: relative;
top: -1px;
*overflow: hidden;
}
</style>

HTML/CSS