BaliseTonSite

Variables & Typage

Crée des ingrédients dynamiques pour tes formules CSS.

Imagine : dans ton atelier d'alchimie, tu as des fioles étiquetées : "Essence de Feu #ff4444", "Poudre Lunaire 2rem", "Élixir d'Ombre rgba(0,0,0,0.8)". Au lieu de chercher à chaque fois tes ingrédients, tu les stockes dans des variables SCSS. Change la recette d'une fiole, et tous tes sorts qui l'utilisent sont automatiquement mis à jour !

2.1Déclarer une variable

En SCSS, une variable commence toujours par $. Tu peux y stocker des couleurs, des tailles, des polices... tous tes ingrédients de base.

// Variables de couleur
$couleur-feu: #ff4444;
$couleur-eau: #4444ff;
$couleur-terre: #8B4513;

// Variables de taille
$taille-titre: 2.5rem;
$marge-standard: 1rem;
$rayon-carte: 8px;

// Variables de police
$police-titre: 'Inter', sans-serif;
$police-code: 'JetBrains Mono', monospace;

2.2Utiliser les variables

Une fois déclarées, tes variables deviennent réutilisables partout dans ton SCSS. Plus besoin de retenir #ff4444, tu écris juste $couleur-feu !

.bouton-attaque {
  background-color: $couleur-feu;
  padding: $marge-standard;
  border-radius: $rayon-carte;
  font-family: $police-titre;
  font-size: $taille-titre;
}

.carte-sort {
  border: 2px solid $couleur-feu;
  margin: $marge-standard;
}

2.3Portée des variables (scope)

Comme dans un jeu, tes variables ont une "zone d'effet". Une variable globale est accessible partout, une variable locale n'existe que dans son bloc.

// Variable globale (définie en dehors de tout bloc)
$couleur-primaire: #3498db;

.carte-mage {
  // Variable locale (seulement dans ce bloc)
  $couleur-mana: #3498db;
  
  background: $couleur-primaire;  // ✅ Fonctionne
  border-color: $couleur-mana;    // ✅ Fonctionne
}

.carte-guerrier {
  background: $couleur-primaire;  // ✅ Fonctionne (variable globale)
  border-color: $couleur-mana;    // ❌ Erreur : $couleur-mana n'existe pas ici
}

2.4Interpolation : intégrer des variables partout

L'interpolation, c'est un mot compliqué pour dire "insérer une variable dans du texte". En gros, tu veux que SCSS remplace #{$ma-variable} par la valeur de ta variable, même quand c'est dans un endroit où normalement on ne peut pas mettre de variables.

Normalement, tu utilises tes variables comme ça : color: $ma-couleur;. Mais parfois, tu veux que ta variable devienne partie du nom d'une classe ou d'un fichier. C'est là qu'intervient l'interpolation avec #{$variable}.

$prefixe: "btn";
$taille: "large";
$theme: "sombre";

// ❌ Ça ne marche PAS (SCSS ne comprend pas)
.prefixe-taille {
  padding: 1rem 2rem;
}

// ✅ Ça marche avec l'interpolation
.#{$prefixe}-#{$taille} {
  padding: 1rem 2rem;
  background: url("themes/#{$theme}/bouton.png");
}

Cas d'usage concrets

L'interpolation est super utile pour créer des systèmes de composants dynamiques (boutons de différentes tailles), gérer plusieurs thèmes, ou générer automatiquement des classes CSS à partir de listes de valeurs.

Autre exemple pratique : tu peux l'utiliser dans les noms de propriétés CSS aussi !

$direction: "top";
$propriete: "margin";

.element {
  #{$propriete}-#{$direction}: 20px;
  // Génère : margin-top: 20px;
}

2.5Variables par défaut

Le flag !default permet de définir une valeur de secours. Si la variable existe déjà, elle garde sa valeur. Sinon, elle prend la valeur par défaut.

// Définition par défaut
$couleur-primaire: #3498db !default;
$taille-base: 1rem !default;

// Si $couleur-primaire était déjà définie ailleurs, 
// elle garde sa valeur. Sinon, elle devient #3498db

2.6Types de données en SCSS

SCSS reconnaît différents types de valeurs, chacun avec ses propres propriétés :

  • Nombres : 12, 3.14, 10px, 2em
  • Chaînes : "Arial", 'Inter', sans-serif
  • Couleurs : #ff0000, red, rgb(255,0,0)
  • Booléens : true, false
  • Null : null (absence de valeur)
  • Listes : 10px 20px 30px, (item1, item2, item3)
  • Maps : (clé1: valeur1, clé2: valeur2)

2.7Bonnes pratiques pour nommer les variables

Nomme tes variables selon leur fonction plutôt que leur apparence :

// ❌ Basé sur l'apparence (que se passe-t-il si tu changes le bleu ?)
$couleur-bleue: #3498db;
$texte-rouge: #e74c3c;

// ✅ Basé sur la fonction (plus flexible et compréhensible)
$couleur-primaire: #3498db;
$couleur-danger: #e74c3c;
$couleur-succes: #27ae60;

// ✅ Pour un thème gaming
$couleur-mana: #3498db;
$couleur-vie: #e74c3c;
$couleur-experience: #f39c12;

Astuce de maître alchimiste

Organise tes variables par catégories dans des fichiers séparés : _colors.scss, _typography.scss, _spacing.scss. Ton atelier sera plus ordonné et tes formules plus faciles à retrouver !

Verifie tes acquis

3 questions pour valider ce chapitre

1. Comment declare-t-on une variable en SCSS ?

En SCSS, les variables commencent par $. Ex : $primary: #2563eb; puis utilisation : color: $primary;