HTML débutant
Le cours qui précède
Ouvrir le coursCSS - Feuilles de Style
Découvrez le pouvoir du CSS pour transformer vos pages web. Apprenez la syntaxe, les sélecteurs, les propriétés essentielles et le box model.
CSS (Cascading Style Sheets) est le langage utilisé pour décrire la présentation et la mise en forme des documents HTML.
Design basique, peu attrayant
Design professionnel et attrayant
Couleurs, polices, espacements, animations
Un style pour plusieurs pages
Modification centralisée du design
Adaptation aux différents écrans
Découvrez la structure de base d'une règle CSS et ses composants essentiels.
css
sélecteur {
propriété: valeur;
propriété: valeur;
}
css
h1 {
color: blue;
font-size: 24px;
text-align: center;
}
Détermine quels éléments HTML seront stylés
Exemples : h1, .classe, #id
Définit quel aspect sera modifié
Exemples : color, font-size, margin
Spécifie comment la propriété sera appliquée
Exemples : red, 16px, center
css
color: red;
css
color: #FF0000;
css
color: rgb(255, 0, 0);
Noms, hexadécimal, RGB
css
font-size: 16px;
css
width: 50%;
css
margin: 1em;
Pixels, pourcentages, em
css
text-align: center;
css
display: block;
css
font-weight: bold;
Valeurs prédéfinies
css
background: url('image.jpg');
css
transform: rotate(45deg);
css
width: calc(100% - 20px);
Fonctions CSS avancées
Apprenez à documenter et organiser votre code CSS avec des commentaires efficaces.
css
/* Ceci est un commentaire CSS */
h1 {
color: blue;
}
/* Commentaire sur plusieurs lignes */
.ma-classe {
padding: 20px; /* Commentaire inline */
}
css
/* ================================ STYLES GÉNÉRAUX ================================ */
body {
font-family: Arial, sans-serif;
margin: 0;
}
/* --- Navigation --- */
.navbar {
background: #333;
padding: 1rem; /* Espacement confortable */
}
/* TODO: Ajouter styles responsives */
/* FIXME: Corriger alignement sur IE11 */
/* Styles temporaires pour les tests À supprimer avant la production */
.test-border {
border: 2px solid red;
}
css
/* ==================
HEADER STYLES
================== */
css
/* Hauteur fixe nécessaire
pour le sticky header */
css
/* TODO: Optimiser pour mobile */
/* FIXME: Bug sur Safari */
/* HACK: Solution temporaire */
Découvrez les trois méthodes pour appliquer du CSS à vos pages HTML.
css
<p style="color: red; font-size: 18px;">
Texte avec style inline
</p>
<div style="background: blue; padding: 10px;">
Boîte avec fond bleu
</div>
css
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: navy;
text-align: center;
}
.highlight {
background: yellow;
padding: 5px;
}
</style>
</head>
<body>
<h1>Titre stylé</h1>
<p class="highlight">Texte surligné</p>
</body>
</html>
css
📁 mon-site/
📄 index.html
📄 styles.css
📁 css/
📄 main.css
📄 responsive.css
css
<head>
<link rel="stylesheet"
href="styles.css">
</head>
css
/* Styles pour les titres */
h1 {
color: #2c3e50;
font-family: Arial, sans-serif;
}
/* Classe utilitaire */
.container {
max-width: 1200px;
margin: 0 auto;
}
Le CSS externe respecte le principe de séparation des responsabilités, améliore les performances et facilite la maintenance. C'est la méthode utilisée par tous les sites professionnels.
Les sélecteurs déterminent quels éléments HTML seront affectés par vos styles CSS.
css
h1 {
color: blue;
}
p {
font-size: 16px;
}
div {
margin: 10px;
}
Cible tous les éléments d'un type donné
Exemples : tous les <h1>, tous les <p>
css
.highlight {
background: yellow;
}
.button {
padding: 10px 20px;
border: none;
}
<p class="highlight">...</p>
<button class="button">...</button>
Réutilisable sur plusieurs éléments
css
#header {
background: navy;
height: 80px;
}
#footer {
text-align: center;
}
<header id="header">...</header>
<footer id="footer">...</footer>
Unique dans la page
css
p.highlight { ... }
Paragraphes ayant la classe "highlight"
css
.card h2 { ... }
Tous les h2 à l'intérieur d'éléments avec la classe "card"
css
.button, .link { ... }
Éléments avec la classe "button" OU "link"
css
#menu .nav-item { ... }
Éléments "nav-item" dans l'élément ayant l'ID "menu"
css
style="color: red;"
Priorité maximale (1000 points)
css
#header
Haute priorité (100 points)
css
.highlight
Priorité moyenne (10 points)
css
p, h1, div
Priorité faible (1 point)
Maîtrisez la mise en forme des listes avec les propriétés CSS dédiées : puces personnalisées, positionnement et styles avancés.
css
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
css
<ol>
<li>Créer la structure</li>
<li>Ajouter les styles</li>
<li>Tester le résultat</li>
</ol>
css
<dl>
<dt>HTML</dt>
<dd>Structure des pages</dd>
<dt>CSS</dt>
<dd>Style et design</dd>
</dl>
css
list-style-type: disc; /* Puce pleine par défaut */
list-style-type: circle; /* Puce vide */
list-style-type: square; /* Carré */
list-style-type: decimal; /* Chiffres */
list-style-type: none; /* Aucune puce */
css
list-style-position: outside; /* À l'extérieur (défaut) */
list-style-position: inside; /* À l'intérieur */
css
list-style-image: url('puce.png');
list-style-image: none; /* Par défaut */
css
list-style: square inside;
list-style: url('icon.png') outside;
css
list-style-type: decimal;
list-style-type: decimal-leading-zero;
css
list-style-type: lower-alpha;
list-style-type: upper-alpha;
css
list-style-type: lower-roman;
list-style-type: upper-roman;
css
list-style-type: lower-greek;
list-style-type: armenian;
ul.custom {
list-style: none;
ul.custom li::before {
content: "✨ ";
color: #3498db;
ul.icon-list {
list-style-image: url('check.png');
css
ul {
list-style-type: disc;
}
ul ul {
list-style-type: circle;
}
ul ul ul {
list-style-type: square;
}
css
.modern-list {
list-style: none;
padding: 0;
}
.modern-list li {
padding: 10px 15px;
margin: 5px 0;
background: #f8f9fa;
border-left: 4px solid #3498db;
border-radius: 4px;
}
css
.nav-horizontal {
list-style: none;
display: flex;
gap: 20px;
padding: 0;
}
.nav-horizontal a {
text-decoration: none;
padding: 10px 15px;
border-radius: 5px;
}
css
.nav-vertical {
list-style: none;
padding: 0;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
}
.nav-vertical a {
display: block;
padding: 12px 20px;
border-bottom: 1px solid #eee;
}
Découvrez les propriétés CSS fondamentales pour styliser vos éléments.
css
color: red; /* Nom de couleur */
color: #FF0000; /* Hexadécimal */
color: rgb(255, 0, 0); /* RGB */
color: rgba(255, 0, 0, 0.5); /* RGB + transparence */
css
background-color: lightblue;
background-image: url('image.jpg');
background-repeat: no-repeat;
background-size: cover;
css
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
font-style: italic;
Famille, taille, graisse, style de la police
css
text-align: left;
text-align: center;
text-align: right;
text-align: justify;
Gauche, centré, droite, justifié
css
text-decoration: underline;
text-decoration: line-through;
text-decoration: none;
line-height: 1.5;
Soulignement, barré, aucun, hauteur de ligne
css
width: 300px; /* Largeur fixe */
width: 50%; /* Largeur relative */
height: 200px; /* Hauteur fixe */
max-width: 100%; /* Largeur maximale */
css
padding: 20px; /* Tous les côtés */
padding: 10px 20px; /* Vertical | Horizontal */
padding-top: 15px; /* Côté spécifique */
css
margin: 20px; /* Tous les côtés */
margin: 0 auto; /* Centrer horizontalement */
margin-bottom: 30px; /* Côté spécifique */
Maîtrisez la création et la mise en forme des tableaux HTML avec CSS : bordures, espacement, style et design responsive.
css
<table>
<caption>Titre du tableau</caption>
<thead> <!-- En-tête -->
<tr> <!-- Ligne -->
<th>Colonne 1</th>
<th>Colonne 2</th>
</tr>
</thead>
<tbody> <!-- Corps -->
<tr>
<td>Données</td>
<td>Valeur</td>
</tr>
</tbody>
<tfoot> <!-- Pied (optionnel) -->
<tr>
<td colspan="2">Total</td>
</tr>
</tfoot>
</table>
css
border-collapse: separate;
border-collapse: collapse;
css
border-spacing: 10px;
border-spacing: 5px 15px;
Fonctionne uniquement avec border-collapse: separate
css
table-layout: auto;
table-layout: fixed;
auto : Largeur basée sur le contenu
fixed : Largeur basée sur la première ligne
fixed = performance améliorée pour gros tableaux
css
table {
border-collapse: collapse;
width: 100%;
margin: 0 auto;
}
th, td {
padding: 12px 15px;
text-align: left;
border: 1px solid #ddd;
}
th {
background-color: #f8f9fa;
font-weight: bold;
color: #333;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
tr:hover {
background-color: #e8f4f8;
}
css
.table-minimal {
border-collapse: collapse;
border: none;
}
.table-minimal th {
border-bottom: 2px solid #333;
padding-bottom: 10px;
}
.table-minimal td {
border-bottom: 1px solid #eee;
padding: 10px 0;
}
css
.table-card {
border-collapse: separate;
border-spacing: 0 10px;
}
.table-card tr {
background: white;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
border-radius: 8px;
}
.table-card td {
padding: 15px;
border: none;
}
css
.table-container {
overflow-x: auto;
width: 100%;
}
.table-responsive {
min-width: 600px;
width: 100%;
}
@media (max-width: 768px) {
.table-container {
border: 1px solid #ddd;
border-radius: 8px;
}
}
css
@media (max-width: 768px) {
.mobile-stack tr {
display: block;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 8px;
}
.mobile-stack th,
.mobile-stack td {
display: block;
width: 100%;
text-align: left;
}
}
Comprenez comment CSS calcule la taille et l'espacement de chaque élément.
Zone où apparaît le texte et les images
css
width: 200px; height: 100px;
Espace entre le contenu et la bordure
css
padding: 20px;
Contour visible autour du padding
css
border: 2px solid black;
Espace entre cet élément et les autres
css
margin: 10px;
css
.element {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
margin: 10px;
}
Largeur totale : 250px
200px (content) + 40px (padding) + 10px (border)
Hauteur totale : 150px
100px (content) + 40px (padding) + 10px (border)
Espace occupé : 270px × 170px
+ 20px de margin de chaque côté
css
.element {
box-sizing: border-box;
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
margin: 10px;
}
Largeur totale : 200px
width inclut padding et border
Hauteur totale : 100px
height inclut padding et border
Zone de contenu : 150px × 50px
width/height - padding - border
css
border-width: 2px;
border-style: solid;
border-color: red;
css
border: 2px solid red;
border-top: 1px dashed blue;
border-radius: 10px;
css
solid /* Ligne pleine */
dashed /* Tirets */
dotted /* Points */
double /* Double ligne */
Maîtrisez les propriétés letter-spacing, text-shadow et box-shadow pour des designs professionnels
La propriété letter-spacing contrôle l'espacement entre les caractères d'un texte. Elle permet de créer des effets typographiques élégants et d'améliorer la lisibilité.
css
letter-spacing: normal;
letter-spacing: 2px;
letter-spacing: 0.1em;
letter-spacing: -1px;
La propriété text-shadow ajoute des ombres portées au texte. Elle permet de créer des effets 3D, d'améliorer la lisibilité sur des fonds complexes, et d'ajouter du style.
css
/* offset-x | offset-y | blur | color */
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
text-shadow: 1px 1px 2px #000;
text-shadow: 0 0 10px #00ff00;
/* Multiples ombres */
text-shadow: 1px 1px 2px #000, 0 0 20px #ff0000;
Ombre classique (2px 2px 4px rgba(0,0,0,0.7)) :
Effet 3D (1px 1px 0px #ccc, 2px 2px 0px #aaa, 3px 3px 0px #888) :
Effet lumineux (0 0 10px #00ff00, 0 0 20px #00ff00) :
Contour (-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000) :
La propriété box-shadow ajoute des ombres portées aux éléments (div, boutons, cartes). Elle est essentielle pour créer de la profondeur et de l'élégance dans les interfaces modernes.
css
/* offset-x | offset-y | blur | spread | color */
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
box-shadow: 2px 4px 12px rgba(0,0,0,0.15);
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
/* Multiples ombres */
box-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 10px 30px rgba(0,0,0,0.1);
Ombre légère (0 2px 4px rgba(0,0,0,0.1)) :
Ombre médium (0 4px 12px rgba(0,0,0,0.15)) :
Ombre colorée (0 8px 25px rgba(59,130,246,0.3)) :
Ombre intérieure (inset 0 2px 4px rgba(0,0,0,0.1)) :
La propriété display contrôle comment un élément est affiché et détermine le type de boîte générée par l'élément dans le flux du document.
La propriété display définit le type d'affichage d'un élément, ce qui détermine comment il se comporte dans le flux du document et comment ses enfants sont disposés.
css
display: block;
display: inline;
display: inline-block;
display: flex;
display: grid;
display: none;
Display détermine deux choses : comment l'élément se comporte dans le flux (bloc/inline) et comment il organise ses enfants (flex/grid).
css
div {
display: block;
}
css
span {
display: inline;
}
css
.box {
display: inline-block;
}
css
.flex-container {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
}
css
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto;
gap: 1rem;
}
css
.hidden {
display: none;
}
css
.table {
display: table;
}
.table-row {
display: table-row;
}
.table-cell {
display: table-cell;
}
css
display: inline-flex;
display: inline-grid;
display: inline-table;
Testez les différentes valeurs de display en temps réel :
display: block;
Conteneur avec display: block
css
.hidden { display: none; }
Popup fermé, menu mobile caché, contenu conditionnel
css
.btn { display: inline-block; }
Boutons côte à côte avec tailles personnalisées
css
.navbar { display: flex; justify-content: space-between; }
Logo à gauche, menu à droite
css
.products { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
Cartes produits responsive automatique
Découvrez comment utiliser ces trois propriétés ensemble pour créer des effets saisissants !
css
/* Titre Hero */
.hero-title {
letter-spacing: 3px;
text-shadow: 2px 2px 8px rgba(0,0,0,0.7), 0 0 20px rgba(255,255,255,0.3);
}
/* Carte Interactive */
.card {
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
transition: all 0.3s ease;
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(0,0,0,0.15);
}
#letter-spacing #text-shadow #box-shadow #css-effets #css-avance
Mettez en pratique vos connaissances CSS avec des exercices progressifs.
Créez une carte de profil utilisateur en appliquant les propriétés CSS de base que vous venez d'apprendre.
css
<!-- HTML -->
<div class="profile-card">
<div class="avatar">JS</div>
<h2 class="name">Jean Dupont</h2>
<p class="job">Développeur Web</p>
<p class="description">
Passionné par le développement...
</p>
<button class="contact-btn">
Contacter
</button>
</div>
<!-- CSS à compléter -->
.profile-card {
/* Vos styles ici */
}
Créez une page d'accueil complète en utilisant toutes les techniques CSS apprises dans ce chapitre.
css
/* CSS recommandé */
* {
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
margin: 0;
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.hero {
background: #3498db;
color: white;
text-align: center;
padding: 80px 0;
}
.services {
/* Grid de 3 colonnes */
}
Vous avez maintenant les fondations solides pour créer des designs web magnifiques. Explorez les techniques avancées pour devenir un expert du CSS.
1. Pratiquez avec des projets personnels • 2. Explorez Flexbox et Grid • 3. Apprenez le responsive design • 4. Découvrez les animations CSS
Découvrez des outils et ressources essentiels pour approfondir vos connaissances CSS.
Le cours qui précède
Ouvrir le coursAligner sur un axe
Ouvrir le coursComposer en deux dimensions
Ouvrir le coursS’adapter à chaque écran
Ouvrir le coursMettre en mouvement
Ouvrir le cours