HTML & CSS Moderne
Pour centrer un élément parfaitement, on utilise
display: flex sur le parent. C'est plus robuste que les marges automatiques.
.parent {
display: flex; /* Active le mode Flexible */
justify-content: center; /* Axe Horizontal */
align-items: center; /* Axe Vertical */
height: 100vh; /* Hauteur de l'écran */
}
Les Variables CSS (Custom Properties)
Les variables CSS permettent de stocker des valeurs réutilisables dans toute votre feuille de style. Elles sont définies dans :root pour être accessibles globalement.
:root {
--primary-color: #004E92;
--spacing: 20px;
--border-radius: 12px;
}
.element {
background-color: var(--primary-color);
padding: var(--spacing);
border-radius: var(--border-radius);
}
Avantages : Réutilisation, cohérence, facilité de maintenance et possibilité de changer le thème en modifiant quelques variables.
Le Box Model
Chaque élément HTML est représenté comme une boîte rectangulaire avec les propriétés suivantes :
| Propriété | Description |
|---|---|
content |
Le contenu de l'élément (texte, image, etc.) |
padding |
Espace entre le contenu et la bordure |
border |
Bordure autour du padding |
margin |
Espace externe entre l'élément et ses voisins |
Exercice Pratique
Créez un bouton avec les caractéristiques suivantes :
- Padding de 15px horizontal et 10px vertical
- Bordure de 2px solide de couleur #004E92
- Marge de 20px en haut et en bas
- Arrondi des coins de 8px
Layout CSS
Flexbox
Flexbox est un modèle de mise en page unidimensionnel conçu pour distribuer l'espace entre les éléments d'un conteneur.
.container {
display: flex;
justify-content: space-between; /* Alignement horizontal */
align-items: center; /* Alignement vertical */
gap: 10px; /* Espacement entre éléments */
}
| Propriété | Valeurs courantes | Description |
|---|---|---|
justify-content |
flex-start, center, flex-end, space-between, space-around | Aligne les éléments sur l'axe principal |
align-items |
stretch, flex-start, center, flex-end | Aligne les éléments sur l'axe secondaire |
flex-direction |
row, column, row-reverse, column-reverse | Définit la direction des éléments |
CSS Grid
CSS Grid est un système de mise en page bidimensionnel qui permet de créer des grilles complexes avec des lignes et des colonnes.
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 3 colonnes égales */
grid-template-rows: auto; /* Hauteur automatique */
gap: 10px; /* Espacement */
}
Exercice Pratique
Créez une grille avec 4 colonnes et 2 lignes. La première ligne doit avoir une hauteur fixe de 100px et la seconde une hauteur automatique.
Positionnement
La propriété position détermine comment un élément est positionné dans le document.
| Valeur | Description |
|---|---|
static |
Position normale dans le flux (valeur par défaut) |
relative |
Position relative à sa position normale |
absolute |
Position relative au premier parent positionné |
fixed |
Position relative à la fenêtre du navigateur |
sticky |
Position hybride entre relative et fixed |
position: absolute, utilisez top: 50%; left: 50%; transform: translate(-50%, -50%);
Responsive Design
Media Queries
Les Media Queries permettent d'appliquer des styles CSS différents selon les caractéristiques de l'appareil (largeur d'écran, orientation, etc.).
/* Styles pour écrans de moins de 768px */
@media (max-width: 768px) {
.container {
flex-direction: column;
}
.sidebar {
display: none;
}
}
/* Styles pour écrans en mode portrait */
@media (orientation: portrait) {
.header {
height: 60px;
}
}
Points de rupture courants :
max-width: 576px- Téléphonesmax-width: 768px- Tablettesmax-width: 992px- Petits écransmax-width: 1200px- Écrans moyens
Unités Responsives
Utilisez des unités relatives pour créer des designs qui s'adaptent à différentes tailles d'écran.
| Unité | Description |
|---|---|
% |
Pourcentage par rapport à l'élément parent |
vw |
1% de la largeur de la fenêtre (viewport width) |
vh |
1% de la hauteur de la fenêtre (viewport height) |
rem |
Relative à la taille de police de l'élément racine (html) |
em |
Relative à la taille de police de l'élément parent |
rem pour les tailles de police et les espacements, et vw/vh pour les dimensions de layout.
Images Responsives
Assurez-vous que vos images s'adaptent à la taille de l'écran sans déformer le layout.
.responsive-img {
max-width: 100%; /* Ne dépasse pas la largeur du conteneur */
height: auto; /* Maintient le ratio d'aspect */
}
.background-img {
background-size: cover; /* Couvre toute la zone */
background-position: center; /* Centre l'image */
}
Exercice Pratique
Créez un layout qui passe de 3 colonnes sur desktop à 1 colonne sur mobile. Utilisez Flexbox ou Grid et une media query pour gérer la transition.
Effets & Animations CSS
Transitions
Les transitions permettent de changer les valeurs des propriétés CSS de manière fluide sur une durée donnée.
.element {
background-color: blue;
transition: background-color 0.3s ease;
}
.element:hover {
background-color: red;
}
Propriétés de transition :
transition-property- Propriété à animertransition-duration- Durée de l'animationtransition-timing-function- Courbe d'accélérationtransition-delay- Délai avant le début
Animations & Keyframes
Les animations CSS permettent de créer des séquences d'animation complexes avec des keyframes.
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(-100%);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.element {
animation: slideIn 0.5s ease-out;
}
Transformations
La propriété transform permet de modifier l'apparence d'un élément en le déplaçant, tournant, mettant à l'échelle ou l'inclinant.
.element {
transform: rotate(45deg) scale(1.1) translateX(10px);
transition: transform 0.3s ease;
}
Exercice Pratique
Créez un bouton avec un effet de survol qui :
- Change de couleur de fond
- Se déplace légèrement vers le haut (translateY)
- A une ombre portée plus prononcée
React & Hooks
import { useState } from 'react';
function Compteur() {
// Déclaration d'une variable d'état
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Vous avez cliqué {count} fois
</button>
);
}
Java POO
public class Etudiant {
private String nom;
public Etudiant(String nom) {
this.nom = nom;
}
public void direBonjour() {
System.out.println("Salut, je suis " + this.nom);
}
}