Formation DWWM - Bonnes pratiques d'organisation
2025 - 2026
Pourquoi tout mélanger c'est une mauvaise idée
Tout mettre dans un seul fichier HTML
<!DOCTYPE html>
<html>
<head>
<style>
/* 500 lignes de CSS ici... */
body { background: blue; }
.header { font-size: 2em; }
.navbar { display: flex; }
/* ... encore 497 lignes ... */
</style>
</head>
<body>
<!-- 1000 lignes de HTML ici... -->
</body>
</html>
Vous mettez les couteaux, fourchettes, cuillères, ouvre-boîtes, économe, fouet, tous ensemble dans le même tiroir. Résultat : vous ne trouvez jamais rien !
Chaque type d'ustensile a sa place : couteaux ensemble, fourchettes ensemble, etc. Résultat : vous trouvez ce que vous cherchez en 2 secondes !
Si tout est mélangé :
Si le CSS est séparé :
.btn-acheterSéparer HTML et CSS
Créer un fichier CSS externe
<head>
<style>
body {
background: #333;
}
</style>
</head>
<head>
<link rel="stylesheet"
href="style.css">
</head>
style.css :
body {
background: #333;
}
<!-- Dans index.html -->
<head>
<link rel="stylesheet" href="style.css">
</head>
<!DOCTYPE html>
<html>
<head>
<style>
.header { background: blue; padding: 20px; }
.navbar { display: flex; gap: 10px; }
.button { background: green; color: white; }
</style>
</head>
<body>
<header class="header">Mon Site</header>
<nav class="navbar">...</nav>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="header">Mon Site</header>
<nav class="navbar">...</nav>
</body>
</html>
style.css - Tout le style au même endroit !
.header { background: blue; padding: 20px; }
.navbar { display: flex; gap: 10px; }
.button { background: green; color: white; }
Les avantages concrets
<!-- index.html -->
<link rel="stylesheet" href="style.css">
<!-- contact.html -->
<link rel="stylesheet" href="style.css">
<!-- about.html -->
<link rel="stylesheet" href="style.css">
Comment ça marche :
index.htmlstyle.css et le garde en mémoirecontact.htmlstyle.css déjà téléchargéScénario : Bug sur le bouton "Acheter"
style.css, rechercher .btn-acheterStructure de dossiers
<!-- index.html (à la racine) -->
<head>
<link rel="stylesheet" href="css/style.css">
<script src="js/script.js"></script>
</head>
css/style.cssstyle.css (simple et clair)responsive.css (descriptif)main.js (standard)logo-entreprise.png (tirets, pas d'espaces)style 2 final vraiment.css (espaces, pas clair)Styles.CSS (majuscules = problèmes sur serveur Linux)s.css (trop court, pas descriptif)style.css pas Style.CSSmon-style.cssformulaire-contact.cssmon style.css = erreurétudiant.css = problèmesstyle@2024.cssPlusieurs fichiers CSS = encore plus organisé !
La solution : Diviser par fonction/zone
/* variables.css - Toutes les variables au même endroit */
:root {
/* Couleurs */
--couleur-primaire: #42affa;
--couleur-secondaire: #ffa07a;
--couleur-texte: #333;
--couleur-fond: #f5f5f5;
/* Tailles */
--taille-petit: 0.8em;
--taille-normal: 1em;
--taille-grand: 1.5em;
/* Espacements */
--espacement-xs: 5px;
--espacement-s: 10px;
--espacement-m: 20px;
--espacement-l: 40px;
/* Breakpoints (mobile-first) */
--breakpoint-tablet: 768px;
--breakpoint-desktop: 1024px;
}
/* layout.css - Structure de la page + responsive */
/* Mobile first (par défaut) */
.container {
max-width: 1200px;
margin: 0 auto;
padding: var(--espacement-s);
}
.grid {
display: grid;
grid-template-columns: 1fr; /* Mobile = 1 colonne */
gap: var(--espacement-m);
}
/* Tablette */
@media (min-width: 768px) {
.container {
padding: var(--espacement-m);
}
.grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* Desktop */
@media (min-width: 1024px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
/* components.css - Composants réutilisables + responsive */
/* === BOUTONS === */
.btn {
padding: var(--espacement-s) var(--espacement-m);
border-radius: 5px;
border: none;
cursor: pointer;
font-size: var(--taille-normal);
}
.btn-primary {
background: var(--couleur-primaire);
color: white;
}
/* Boutons plus grands sur desktop */
@media (min-width: 1024px) {
.btn {
padding: var(--espacement-m) var(--espacement-l);
font-size: var(--taille-grand);
}
}
/* === CARDS === */
.card {
background: white;
padding: var(--espacement-m);
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
Tout le code responsive dans un seul fichier. Problème : pour modifier un composant, il faut ouvrir 2 fichiers !
Chaque composant a ses media queries. Avantage : tout est au même endroit, facile à maintenir !
@media (min-width: ...)
components.css :
.card { display: grid; grid-template-columns: repeat(3, 1fr); }
responsive.css (50 lignes plus loin) :
@media (max-width: 768px) {
.card { grid-template-columns: repeat(2, 1fr); }
}
😵 Pour modifier la card, il faut ouvrir 2 fichiers !
components.css :
/* === CARD === */
.card {
display: grid;
grid-template-columns: 1fr; /* Mobile par défaut */
gap: 20px;
}
/* Tablette */
@media (min-width: 768px) {
.card {
grid-template-columns: repeat(2, 1fr);
}
}
/* Desktop */
@media (min-width: 1024px) {
.card {
grid-template-columns: repeat(3, 1fr);
}
}
✨ Tout le CSS de la card au même endroit !
Méthode 1 : Dans le HTML
<head>
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/layout.css">
<link rel="stylesheet" href="css/components.css">
</head>
main.css (fichier principal)
/* main.css - Importe tous les autres fichiers */
@import url('variables.css');
@import url('reset.css');
@import url('layout.css');
@import url('components.css');
Dans le HTML
<head>
<link rel="stylesheet" href="css/main.css">
</head>
Pour devenir pro
<div style="color: red; font-size: 20px;">
Texte
</div>
<div class="texte-important">Texte</div>
/* Dans style.css */
.texte-important {
color: red;
font-size: 20px;
}
.bleu { color: blue; }
.grand { font-size: 20px; }
.box1 { ... }
.div2 { ... }
.titre-principal { color: blue; }
.texte-important { font-size: 20px; }
.card-produit { ... }
.header-navigation { ... }
/* ============================
HEADER
============================ */
.header {
background: var(--couleur-primaire);
padding: 20px;
}
/* Navigation principale */
.nav-main {
display: flex;
gap: 20px;
}
/* ============================
FOOTER
============================ */
.footer {
background: #333;
color: white;
}
:root {
--couleur-primaire: #42affa;
}
.header { background: var(--couleur-primaire); }
.button { background: var(--couleur-primaire); }
.link { color: var(--couleur-primaire); }
Changer la couleur ? Une seule ligne à modifier !
.header { background: #42affa; }
.button { background: #42affa; }
.link { color: #42affa; }
# Initialiser Git
git init
# Ajouter tous les fichiers
git add .
# Créer un commit
git commit -m "Structure HTML/CSS organisée"
# Pousser sur GitHub
git push
style="")Avant / Après
😵 Impossible à maintenir !
✨ Clair et professionnel !
<head>
<style>
body { background: #f5f5f5; }
.header { padding: 20px; background: blue; }
.nav { display: flex; }
/* 200 lignes de CSS... */
</style>
</head>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mon Site</title>
<link rel="stylesheet" href="css/main.css">
</head>
css/main.css - Organisé !
@import url('variables.css');
@import url('reset.css');
@import url('layout.css');
@import url('components.css');
HTML pour la structure
CSS pour le style
JavaScript pour l'interactivité
💡 À retenir : Un code bien organisé = Un développeur heureux !