Focus : la pseudo-classe championne d'ergonomie et d'accessibilité

Publié le 15 juillet 2008

Tags : CSS Accessibilité Technique

Les pseudo-classes CSS sont un peu particulières : elles ciblent un élément dans un certain état

Souvent méconnues, les styles s’arrêtent en général à changer la couleur et le soulignement sur a:link, a:visited {...} et a:hover, a:active {...}. Pire, on voit même fleurir :focus { outline: none; } sans surcharge plus loin.

Les bons réflexes

Le curseur dirigé par la souris n’est pas systématiquement placé là où l’utilisateur interagit avec l’ordinateur. Le système d’exploitation et le navigateur mettent donc en valeur l’élément actuellement ciblé, généralement par un contour pointillé.

Focus

Comme l’indique Eric Meyer dans resetting again, il faut rendre le focus visible d’une manière ou d’une autre après l’avoir neutralisé. Le but des reset est de repartir d’une base neutre et homogène sur les différents navigateurs, pas de faire perdre leurs repères aux visiteurs ! Si vous utilisez :focus { outline: none; } il faut le redéfinir pour les liens et les éléments de formulaire, comme expliqué ci-après.

Liens

Pour ceux qui utilisent le clavier dans les pages web, il est important de savoir où se trouve le focus. Le minimum consiste à les styler comme les liens au survol en groupant la déclaration :

a:hover, a:active, a:focus {...}

En pratique cependant, il vaut mieux mettre largement en évidence les liens d’évitement (skip links) car ils sont souvent à la périphérie du champ de vision de l’utilisateur, en haut de page. Pour ceux-là, on peut préférer un contraste fort afin d’attirer l’oeil. Rien n’oblige cependant à utiliser le même style pour le focus et le survol (pour éviter une crise cardiaque au graphiste…)

a.skiplinks:hover { text-decoration: underline; }
a.skiplinks:focus { color: #fff; font-weight: bold; background: #f80; }

Formulaires

Pour faciliter la saisie, je recommande d’augmenter le contraste du champ actuellement en cours d’édition, par exemple avec un texte noir sur fond blanc.

input.text:focus, textarea:focus { color: #000; background: #fff;}\

Note : La déclaration ne doit pas modifier les input de type button, checkbox, image, radio, reset, submit. Il faut donc ajouter une classe (par exemple text) aux seuls input type="text" et input type="password".

Il faut également mettre en évidence les différents types de boutons : button, image, reset, submit. On utilise souvent pour cela un contour (outline) de couleur adapté à la charte.

Informations complémentaires :

Un commentaire

Thi3rry le 18 février 2009

Pour éviter d'ajouter une classe aux éléments input que l'on veut styler on peut aussi utiliser les sélecteurs d'attribut en CSS :
input[type="text"] { }

Seulement les sélecteurs d'attributs ne sont pas reconnus par IE6.

http://www.journaldunet.com/develop...

Page précédente Page précédente Page suivante Page suivante