Les rôles ARIA sont des attributs que l’on ajoute aux balises HTML dans certaines zones du document pour préciser leur fonction. Ces attributs permettent aux différentes technologies d’assistance pour les personnes en situation de handicap de se repérer dans votre document. Dans cet article nous verrons comment nous pouvons remplacer l’attribut id par les rôles ARIA lorsqu’il s’agit d’accéder aux éléments pour les styler avec CSS.
Marquage HTML
Voici quelques exemples de balises auxquelles j’ai attribué des rôles ARIA :
<body role="document"> <header role="banner"> <nav role="navigation"> <ul role="menubar"> <div role="main"> <article role="article">
Exemple de CSS
Pour cibler les éléments vus plus haut, il suffit d’utiliser les sélecteurs d’attributs à la place des identifiants.
header[role="banner"] { background: #E5525C; }
A la place de
#banner { background: #E5525C; }
En bref
A première vue, et après quelques essais, il semble que cela fonctionne bien dans les navigateurs modernes et à partir de IE7 pour Internet Explorer. J’ai mis un exemple en ligne pour fixer un peu les idées ; il me sers également à tester les propriétés `display: table` et `display: table-cell` pour faire une mise en page web en attendant de développer cette technique dans un prochain article.
→ Voir l’exemple et la CSS associée
→ Lire cette excellente introduction à WAI-ARIA, De l’accessibilité dans HTML5 et la documentation officielle du W3C.
On peut dire que tu nous as gâté pour la démo ! 😉
Je changerais peut-être les couleurs à l’occasion. J’ai mis le lien direct vers la CSS pour épargner les yeux sensibles 😉
Effectivement je viens de perdre mon œil droit 🙂
Le principe reste cependant très intéressant
Très bonne pratique, il reste à voir les règles de précédence entre les classes et les roles. Ca peut vite devenir le bordel si on mixe les deux.
Le sélecteur de classe a toujours un poids supérieur à celui de l’attribut
Ah, je pensais que le sélecteur d’attribut avait le même poids qu’une classe ou une pseudo-classe…
Ah oui autant pour moi, j’ai répondu trop vite. Ils ont exactement le même poids en effet.
Ok, vous avez gagné : j’ai changé les couleurs de l’exemple ^__^ : http://css4design.com/exemples/aria-display-table/
A part alléger le code Html, je ne vois pas trop d’intérêt, non ?
Comme le dit goetter, le sélecteur de classe reste plus « puissant » et en terme de performance, est ce que ça vaut le coup ?, le sélecteur d’ID étant le plus efficace a priori….
Et comme tu le dis, c’est pas compatible avec IE6…
Le sélecteur d’ID est effectivement le plus efficace en terme de performance. En revanche, dire que le sélecteur de classe est « plus puissant », n’a pas vraiment de signification, vu que c’est toi qui décide d’utiliser l’un ou l’autre. Ça va sans dire mais mieux en le disant : « il vaut toujours mieux avoir une feuille de style bien organisée, qu’en vrac » 😉 #proverbe_chinois
Tu as raison, on décide nous-même lequel utiliser mais je suis en plein dans des problématiques de « protection » de CSS dans le cadre de mon boulot (des partenaires affichent des blocs formatés en injectant le code Html et CSS dans leur page) du coup il faut qu’on veille à ne pas se faire « marcher dessus » par leur CSS déjà présente sur la page appelante… bref c’était une petite déformation professionnelle 😉
A la base de cette idée, il y a le fait que j’étais un peu agaçé de voir des balises du genre
<
div id= »main » role= »main »> etc. Du coup, oui, d’une part ça allège le code (mais bon, c’est vraiment pas l’objectif) mais surtout ça rend le code un peu plus lisible. Et je trouve ça assez smart 😉
Je comprends tout à fait ce point de vue ! 🙂
Ça sert à rien est c’est super lent.
Compatible IE7 et plus.
Sémantiquement intéressant.
J’adopte 🙂