Module 4.3 – SCSS
Objectif
Comprendre pourquoi utiliser SCSS, maîtriser les variables, l'imbrication, et organiser le style de manière professionnelle.
Théorie
Pourquoi SCSS ?
SCSS (Sassy CSS) est un préprocesseur CSS qui étend CSS avec des fonctionnalités avancées.
Avantages :
- Variables : Réutiliser des valeurs
- Imbrication : Structure plus claire
- Mixins : Blocs de code réutilisables
- Fonctions : Calculs et transformations
- Organisation : Diviser en plusieurs fichiers
Workflow :
- Écrire du code SCSS (
.scss) - Compiler en CSS (
.css) - Utiliser le CSS dans le HTML
Installation
Via npm (Node.js requis) :
npm install -g sass
Compiler un fichier :
sass input.scss output.css
Compiler avec surveillance (auto-compile) :
sass --watch input.scss:output.css
Variables
Les variables permettent de stocker des valeurs réutilisables.
Syntaxe :
$nom-variable: valeur;
Exemples :
// Couleurs
$primary-color: #2563eb;
$secondary-color: #64748b;
$text-color: #1e293b;
// Tailles
$font-size-base: 16px;
$spacing-unit: 8px;
// Utilisation
h1 {
color: $primary-color;
font-size: $font-size-base * 1.5;
margin-bottom: $spacing-unit * 2;
}
Avantages :
- Changement centralisé (modifier une variable change partout)
- Cohérence des valeurs
- Maintenance facilitée
Imbrication
Permet d'imbriquer les sélecteurs pour une structure plus claire.
CSS classique :
.nav {
background: white;
}
.nav ul {
list-style: none;
}
.nav li {
display: inline-block;
}
.nav a {
text-decoration: none;
color: blue;
}
SCSS avec imbrication :
.nav {
background: white;
ul {
list-style: none;
}
li {
display: inline-block;
a {
text-decoration: none;
color: blue;
}
}
}
Attention : Ne pas trop imbriquer (maximum 3-4 niveaux).
Mixins
Les mixins sont des blocs de code réutilisables.
Définition :
@mixin nom-mixin($parametre) {
propriété: $parametre;
autre-propriété: valeur;
}
Utilisation :
@include nom-mixin(valeur);
Exemple :
@mixin flex-center {
display: flex;
justify-content: center;
align-items: center;
}
@mixin button-style($bg-color, $text-color) {
background-color: $bg-color;
color: $text-color;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: darken($bg-color, 10%);
}
}
// Utilisation
.container {
@include flex-center;
}
.btn-primary {
@include button-style($primary-color, white);
}
Fonctions SCSS
SCSS fournit des fonctions utiles.
Fonctions de couleur :
$primary: #2563eb;
.light {
background: lighten($primary, 20%);
}
.dark {
background: darken($primary, 20%);
}
.transparent {
background: rgba($primary, 0.5);
}
Fonctions mathématiques :
$base-size: 16px;
.small {
font-size: $base-size * 0.75; // 12px
}
.large {
font-size: $base-size * 1.5; // 24px
}
Créer sa propre fonction :
@function calculate-width($columns, $gap) {
@return ($columns * 100px) + ($gap * ($columns - 1));
}
.grid {
width: calculate-width(3, 20px); // 340px
}
Héritage (@extend)
Permet d'hériter des styles d'un autre sélecteur.
%button-base {
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
.primary-button {
@extend %button-base;
background: blue;
color: white;
}
.secondary-button {
@extend %button-base;
background: gray;
color: black;
}
Organisation en fichiers
Diviser le SCSS en plusieurs fichiers pour une meilleure organisation.
Structure :
styles/
├── main.scss // Fichier principal
├── _variables.scss // Variables (le _ signifie partial)
├── _mixins.scss // Mixins
├── _base.scss // Styles de base
├── _components.scss // Composants
└── _layout.scss // Layout
main.scss :
// Imports
@import 'variables';
@import 'mixins';
@import 'base';
@import 'layout';
@import 'components';
Partials
Les fichiers partiels (commençant par _) ne sont pas compilés seuls, ils sont importés.
// _variables.scss
$primary-color: #2563eb;
// main.scss
@import 'variables'; // Le _ est optionnel
Exercice
-
Installer SCSS
- Installez Sass via npm
- Vérifiez l'installation :
sass --version
-
Créer des variables
- Créez un fichier
_variables.scss - Définissez des variables pour :
- Couleurs principales
- Tailles de police
- Espacements
- Utilisez-les dans votre CSS
- Créez un fichier
-
Utiliser l'imbrication
- Refactorisez votre CSS existant avec l'imbrication
- Organisez les sélecteurs de manière hiérarchique
-
Créer des mixins
- Créez un mixin pour les boutons
- Créez un mixin pour flexbox center
- Utilisez-les dans votre code
-
Organiser en fichiers
- Divisez votre SCSS en plusieurs fichiers
- Créez
_variables.scss,_mixins.scss,main.scss - Importez tout dans
main.scss
-
Compiler
- Compilez votre SCSS en CSS
- Utilisez la surveillance automatique
- Vérifiez que le CSS généré fonctionne
Quiz
-
Que signifie SCSS ?
- Super CSS
- Sassy CSS
- Simple CSS
-
Comment déclare-t-on une variable SCSS ?
- var nom = valeur;
- $nom: valeur;
- nom: valeur;
-
Que permet l'imbrication ?
- Rendre le code plus rapide
- Structurer le code de manière hiérarchique
- Ajouter des animations
-
Que fait un mixin ?
- Change les couleurs
- Réutilise un bloc de code
- Compile le SCSS
-
Comment importer un fichier partial ?
- @include 'fichier'
- @import 'fichier'
- import 'fichier'
Mini défi
Mission : Refactoriser votre CSS en SCSS
Transformez votre projet CSS en SCSS bien organisé :
Structure à créer :
styles/
├── main.scss
├── _variables.scss
├── _mixins.scss
├── _base.scss
├── _layout.scss
└── _components.scss
Contenu de chaque fichier :
-
_variables.scss
- Toutes les variables (couleurs, tailles, espacements)
- Au moins 10 variables bien nommées
-
_mixins.scss
- Mixin pour flexbox center
- Mixin pour boutons
- Mixin pour media queries
- Au moins 3 mixins utiles
-
_base.scss
- Reset CSS
- Styles de base (body, typographie)
- Utilisation des variables
-
_layout.scss
- Structure de la page
- Container, header, footer
- Grid/Flexbox layouts
-
_components.scss
- Styles des composants (boutons, cartes, etc.)
- Utilisation des mixins
-
main.scss
- Imports de tous les fichiers
- Styles globaux si nécessaire
Critères :
- ✅ Structure organisée en fichiers
- ✅ Utilisation extensive des variables
- ✅ Au moins 3 mixins créés et utilisés
- ✅ Imbrication appropriée (pas trop profonde)
- ✅ Code compilé fonctionne correctement
- ✅ Code plus maintenable qu'avant
Objectif : Maîtriser SCSS pour écrire du CSS plus organisé et maintenable.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez SCSS et avez organisé votre code en fichiers modulaires.