📚 Cours SCSS (Sass) 📍 Chapitre 3 / 21

Rappels essentiels de CSS

Avant d'aller plus loin avec SCSS, il est indispensable de maîtriser les fondamentaux du CSS. SCSS ne corrige pas une mauvaise compréhension du CSS : il s'appuie dessus. Ce chapitre consolide donc les bases indispensables pour progresser efficacement avec SCSS.

Objectifs du chapitre

  • Comprendre la syntaxe de base du CSS.
  • Maîtriser les sélecteurs essentiels.
  • Comprendre la cascade, l'héritage et la spécificité.
  • Revoir le box model, notion clé pour la mise en page.
À retenir

SCSS repose à 100% sur CSS. Plus tes bases CSS sont solides, plus SCSS deviendra simple et logique. Ne pas maîtriser CSS avant d'utiliser SCSS, c'est comme construire une maison sans fondations.

Explications théoriques détaillées

Syntaxe CSS de base

Une règle CSS est composée de deux éléments principaux :

  • Un sélecteur qui cible les éléments HTML
  • Un bloc de propriétés entre accolades
CSS
sélecteur {
  propriété: valeur;
  autre-propriété: autre-valeur;
}

Le navigateur lit le CSS de haut en bas et applique les règles en fonction de leur priorité et de leur spécificité.

Les sélecteurs essentiels

Les sélecteurs permettent de cibler précisément les éléments HTML auxquels appliquer les styles. Voici les trois types les plus courants :

CSS
/* Sélecteur de type (élément HTML) */
p {
  color: red;
}

/* Sélecteur de classe (le plus utilisé) */
.card {
  padding: 16px;
  background: white;
}

/* Sélecteur d'identifiant (à utiliser avec parcimonie) */
#header {
  background: black;
  color: white;
}
Conseil terrain

En pratique, on privilégie largement les classes. Les identifiants (#id) rendent le CSS difficile à maintenir et à réutiliser. Une bonne règle : 95% de classes, 5% d'identifiants.

La cascade CSS

Le mot CSS signifie Cascading Style Sheets (feuilles de style en cascade). La cascade définit quelle règle gagne lorsqu'il y a conflit. L'ordre d'application suit trois principes :

  • Importance (priorité des règles)
  • Spécificité (précision du sélecteur)
  • Ordre d'apparition (dernier arrivé, premier servi)
CSS
p {
  color: red;
}

p {
  color: blue;
}

Ici, le texte sera bleu car la seconde règle écrase la première (même spécificité, mais apparaît après).

Spécificité CSS

Lorsque plusieurs règles ciblent le même élément, la plus spécifique l'emporte. La spécificité se calcule selon un système de points :

  • Sélecteur d'élément : 1 point
  • Classe, pseudo-classe, attribut : 10 points
  • Identifiant : 100 points
  • Style inline : 1000 points
CSS
p {
  color: red; /* Spécificité: 1 */
}

.article p {
  color: green; /* Spécificité: 11 (10 + 1) */
}

#main .article p {
  color: blue; /* Spécificité: 111 (100 + 10 + 1) */
}

Le texte sera bleu, car #main .article p a la spécificité la plus élevée.

À retenir

Plus un sélecteur est précis, plus il est difficile à surcharger. SCSS ne change pas cette règle fondamentale de CSS.

Exemples simples

Héritage CSS

Certaines propriétés sont héritées automatiquement par les éléments enfants. Cela permet d'éviter la répétition :

CSS
body {
  color: white;
  font-family: 'Inter', Arial, sans-serif;
  line-height: 1.6;
}

/* Tous les éléments enfants héritent de ces propriétés */
h1, h2, h3, p, a, span {
  /* Pas besoin de redéfinir couleur, police, interligne */
}

Les propriétés comme color, font-family, line-height et text-align sont héritées. D'autres comme margin, padding ou border ne le sont pas.

Le box model

Chaque élément HTML est une boîte composée de quatre couches :

  • Contenu : le texte, l'image ou autre média
  • Padding : espace interne entre le contenu et la bordure
  • Border : la bordure visible
  • Margin : espace externe entre cet élément et les autres
CSS
.card {
  width: 300px;           /* Largeur du contenu */
  padding: 16px;          /* Espace interne */
  border: 2px solid white;/* Bordure visible */
  margin: 20px;           /* Espace externe */
  background: #1e293b;
}
À retenir

