PhpBB Lab Académie

Rechercher dans ce cours

Cours CSS : Apprendre le CSS : cours gratuit pour débutants

Auteur : phpBB-Lab. Date de cette version : lun. 21 sept. 2026 02:17.

Rendre les liens et le focus faciles à repérer

Objectif de la leçon

Distinguer hover, focus et focus-visible, conserver des liens reconnaissables et donner un contour visible aux contrôles existants du site.

Explications

Savoir où se trouve le clavier

Votre menu et votre formulaire sont accessibles par leurs éléments HTML natifs. Il faut aussi qu’une personne voyante au clavier puisse repérer le contrôle actif.

Le focus indique l’élément qui reçoit les actions du clavier. Cette leçon met en forme les vrais liens, inputs, textarea et bouton ; elle ne crée pas de contrôles supplémentaires et ne change aucun tabindex.

1. Conserver un signe autre que la couleur pour les liens

Ajoutez a { color: #163b65; text-decoration: underline; }. text-decoration: underline dessine un soulignement. Les liens restent ainsi identifiables sans dépendre uniquement de leur bleu.

Le sélecteur descendant .navigation-principale a cible les liens contenus dans le menu, à travers les li. Ajoutez-y display: block; et padding: 0.5rem;. Le lien lui-même reçoit une zone intérieure plus confortable à activer ; vous ne créez pas un faux bouton autour de lui.

2. Comprendre hover

Une pseudo-classe complète un sélecteur pour désigner un état. Dans a:hover, les deux-points introduisent l’état de survol par un dispositif de pointage.

Ajoutez a:hover { text-decoration-thickness: 0.15em; }. Cette propriété épaissit le soulignement. Ici, em se rapporte à la taille de police de l’élément concerné, contrairement à rem qui se rapporte à la racine.

Un écran tactile ne fournit pas nécessairement un survol stable. Nous ne plaçons donc aucune information essentielle uniquement dans cet état.

3. Comprendre focus et outline

La pseudo-classe :focus correspond à l’élément qui possède le focus. outline dessine un contour qui ne prend pas de place dans le calcul de la boîte, contrairement à border. outline-offset espace ce contour de la boîte.

Ajoutez :

a:focus, input:focus, textarea:focus, button:focus {
    outline: 0.1875rem solid #163b65;
    outline-offset: 0.1875rem;
}



La liste de sélecteurs couvre chaque famille de contrôle. Le contour est conservé même si le focus provient de la souris : c’est notre base volontairement explicite. Ne mettez pas outline: none ailleurs pour l’annuler.

4. Distinguer focus-visible sans en faire une recette magique

:focus-visible correspond à un élément focalisé lorsque le navigateur juge qu’un indicateur visuel est nécessaire. C’est notamment fréquent lors de la navigation au clavier, mais ce n’est pas synonyme de « clavier uniquement » : une zone de saisie peut aussi le faire correspondre après un clic.

Nous conservons :focus comme base et renforçons seulement l’épaisseur quand :focus-visible correspond. La propriété outline-width modifie uniquement l’épaisseur du contour déjà défini :

a:focus-visible, input:focus-visible, textarea:focus-visible, button:focus-visible {
    outline-width: 0.25rem;
}



Un navigateur qui ignore cette seconde règle garde le contour de :focus. Nous n’avons besoin d’aucune détection JavaScript pour ce choix.

5. Tester les vraies interactions

Avec Tab puis Maj + Tab, parcourez le menu et le formulaire. Dans le groupe radio, utilisez les flèches selon le fonctionnement natif du navigateur ; avec Espace, cochez ou décochez copie. Vérifiez que l’élément actif possède son contour, qu’il n’est pas coupé et que tous les noms restent compréhensibles.

Testez aussi sans souris : hover ne doit pas être nécessaire pour trouver une action. Un lecteur d’écran continue à recevoir les labels natifs ; nous n’ajoutons pas d’aria-label qui les remplacerait.

Référence technique, pour approfondir

W3C — Focus visible
W3C — Pseudo-classe focus-visible

Exemple commenté

a {
    color: #163b65;
    text-decoration: underline;
}

a:hover {
    text-decoration-thickness: 0.15em;
}

.navigation-principale a {
    display: block;
    padding: 0.5rem;
}

a:focus, input:focus, textarea:focus, button:focus {
    outline: 0.1875rem solid #163b65;
    outline-offset: 0.1875rem;
}



Le renforcement :focus-visible se place après cette base, avec outline-width: 0.25rem;.

Exercice à réaliser

Étape 1

Ajoutez la règle de liens avec la couleur et le soulignement. Ajoutez le padding aux liens descendants de navigation-principale.

Étape 2

Ajoutez l’état a:hover et comprenez que son soulignement plus épais ne constitue pas la seule indication de lien.

Étape 3

Ajoutez la règle commune :focus avec outline et outline-offset.

Étape 4

Ajoutez après elle la règle commune :focus-visible avec outline-width: 0.25rem;.

Étape 5

Parcourez les trois pages au clavier. Dans Contact, vérifiez les quatre saisies, le groupe radio, la case et le bouton. Ne soumettez pas de données personnelles.

Correction et résultat attendu

La base conserve un contour pour tout contrôle focalisé :

a {
    color: #163b65;
    text-decoration: underline;
}

a:hover {
    text-decoration-thickness: 0.15em;
}

.navigation-principale a {
    display: block;
    padding: 0.5rem;
}

a:focus, input:focus, textarea:focus, button:focus {
    outline: 0.1875rem solid #163b65;
    outline-offset: 0.1875rem;
}



Ajoutez ensuite :

a:focus-visible, input:focus-visible, textarea:focus-visible, button:focus-visible {
    outline-width: 0.25rem;
}



Les associations de labels et les comportements radio/checkbox restent natifs. Aucun outline: none n’est nécessaire.

À retenir

Hover est un état de pointage, focus l’état actif et focus-visible une décision du navigateur sur la nécessité d’un indicateur. Notre base garde le contour de focus ; les liens restent soulignés avant toute interaction.

Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.

Sommaire du cours

Découvrir CSS et écrire ses premières règles

  1. Comprendre CSS et créer sa première feuille de style
  2. Cibler les éléments avec les sélecteurs CSS
  3. Ajouter plusieurs déclarations dans une règle CSS

Mettre en forme le texte et améliorer sa lisibilité

  1. Améliorer la lisibilité du texte avec les propriétés typographiques
  2. Choisir les couleurs et comprendre le contraste
  3. Construire une typographie cohérente et accessible

Comprendre les espacements et le modèle de boîte CSS

  1. Comprendre les espacements avec margin et padding
  2. Comprendre le modèle de boîte avec les bordures
  3. Maîtriser la largeur du site et de son image

Comprendre l’héritage, la cascade et la priorité des règles CSS

  1. Comprendre les valeurs héritées dans le site
  2. Comprendre la cascade sur les paragraphes d’introduction
  3. Comparer les sélecteurs sans dérégler les introductions

Organiser la disposition des éléments avec Flexbox

  1. Transformer la navigation commune en conteneur Flexbox
  2. Espacer et aligner les liens du menu
  3. Laisser la navigation revenir sur plusieurs lignes

Construire des mises en page avec CSS Grid

  1. Disposer les deux notes de progression avec CSS Grid
  2. Adapter les colonnes des notes sans minimum rigide
  3. Intégrer Grid et Flexbox sans modifier le reste du site

Adapter le petit site aux différentes tailles d’écran

  1. Écrire une première media query pour la navigation
  2. Partir de la petite largeur avec min-width
  3. Vérifier le reflow du tableau, de l’image et du formulaire

Finaliser les trois pages et vérifier leur accessibilité

  1. Rendre les liens et le focus faciles à repérer
  2. Finaliser le formulaire et ranger la feuille CSS
  3. Vérifier et terminer le site HTML et CSS

Adapter le petit site aux différentes tailles d’écran

  1. Découvrir les media queries et adapter la mise en page
  2. Finaliser l’adaptation du site et conclure le cours CSS