Organise
Des noms clairs, une arborescence logique et des fichiers légers.
PROJET WEB · GUIDE TECHNIQUE
Les critères techniques expliqués avec des exemples concrets, des erreurs fréquentes et des solutions à réutiliser dans tes projets.
<main>
<section class="actualites">
<h2>Nos actualités</h2>
<article>
<h3>Nouvelle activité</h3>
<p>Découvrez notre projet.</p>
</article>
</section>
</main>
01
AVANT DE CODER
Des noms clairs, une arborescence logique et des fichiers légers.
Le HTML décrit le contenu. Le CSS s'occupe de son apparence.
Commence par le mobile et adapte ensuite la mise en page aux grands écrans.
02
STRUCTURE & RENDU
Règle : minuscules, pas d’espace, pas de caractères spéciaux. Utilise - pour séparer les mots.
Mes Images/
Page d'accueil.html
Photo été 2026.JPG
contact_formulaire.php
img/
page-daccueil.html
photo-ete-2026.webp
contact-formulaire.php
Pourquoi ? Les espaces, majuscules et caractères spéciaux peuvent créer des problèmes avec les URL et certains serveurs.
Règle : toutes les images sont dans img/. Une image plein écran peut facilement faire 200 à 900 Ko selon son contenu et son niveau de compression. Pour ce projet, 499 Ko maximum est la limite demandée : au-delà, c’est rarement nécessaire.
Le but n’est pas de rendre chaque image minuscule à tout prix : il faut trouver le meilleur compromis entre qualité visuelle et temps de chargement.
Lorsque le visiteur arrive à la racine du site, le serveur cherche généralement un fichier d’index, typiquement index.html.
Règle : charge au minimum deux polices, puis utilise-les réellement : une pour les titres, une autre pour les textes.
Les titres attirent l’œil. Le texte reste confortable à lire.
@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@500;700&display=swap');
h1, h2, h3 {
font-family: 'Barlow', sans-serif;
font-weight: 700;
}
Le @import doit être placé au début du fichier CSS. Charger une police sans l’utiliser n’a pas d’intérêt.
03
HTML
<header><nav><a href="#">Accueil</a><a href="#">Contact</a></nav></header>
<header>
<nav>
<a href="#">Accueil</a>
<a href="#">Contact</a>
</nav>
</header>
Les lignes vides séparent les blocs logiques. Chaque enfant est décalé d’un niveau par rapport à son parent.
<img src="img/skatepark.webp">
<img
src="img/skatepark.webp"
alt="Skatepark de Suchy">
Le texte alternatif aide notamment les utilisateurs de lecteurs d’écran à comprendre les images. Une image purement décorative peut avoir alt="".
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Accueil – Suchy-Skate</title>
</head>
<div class="rouge gros">
...
</div>
<section class="presentation">
...
</section>
Une classe doit rester pertinente même si le design change. « rouge » devient faux si demain le rouge devient bleu.
<nav class="menu">
<a class="menu-lien">Accueil</a>
<a class="menu-lien">Tarifs</a>
<a class="menu-lien">Contact</a>
</nav>
<nav>
<a>Accueil</a>
<a>Tarifs</a>
<a>Contact</a>
</nav>
nav > a {
text-decoration: none;
}
Évite les <div> quand une balise sémantique existe. Les noms de classes et IDs doivent être lisibles et rester entièrement en français ou entièrement en anglais.
04
CSS & LAYOUT
body {
color: #1A1D56
background: white;
}
body {
color: #1A1D56;
background: white;
}
#contact {
display: none;
}
#sociaux {
display: none;
}
#contact,
#sociaux {
display: none;
}
/* Mobile : comportement par défaut */
nav {
display: flex;
flex-direction: column;
}
/* Puis seulement les adaptations */
@media screen and (min-width: 768px) {
nav {
flex-direction: row;
}
}
Le CSS de base doit fonctionner sur petit écran. Les media queries ajoutent ensuite les adaptations nécessaires pour les écrans plus larges.
Idéal pour aligner des éléments sur un axe.
Idéal pour une structure en lignes et colonnes.
/* Flexbox */
nav {
display: flex;
justify-content: space-between;
}
/* Grid */
.galerie {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
}
.colonne {
float: left;
width: 50%;
}
.conteneur {
display: flex;
}
.colonne {
flex: 1;
}
.element {
display: inline-block;
transform: translate(73px, 18px);
}
.conteneur {
display: flex;
justify-content: center;
align-items: center;
}
Pas d'interdiction absolue : inline-block et translate sont de vraies fonctionnalités CSS. Elles ne doivent simplement pas être utilisées pour contourner un problème de mise en page. Si leur utilisation est justifiée, explique-la en commentaire.
.titre {
position: absolute;
left: 400px;
top: 250px;
}
.image {
position: absolute;
left: 700px;
top: 100px;
}
/* Bouton toujours visible */
.bouton-retour {
position: fixed;
right: 1rem;
bottom: 1rem;
}
Pour la mise en page normale, utilise Grid ou Flexbox. Absolute/fixed sont réservés aux éléments qui doivent réellement sortir du flux, comme un bouton de retour en haut ou un menu burger.
05
AVANT DE RENDRE