Module SCSS.1 – Pourquoi SCSS ?
Objectif
Comprendre les problèmes du CSS pur, découvrir les préprocesseurs CSS, et comprendre pourquoi SCSS est essentiel pour créer du CSS industriel et maintenable.
Théorie
Problèmes du CSS pur
1. Pas de variables
CSS pur :
.header {
background-color: #007bff;
}
.button {
background-color: #007bff;
}
.link {
color: #007bff;
}
Problème : Si on change la couleur, il faut modifier partout.
2. Pas de nesting
CSS pur :
.nav {
background-color: white;
}
.nav ul {
list-style: none;
}
.nav ul li {
display: inline-block;
}
.nav ul li a {
color: blue;
}
Problème : Répétition du sélecteur parent.
3. Pas de fonctions/mixins
CSS pur :
.button-primary {
padding: 10px 20px;
border-radius: 5px;
background-color: blue;
color: white;
}
.button-secondary {
padding: 10px 20px;
border-radius: 5px;
background-color: gray;
color: white;
}
Problème : Code dupliqué, pas de réutilisabilité.
4. Pas de calculs
CSS pur :
.container {
width: 1200px;
}
.sidebar {
width: 300px;
}
.main {
width: 900px; /* 1200 - 300, calculé manuellement */
}
Problème : Calculs manuels, erreurs possibles.
5. Organisation limitée
CSS pur :
- Un seul fichier ou imports basiques
- Pas de partials organisés
- Difficile de scaler
Qu'est-ce qu'un préprocesseur CSS ?
Préprocesseur = Outil qui étend le CSS avec des fonctionnalités avancées, puis compile en CSS pur.
Processus :
SCSS (source) → Compilation → CSS (navigateur)
Préprocesseurs populaires :
- Sass/SCSS : Le plus populaire
- Less : Alternative
- Stylus : Syntaxe flexible
Pourquoi SCSS ?
SCSS (Sassy CSS) = Syntaxe de Sass la plus proche du CSS.
Avantages de SCSS
1. Variables :
$primary-color: #007bff;
$spacing: 1rem;
.button {
background-color: $primary-color;
padding: $spacing;
}
2. Nesting :
.nav {
background-color: white;
ul {
list-style: none;
li {
display: inline-block;
a {
color: blue;
}
}
}
}
3. Mixins :
@mixin button($bg-color) {
padding: 10px 20px;
border-radius: 5px;
background-color: $bg-color;
}
.button-primary {
@include button(blue);
}
4. Fonctions :
@function calculate-width($total, $sidebar) {
@return $total - $sidebar;
}
.main {
width: calculate-width(1200px, 300px);
}
5. Partials et organisation :
// _variables.scss
$primary-color: #007bff;
// _mixins.scss
@mixin button { }
// main.scss
@import 'variables';
@import 'mixins';
6. Héritage :
.button {
padding: 10px 20px;
}
.button-primary {
@extend .button;
background-color: blue;
}
7. Opérateurs :
.container {
width: 100% / 3; // Calcul automatique
}
SCSS vs Sass
Sass (indentation) :
.nav
background-color: white
ul
list-style: none
SCSS (accolades) :
.nav {
background-color: white;
ul {
list-style: none;
}
}
Recommandation : SCSS (plus proche du CSS, plus facile à apprendre).
Écosystème SCSS
Outils :
- Sass : Compilateur officiel
- Dart Sass : Implémentation moderne (recommandé)
- Node-sass : Ancien (déprécié)
- PostCSS : Post-processeur (complémentaire)
Intégration :
- Webpack : Module bundler
- Gulp : Task runner
- Vite : Build tool moderne
- Parcel : Zero-config bundler
IDE :
- Extensions VS Code
- IntelliSense
- Live compilation
Quand utiliser SCSS ?
Utiliser SCSS quand :
- ✅ Projet de taille moyenne à grande
- ✅ Besoin de maintenabilité
- ✅ Équipe de développeurs
- ✅ Design system complexe
- ✅ Réutilisabilité importante
CSS pur suffit quand :
- ✅ Petit projet
- ✅ Prototype rapide
- ✅ Pas de répétition
- ✅ Pas besoin de variables
Compilation SCSS
Processus :
- Écrire du SCSS
- Compiler en CSS
- Navigateur utilise le CSS
Commandes :
# Installation
npm install -g sass
# Compilation
sass input.scss output.css
# Watch (auto-compilation)
sass --watch input.scss:output.css
# Compilation minifiée
sass input.scss output.css --style compressed
Exercices guidés
Exercice 1 : Installation
Installez SCSS :
- Installez Sass (Dart Sass)
- Vérifiez avec
sass --version - Testez la compilation
Exercice 2 : Première compilation
Créez un fichier style.scss :
- Écrivez du SCSS simple
- Compilez en CSS
- Vérifiez le résultat
Exercice 3 : Comparer CSS vs SCSS
Créez deux versions :
- Version CSS pure (répétitive)
- Version SCSS (avec variables, nesting)
- Comparez la maintenabilité
Exercice 4 : Watch mode
Utilisez le watch mode :
sass --watch scss:css- Modifiez le SCSS
- Observez la compilation automatique
Exercice 5 : Structure de base
Créez une structure SCSS :
- Fichier principal
main.scss - Dossier
partials/ - Importez les partials
❌ Erreurs fréquentes
Erreur 1 : Penser que SCSS = CSS
❌ Mauvais :
<link rel="stylesheet" href="style.scss">
✅ Bon :
<link rel="stylesheet" href="style.css">
Pourquoi : Le navigateur ne comprend pas SCSS, il faut compiler.
Erreur 2 : Oublier de compiler
❌ Mauvais :
- Modifier SCSS
- Oublier de compiler
- Se demander pourquoi ça ne marche pas
✅ Bon :
- Utiliser watch mode
- Ou compiler après chaque modification
Pourquoi : SCSS doit être compilé en CSS.
Erreur 3 : Nesting trop profond
❌ Mauvais :
.nav {
ul {
li {
a {
span {
strong {
// Trop profond !
}
}
}
}
}
}
✅ Bon :
.nav {
ul {
list-style: none;
}
a {
color: blue;
}
}
Pourquoi : Nesting profond = CSS trop spécifique, difficile à maintenir.
Erreur 4 : Confondre Sass et SCSS
❌ Mauvais :
// Syntaxe Sass (indentation)
.nav
background: white
✅ Bon :
// Syntaxe SCSS (accolades)
.nav {
background: white;
}
Pourquoi : SCSS est plus proche du CSS, plus facile.
Erreur 5 : Pas d'organisation
❌ Mauvais :
// Tout dans un fichier de 5000 lignes
✅ Bon :
// Partials organisés
@import 'variables';
@import 'mixins';
@import 'components';
Pourquoi : Organisation = maintenabilité.
🚀 Mini-projet
Mission : Convertir un projet CSS en SCSS
Prenez un projet CSS existant et convertissez-le :
Conversions :
- Variables CSS → Variables SCSS
- Répétitions → Mixins
- Sélecteurs répétitifs → Nesting
- Organisation en partials
Structure :
_variables.scss_mixins.scss_base.scssmain.scss(imports)
Critères :
- ✅ Variables SCSS utilisées
- ✅ Nesting approprié (pas trop profond)
- ✅ Mixins pour code répétitif
- ✅ Partials organisés
- ✅ Compilation fonctionnelle
Objectif : Comprendre pourquoi SCSS est essentiel et convertir du CSS en SCSS organisé.
Validation : Vous pouvez passer au module suivant quand vous comprenez les avantages de SCSS, avez installé Sass, et pouvez compiler du SCSS en CSS.