Par défaut, la propriété width ne comprend que le contenu. Le padding et la bordure s'ajoutent à cette largeur. C'est pourquoi on utilise souvent box-sizing: border-box qui inclut padding et border dans la largeur spécifiée.

Exemples concrets et professionnels

CSS propre avant SCSS

Voici un exemple de CSS simple mais structuré, prêt à être amélioré avec SCSS. C'est le type de code que tu peux produire avec des bases CSS solides :

CSS
/* Variables CSS natives (limitées) */
:root {
  --primary: #7aa7ff;
  --bg-dark: #0b1020;
  --text-light: #e9eeff;
}

/* Styles globaux */
body {
  font-family: 'Inter', Arial, sans-serif;
  background: var(--bg-dark);
  color: var(--text-light);
  margin: 0;
  padding: 0;
}

/* Composant bouton */
.button {
  background: var(--primary);
  color: white;
  padding: 10px 16px;
  border-radius: 12px;
  border: none;
  cursor: pointer;
  font-size: 16px;
  transition: background 0.3s ease;
}

.button:hover {
  background: #5a8fff;
}

/* Variante de bouton */
.button.secondary {
  background: transparent;
  border: 1px solid var(--primary);
  color: var(--primary);
}

/* Composant carte */
.card {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 16px;
  padding: 24px;
  margin: 16px 0;
}

Ce type de structure deviendra beaucoup plus maintenable avec les variables et le nesting SCSS. Cependant, même sans SCSS, un CSS bien organisé est déjà puissant.

Bonnes pratiques CSS

Bonnes pratiques fondamentales

  • Utiliser principalement des classes pour la flexibilité et la réutilisabilité.
  • Limiter la spécificité : préférer .button à #header .nav ul li .button.
  • Comprendre la cascade avant d'utiliser SCSS pour éviter les conflits.
  • Éviter !important autant que possible ; c'est souvent un signe de mauvaise architecture.
  • Organiser le CSS par composants ou par fonctionnalité.
  • Utiliser des noms de classes descriptifs (BEM, SMACSS, etc.).
À retenir

SCSS ne remplace pas les bonnes pratiques CSS, il les amplifie. Un mauvais CSS deviendra un mauvais SCSS encore plus complexe. Investir du temps dans les bases CSS est le meilleur moyen de réussir avec SCSS.

Erreurs courantes

Erreur 1 : utiliser SCSS pour masquer un mauvais CSS

SCSS ne corrige pas un mauvais usage des sélecteurs ou une mauvaise compréhension de la cascade. Au contraire, il peut amplifier les problèmes si les bases CSS ne sont pas solides.

Erreur 2 : abuser de !important

!important casse la logique de la cascade et rend le débogage difficile. SCSS n'est pas une excuse pour l'utiliser davantage. Si tu ressens le besoin d'utiliser !important, c'est souvent que ta spécificité est trop élevée ou ton architecture à revoir.

Erreur 3 : négliger les bases avant de passer à SCSS

Beaucoup de développeurs veulent sauter directement à SCSS sans maîtriser CSS. C'est une erreur : SCSS génère du CSS, et si tu ne comprends pas le résultat, tu ne pourras pas débuguer efficacement.

Résumé du chapitre

Ce que vous avez appris
CSS repose sur trois piliers : la cascade, la spécificité et l'héritage.
Le box model est fondamental pour comprendre la mise en page et l'espacement.
SCSS fonctionne uniquement si les bases CSS sont solides.
Les classes sont préférables aux identifiants pour la maintenabilité.
La spécificité doit être maîtrisée pour éviter les conflits de styles.

Prochain chapitre : Variables en SCSS

Maintenant que les bases CSS sont solidement établies, nous pouvons enfin aborder la première vraie fonctionnalité de SCSS : les variables. Elles permettent de centraliser et réutiliser les valeurs (couleurs, espacements, polices) de manière bien plus puissante qu'avec les variables CSS natives.

  • Déclarer et utiliser des variables SCSS
  • Différences entre variables SCSS et CSS natives
  • Variables pour les couleurs, espacements et autres valeurs
  • Portée et organisation des variables
  • Cas pratiques d'utilisation professionnelle