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.

Partir de la petite largeur avec min-width

Objectif de la leçon

Réécrire l’adaptation du menu en mobile-first, comprendre min-width et supprimer l’ancienne règle max-width pour garder une seule stratégie cohérente.

Explications

Une autre organisation du même réglage

La leçon précédente partait d’une rangée et passait en colonne avec max-width. Nous allons exprimer notre intention dans l’autre sens : commencer par une colonne, puis utiliser une rangée lorsque l’espace suffit.

On appelle cette démarche mobile-first. Elle consiste ici à écrire d’abord la présentation simple des petites largeurs ; elle ne détecte pas un téléphone et ne crée pas une version HTML distincte.

1. Comprendre min-width dans une condition

@media (min-width: 40rem)



Cette condition signifie « largeur du viewport de 40rem ou plus ». À l’inverse, max-width: 40rem signifiait « 40rem ou moins ».

Les deux comparaisons incluent l’égalité. Au seuil exact, notre nouvelle version choisira la rangée, là où la précédente choisissait la colonne. C’est un choix explicite, pas une équivalence mathématique stricte. Nous ne conservons pas les deux conditions concurrentes.

2. Changer la base

Dans la règle ordinaire .navigation-principale, ajoutez flex-direction: column; et remplacez align-items: center; par align-items: flex-start;.

Display, gap, wrap et la remise à zéro de la liste restent inchangés. Sans condition active, le menu se présente donc en colonne. Les liens sont toujours Accueil, À propos et Contact.

3. Remplacer l’ancienne media query, pas en ajouter une seconde

Supprimez entièrement le bloc @media (max-width: 40rem) de la leçon précédente, avec ses deux règles de déclaration. À sa place, après la règle de base, écrivez :

@media (min-width: 40rem) {
    .navigation-principale {
        flex-direction: row;
        align-items: center;
    }
}



Lorsque cette condition est vraie, row reprend la disposition en ligne et center retrouve l’alignement transversal de la rangée. Les autres propriétés ne sont toujours pas répétées.

4. Tester de part et d’autre du seuil

Vérifiez une largeur juste inférieure à 40rem, puis une largeur égale ou supérieure. Les unités de media query utilisent la base initiale du navigateur ou les préférences de l’utilisateur. Avec une base initiale de 16 pixels CSS, 40rem correspondent à 640 pixels CSS ; ce nombre n’est pas une constante pour toutes les configurations.

La grille des notes n’a pas besoin d’une nouvelle media query : son nombre de colonnes dépend déjà de sa propre place. Deux composants d’une page peuvent donc employer des mécanismes d’adaptation différents.

5. Éviter les règles inutiles

N’ajoutez pas un seuil pour chaque modèle de téléphone. Si un seuil de menu suffit pour notre contenu, gardez-le. Si votre texte personnalisé exige un autre point, mesurez et justifiez cette adaptation.

Après le remplacement, recherchez max-width: 40rem dans la feuille pour vérifier que l’ancien bloc conditionnel a disparu. Une propriété max-width d’un élément peut rester ailleurs : elle n’est pas cette media query.

La prochaine leçon vérifiera les débordements réels des textes, du tableau et du formulaire, au lieu de limiter les tests au nombre de colonnes.

Exemple commenté

État final du menu, à conserver à partir de cette leçon :

.navigation-principale {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: flex-start;
    list-style: none;
    margin: 0;
    padding: 0;
    flex-wrap: wrap;
    flex-direction: column;
}

@media (min-width: 40rem) {
    .navigation-principale {
        flex-direction: row;
        align-items: center;
    }
}

Exercice à réaliser

Étape 1

Dans le bloc ordinaire du menu, définissez flex-direction: column; et align-items: flex-start;.

Étape 2

Supprimez l’ancien bloc @media (max-width: 40rem). Ne laissez pas ses accolades sans contenu ni une moitié de règle.

Étape 3

Ajoutez à sa place la condition min-width: 40rem avec flex-direction: row; et align-items: center;.

Étape 4

Testez les trois pages de part et d’autre du seuil. Sur petite largeur, le menu doit rester complet en colonne.

Étape 5

Expliquez pourquoi les deux versions ne prennent pas la même décision au seuil exact de 40rem.

Correction et résultat attendu

.navigation-principale {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: flex-start;
    list-style: none;
    margin: 0;
    padding: 0;
    flex-wrap: wrap;
    flex-direction: column;
}

@media (min-width: 40rem) {
    .navigation-principale {
        flex-direction: row;
        align-items: center;
    }
}



Il ne reste qu’une stratégie conditionnelle pour le menu. En dessous du seuil : colonne. À partir du seuil inclus : rangée. Le HTML et la grille des notes n’ont pas changé.

À retenir

Mobile-first définit une base adaptée aux petites largeurs, puis ajoute le changement nécessaire avec min-width. Le remplacement de l’ancien bloc fait partie de l’exercice ; ne cumulez pas deux stratégies contradictoires.

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