[Astuce] Afficher la langue d'un lien en CSS
Posté : 13 mars 2007, 19:20
Salut à tous!
Parfois, on est amené à afficher un lien pointant vers une page ou un site rédigés dans une langue différente.
Par souci d'accessibilité aux personnes susceptibles d'avoir un handicap linguistique et pour éviter, par conséquent, un clic frustrant en même temps qu'inutile, il est recommandé d'utiliser l'attribut hreflang de l'élement a.
Il est tout à fait possible d'afficher le code de la langue dans laquelle est rédigé le contenu du lien, et ce sans toucher au code HTML, grâce aux CSS.
CSS prévoit l'emploi de pseudo-éléments comme :before et :after.
Pour afficher le code de la langue après l'intitulé du lien et avant la fin de l'élément a, on récupère la valeur de l'attribut hreflang au moyen de la propriété content: attr(), les parenthèses enfermant le code de la langue.
Pour faire plus joli, on entourera le code de la langue récupéré de parenthèses, le tout précédé d'un espace insécable. C'est tout à fait possible, puisque la propriété content admet comme valeur une chaîne de caractères saisie entre guillemets, l'espace insécable étant saisie sous forme de son code hexadécimal (à 6 chiffres) conforme à la norme ISO 10646, précédé d'un antislash.
Autrement dit, la feuille de style comportera la déclaration suivante (on utilisera également le sélecteur d'attributs afin d'exclure les éléments a dépourvus d'attribut hreflang):
Ainsi, le code généré ressemblera à ça:
Dans ce cas, pour donner l'illusion aux inconditionnels d'IE tout en évitant les doublons aux autres navigateurs, il existe les commentaires conditionnels. Le code HTML ressemblera finalement à ça:
Les navigateurs autres qu'IE (Firefox, Opera, Safari...) n'interpréteront pas le bout de code ajouté (de <!--[ à ]-->), comme si c'était un commentaire HTML.
Parfois, on est amené à afficher un lien pointant vers une page ou un site rédigés dans une langue différente.
Par souci d'accessibilité aux personnes susceptibles d'avoir un handicap linguistique et pour éviter, par conséquent, un clic frustrant en même temps qu'inutile, il est recommandé d'utiliser l'attribut hreflang de l'élement a.
Code : Tout sélectionner
<p>Voici un lien vers le <a href="http://www.w3.org/" hreflang="en">W3C</a>.</p>CSS prévoit l'emploi de pseudo-éléments comme :before et :after.
Pour afficher le code de la langue après l'intitulé du lien et avant la fin de l'élément a, on récupère la valeur de l'attribut hreflang au moyen de la propriété content: attr(), les parenthèses enfermant le code de la langue.
Pour faire plus joli, on entourera le code de la langue récupéré de parenthèses, le tout précédé d'un espace insécable. C'est tout à fait possible, puisque la propriété content admet comme valeur une chaîne de caractères saisie entre guillemets, l'espace insécable étant saisie sous forme de son code hexadécimal (à 6 chiffres) conforme à la norme ISO 10646, précédé d'un antislash.
Autrement dit, la feuille de style comportera la déclaration suivante (on utilisera également le sélecteur d'attributs afin d'exclure les éléments a dépourvus d'attribut hreflang):
Code : Tout sélectionner
a[hreflang]:after {
content: "\0000a0("attr(hreflang)")";
}Seule ombre au tableau, Internet Explorer n'implémente pas les pseudo-éléments :before et :after, même dans sa version 7.Voici un lien vers le W3C (en).
Dans ce cas, pour donner l'illusion aux inconditionnels d'IE tout en évitant les doublons aux autres navigateurs, il existe les commentaires conditionnels. Le code HTML ressemblera finalement à ça:
Code : Tout sélectionner
<p>Voici un lien vers le <a href="http://www.w3.org/" hreflang="en">W3C<!--[if IE]> (en)<![endif]--></a>.</p>