Juste une note :
Le W3C n'a aucun problème avec un bouton à l'intérieur d'une balise de lien, ce n'est donc qu'une autre sous-norme de MS.
Réponse : :
Utilisez le bouton de substitution, à moins que vous ne souhaitiez opter pour une image complète.
Le bouton de substitution peut être placé dans une balise (plus sûr, si vous utilisez des spans et non des divs).
Il peut être stylisé pour ressembler à un bouton, ou à n'importe quoi d'autre.
Il est polyvalent - un seul morceau de code css alimente toutes les instances - il suffit de définir le CSS une fois et à partir de là, il suffit de copier et coller l'instance html partout où votre code l'exige.
Chaque bouton peut avoir sa propre étiquette - idéal pour les pages multilingues (plus facile que de faire des images pour chaque langue - je pense) - permet également de propager plus facilement les instances dans tout votre script.
Ajuste sa largeur à la longueur de l'étiquette - prend également une largeur fixe si c'est ce que vous voulez.
IE7 est une exception à ce qui précède - il doit avoir de la largeur, sinon ce bouton se déplacera d'un bord à l'autre - au lieu de lui donner de la largeur, vous pouvez faire flotter le bouton à gauche.
- css pour IE7 :
a. .width:150px ; (notez le point avant la propriété, je cible habituellement IE7 en ajoutant ce point - enlevez le point et la propriété sera lue par tous les navigateurs)
b. text-align:center ; - si vous avez une largeur fixe, vous devez avoir ceci pour centrer le texte/l'étiquette.
c. cursor:pointer ; - tous les IE doivent avoir cette information pour afficher correctement le pointeur du lien - les bons navigateurs n'en ont pas besoin.
Vous pouvez aller plus loin avec ce code et utiliser CSS3 pour le styliser, au lieu d'utiliser des images :
a. rayon pour les coins ronds (limitation : IE les montrera carrés)
b. un dégradé pour donner l'impression d'un bouton (limitation : Opera ne supporte pas les dégradés, pensez donc à définir une couleur de fond standard pour ce navigateur).
c. utilisez la classe :hover pour modifier l'état des boutons en fonction de la position du pointeur de la souris, etc. - vous pouvez l'appliquer à l'étiquette de texte uniquement, ou à l'ensemble du bouton.
Code CSS ci-dessous :
.button_surrogate span { margin:0; display:block; height:25px; text-align:center; cursor:pointer; .width:150px; background:url(left_button_edge.png) left top no-repeat; }
.button_surrogate span span { display:block; padding:0 14px; height:25px; background:url(right_button_edge.png) right top no-repeat; }
.button_surrogate span span span { display:block; overflow:hidden; padding:5px 0 0 0; background:url(button_connector.png) left top repeat-x; }
Code HTML ci-dessous (exemple de bouton) :
<a href="#">
<span class="button_surrogate">
<span><span><span>YOUR_BUTTON_LABEL</span></span></span>
</span>
</a>