Live Coding - Éditeur HTML/CSS

HTML

CSS

Aperçu:
localhost:3000
Résultat LIVE
💡 Astuce: Le code est sauvegardé automatiquement. Utilisez le splitter pour redimensionner, et choisissez une taille de device pour l'aperçu !

📋 TPs Pratiques - Formulaires HTML

Maîtrisez tous les types d'inputs HTML avec des exemples pratiques ! 🎯

TP 0 - Ma première page HTML5

Structure HTML5 minimale avec balises sémantiques

Code HTML

Résultat

🎯 QCM TP 0 - Test vos connaissances

Vérifiez votre compréhension des balises et notions utilisées dans le TP 0 ! 📚

TP 1 - Fieldset Simple

Formulaire simple avec fieldset et 2 champs obligatoires

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 2 - Contenu Riche + Formulaire

Paragraphes et éléments de contenu riche (gras, lien, listes)

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 3 - Radio Buttons

Formulaire avec radio buttons groupées

Code HTML

</form>

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 4 - Select + Checkboxes

Select et checkboxes groupées

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 5 - File Upload + Select Multiple

Upload fichier et sélection multiple

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 6 - Types d'inputs: Date, Nombre, URL

Formulaire avec date, age (minimum 18, maximum 50), site web - tous les champs obligatoires

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 7 - Image, Lien, TextArea, Range

Image, lien, textarea et range input

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

TP 8 - Inputs avec Pattern et Validations

Formulaire avec téléphone (+212 désactivé, 8 chiffres), nom (lettres uniquement, 3-30 caractères), mot de passe (minimum 8 caractères)

Code HTML

Résultat

⏳ Cliquez sur "Valider" pour afficher le résultat

🎯 QCM HTML - Test vos connaissances

Testez vos connaissances sur les balises et attributs HTML ! 📚

1. Propriétés de Texte (Text Properties)

Contrôles

CLIQUEZ

Prévisualisation en Direct

DEMO
Ceci est un exemple de texte qui permet de tester toutes les propriétés CSS. Cliquez sur les boutons à gauche pour voir les effets en temps réel. L'alignement du texte va changer: gauche, centre, droite et justifié !

Code en Temps Réel

LIVE
CSS
.textDemo {
  color: #333;
  background-color: white;
  font-family: Arial, sans-serif;
  font-size: 1rem; /* 16px */
  font-weight: normal;
  text-align: center;
  text-decoration: none;
  text-transform: none;
}
HTML
<div class="textDemo">
  Ceci est un exemple de texte...
<div>

📝 TP Pratique - Propriétés de Texte CSS

Écrivez le CSS pour styliser le tableau ci-dessous ! 🎨

Instructions

On suppose qu'on a un tableau, applique les styles suivants :

  • 1 point : Le tableau doit être avec la police Arial
  • 1 point : Appliquer une taille de police de 18px aux cellules du tableau (td, th)
  • 1 point : Appliquer une couleur de texte #333 (gris foncé) aux cellules du tableau
  • 1 point : Centrer le texte dans les cellules du tableau
  • 1 point : Transformer le texte en majuscules dans les cellules du tableau
  • 1 point : Appliquer une couleur de fond #667eea (bleu-violet) aux cellules d'en-tête th
  • 1 point : Appliquer une couleur de fond #f0f0f0 (gris clair) aux cellules de données td
  • 1 point : Appliquer une bordure de 1px solid #ddd aux cellules du tableau (td, th)

💡 Réfléchissez aux propriétés CSS à utiliser pour chaque instruction. Vous devez trouver les noms des propriétés CSS vous-même !

Écrivez votre CSS ici :

🎯 Quiz - Propriétés de Texte CSS

Testez vos connaissances sur les propriétés de texte CSS ! 📚

2. Box Model (Modèle de Boîte)

Contrôles

CLIQUEZ

Box Model Visuel

DEMO
Boîte CSS
Container (largeur 100%)
Margin
Border
Padding
Content

Code en Temps Réel

LIVE
CSS
.boxDemo {
  padding: 0;
  margin: 0;
  border: 3px solid #667eea;
  border-radius: 0;
  width: 120px;
  height: 80px;
  box-shadow: none;
}
HTML
<div class="boxDemo">
  Boîte CSS
</div>
Padding vs Margin

🎯 Quiz - Box Model (Contrôles)

Testez vos connaissances sur les propriétés du Box Model ! 📚

📝 TP Pratique - Formulaire de Login

Créez un design de formulaire de login en utilisant les propriétés du Box Model ! 🎨

Sans Style LIVE

💡 Le CSS s'applique en temps réel dans l'iframe (isolé)

Résultat

Login

Instructions

On suppose qu'on a un formulaire, applique les styles suivants :

  • 1 point : Ajouter un espace intérieur de 20px au formulaire
  • 1 point : Ajouter un espace extérieur de 20px auto au formulaire
  • 1 point : Ajouter une bordure de 2px solid #ddd au formulaire
  • 1 point : Ajouter des coins arrondis de 10px au formulaire
  • 1 point : Définir une largeur de 300px pour le formulaire
  • 1 point : Ajouter une ombre de 0 2px 10px rgba(0,0,0,0.1) au formulaire
  • 1 point : Le formulaire et ses éléments doivent être centrés
  • 1 point : Les champs de saisie (input) doivent avoir une bordure de 1px solid #ccc
  • 1 point : Le titre h2 doit être centré
  • 1 point : Le titre h2 doit être en gras (font-weight: bold)
  • 1 point : Le titre h2 doit être en majuscules
  • 1 point : Le bouton doit avoir une couleur de fond #667eea
  • 1 point : Le bouton doit avoir un padding de 10px
  • 1 point : Le bouton doit avoir des coins arrondis de 15px
  • 1 point : Le bouton doit avoir une couleur de police blanche
  • 1 point : Le bouton doit être en gras
  • 1 point : Quand on survole le bouton (hover), changer sa couleur de fond en #5568d3
    💡 Aide: utilisez la pseudo-classe :hover
  • 1 point : Quand un champ de saisie est valide, appliquer une bordure verte de 2px solid #4caf50
    💡 Aide: utilisez la pseudo-classe :valid
  • 1 point : Quand un champ de saisie n'est pas valide, appliquer une bordure rouge de 2px solid #e74c3c
    💡 Aide: utilisez la pseudo-classe :invalid

Zone CSS

2.1. Sélecteurs CSS (CSS Selectors)

* (Sélecteur Universel)

Universal Selector

p (Sélecteur de Type)

Type Selector

.intro (Sélecteur de Classe)

Class Selector

#unique-para (Sélecteur ID)

ID Selector

.parent-container p (Descendant)

Descendant Selector

.parent-container > span (Enfant Direct)

Direct Child Selector

#unique-para + button (Adjacent)

Adjacent Sibling Selector

#first-button ~ button (Général)

General Sibling Selector

tr:nth-child() (nth-child)

nth-child Selector

button.btn-primary (Multiple)

Multiple Selector

🎯 Quiz - Sélecteurs CSS

Testez vos connaissances sur les sélecteurs CSS ! 📚

100%

Énoncé : Donnez le sélecteur CSS exact qui permet de cibler les éléments demandés (comme .test, #test, div > p, etc.).

📝 TP Pratique - Sélecteurs CSS

100%

HTML

<div id="contenu">
  <h2 class="titre">Titre principal</h2>

  <p class="texte">Paragraphe 1</p>

  <section class="bloc">
    <h3 class="sous-titre">Bloc</h3>
    <p class="texte important">Paragraphe 2</p>
  </section>

  <p id="note">Paragraphe 3</p>
  <p class="fin">Paragraphe 4</p>
</div>

Aperçu

Titre principal

Paragraphe 1

Bloc

Paragraphe 2

Paragraphe 3

Paragraphe 4

Questions

Écris uniquement le sélecteur.

3.1. Pseudo-classes CSS

:hover

Pseudo-classe :hover

:active / :visited

Pseudo-classes :active et :visited

:focus

Pseudo-classe :focus

:disabled / :checked

Pseudo-classes :disabled et :checked

Tableau des Pseudo-classes Courantes

Pseudo-classe Description Exemple
:hover Survol souris button:hover { ... }
:active Pendant le clic a:active { ... }
:focus Élément focus input:focus { ... }
:disabled Désactivé input:disabled { ... }
:checked Coché input:checked { ... }
:visited Lien visité a:visited { ... }
:valid / :invalid Validation formulaire input:valid { ... }

:valid / :invalid

Pseudo-classes :valid et :invalid

🎯 Quiz - Pseudo-classes CSS

Testez vos connaissances sur les pseudo-classes CSS ! 📚

📝 TP Pratique - Pseudo-classes CSS

Instructions

  • 1 point : L'image si on survole (:hover) doit afficher une bordure colorée
    💡 Aide: utilisez :hover avec border ou border-color (couleur au choix)
  • 1 point : Les inputs si on clique dessus (:focus) doivent avoir une bordure 1px solid blue et une ombre 0 0 8px rgba(102, 126, 234, 0.3)
  • 1 point : Les inputs :disabled doivent avoir une opacité 0.5
  • 1 point : Les checkboxes si on les coche (:checked) doivent avoir une couleur verte et une bordure arrondie 50%
  • 1 point : Les liens si on survole (:hover) doivent avoir une taille de police 20px
  • 1 point : Les inputs si ils sont valides (:valid) doivent avoir une bordure 1px solid green
  • 1 point : Les inputs si ils sont invalides (:invalid) doivent avoir une bordure 1px solid red

Code HTML

<img src="https://picsum.photos/100" id="img">
<input type="text" placeholder="Votre nom">
<input type="text" disabled value="Désactivé">
<input type="checkbox"> Option 1
<input type="checkbox" checked> Option 2
<a href="#">Lien vers une page</a>
<input type="email" required placeholder="email@example.com">
<input type="email" required placeholder="email-invalide">

Écrivez votre CSS ici :

Sans Style LIVE

💡 Le CSS s'applique en temps réel dans l'iframe (isolé)

4. Flexbox (Disposition Flexible)

Contrôles

CLIQUEZ

Flexbox Visuel

DEMO

Produit 1

29,99€

Produit 2

19,99€

Produit 3

39,99€

💡 Astuce: Testez les différents modes d'affichage !
📦 block = empilé | ✅ flex = flexible | ➡️ inline = en ligne | 🔲 inline-block = bloc en ligne | 👻 none = caché

Code en Temps Réel

LIVE
CSS
HTML
<div class="flex-container">
  <!-- Carte 1 -->
  <div class="card">
    <h4>Produit 1</h4>
    <p class="price">29,99€</p>
    <button>Acheter</button>
  </div>

  <!-- Carte 2 -->
  <div class="card">
    <h4>Produit 2</h4>
    <p class="price">19,99€</p>
    <button>Acheter</button>
  </div>

  <!-- Carte 3 -->
  <div class="card">
    <h4>Produit 3</h4>
    <p class="price">39,99€</p>
    <button>Acheter</button>
  </div>
<div>

5. CSS Grid (Grille)

Contrôles

CLIQUEZ

Grid Visuel

DEMO
1
2
3
4
5
6

Code en Temps Réel

LIVE
CSS
.grid-container {
  display: grid; /* Active la grille */
  grid-template-columns: repeat(3, 1fr); /* 3 colonnes égales */
  gap: 15px; /* Espacement 15px */
}
HTML
<div class="grid-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

🎯 Quiz - Flexbox CSS

Testez vos connaissances sur Flexbox ! 📚

📝 TP Pratique - Flexbox : Cartes de Produits

Flexbox TP Reference

Instructions

  • Tous les éléments : font-family: Arial, sans-serif
  • Body : background-color: #f2f2f2; margin: 0; padding: 0
  • #titre1 : text-align: center; font-size: 30px; font-family: "Comic Sans MS", Arial, sans-serif; color: #1a3d6f; text-transform: uppercase
  • .row : Les 3 cartes sur une seule ligne (utiliser flexbox), gap: 20px
  • .card : width: 220px; background-color: #ffffff; border: 2px solid #333333; border-radius: 10px; padding: 12px; text-align: center
  • .card button : border: 1px solid #333333; padding: 6px 12px; border-radius: 6px; background-color: #d9edf7; cursor: pointer
  • .card a : color: #1a3d6f; text-decoration: none

Code HTML

<h1 id="titre1">PRODUITS LES PLUS VENDUS</h1>
<div class="row">
  <div class="card">
    <p>Clavier</p>
    <p>120 DH</p>
    <button>Achat</button>
    <a href="#">Détails</a>
  </div>
  <div class="card">
    <p>Souris</p>
    <p>80 DH</p>
    <button>Achat</button>
    <a href="#">Détails</a>
  </div>
  <div class="card">
    <p>Écran</p>
    <p>1500 DH</p>
    <button>Achat</button>
    <a href="#">Détails</a>
  </div>
</div>

Écrivez votre CSS ici :

Sans Style LIVE

💡 Le CSS s'applique en temps réel dans l'iframe (isolé)

📝 TP Pratique - Menu Simple avec Flexbox

Aperçu attendu (menu complet)
Flex + hover

Attendu: menu horizontal sans puces, espacements réguliers, liens sans soulignement, hover avec fond doux.

Instructions

  • Structure HTML: Une liste <ul> avec 3 <li> (Accueil, Services, Contact)
  • Supprime les puces: list-style: none;
  • Active Flexbox: Sur <ul> ajoute display: flex; (menu horizontal verrouillé)
  • Direction: Items horizontalement (flex-direction: row)
  • Espacement: gap: 20px; ou margin
  • Items: Padding 10px 15px, couleur: #667eea
  • Liens: text-decoration: none;
  • Hover: changer la couleur de fond des liens au survol (ex: #e0e7ff)

Code HTML (Ne pas modifier)

<nav class="menu">
  <ul>
    <li>
      <a href="#">Accueil</a>
    </li>
    <li>
      <a href="#">Services</a>
    </li>
    <li>
      <a href="#">Contact</a>
    </li>
  </ul>
</nav>

Écrivez votre CSS ici :

Résultat en Direct

📝 TP Pratique - Menu avec Taille Fixe et Flexible

Aperçu attendu (menu complet)
Taille fixe 800px → Flexible 100%

Attendu: menu horizontal avec fond gris foncé, texte blanc, 5 éléments répartis équitablement, taille fixe 800px puis flexible 100%.

Instructions

Exercice 3 : (7 Pts)
  1. Créer le menu suivant (Taille fixe de 800px) (5 Pts)
    • Structure HTML: Une liste <ul> avec 5 <li> (Accueil, Produits, Services, Equipe, Contact)
    • Supprime les puces: list-style: none;
    • Active Flexbox: display: flex; sur <ul>
    • Fond gris foncé: background: #4a5568; ou similaire
    • Texte blanc: color: white; sur les liens
    • Taille fixe: width: 800px; sur .menu
    • Liens: text-decoration: none;
    • Répartition équitable: flex: 1; sur chaque <li>
  2. Faire en sorte que le menu soit de taille flexible (100%) (2 Pts)
    • Remplacer width: 800px; par width: 100%;
    • Le menu doit s'adapter à la largeur du conteneur

Code HTML (Ne pas modifier)

<nav class="menu">
  <ul>
    <li>
      <a href="#">Accueil</a>
    </li>
    <li>
      <a href="#">Produits</a>
    </li>
    <li>
      <a href="#">Services</a>
    </li>
    <li>
      <a href="#">Equipe</a>
    </li>
    <li>
      <a href="#">Contact</a>
    </li>
  </ul>
</nav>

Écrivez votre CSS ici :

Résultat en Direct

5.1. Display, Visibility & Opacity

Display, Visibility & Opacity

Démo Interactive

📦 display
Contrôle l'affichage
⚠️ L'élément disparaît et ne prend plus d'espace
👻 visibility
Contrôle la visibilité
ℹ️ L'élément est invisible mais garde sa place
📊 Comparaison:
display: noneSupprime l'espace ❌
visibility: hiddenGarde l'espace ✅

6. Transformations CSS (Transform)

Transform permet de déplacer, pivoter, agrandir/réduire ou incliner un élément sans casser le flux. Combiné à transition, on obtient des effets fluides.

Mini TP (rapide) : crée un carré de 120px centré, fond bleu (#3498db), texte blanc.
  • Au repos : transform: rotate(15deg) scale(0.95);
  • Au survol : transform: rotate(0deg) scale(1.1);
  • Transition douce : transition: transform 0.3s ease;

Mini TP Express

1) Édite le CSS. 2) Clique Appliquer. 3) Compare avec la solution attendue.

Zone CSS

Votre live

LIVE

Solution attendue

LIVE

Contrôles

CLIQUEZ

Transform Visuel

DEMO
TRANSFORM

Code en Temps Réel

LIVE
CSS
.element {
  transform: none; /* Rotation, Scale, Translate, Skew */
}
HTML
<div class="transform-box">
  TRANSFORM
</div>

7. Animations CSS (@keyframes)

Décorticage : animation: pulse 1s infinite;

pulse
Nom de l'animation @keyframes
1s
Durée totale (1 seconde)
infinite
Nombre de répétitions (infini)

@keyframes définit des animations réutilisables. Tu spécifies les étapes (0%, 50%, 100%) et les transitions sont appliquées via animation.

Mini TP (rapide) : crée un carré 100px, fond rouge (#e91e63), texte blanc.
  • 0%, 100% : scale(1)
  • 50% : scale(1.15)
  • Animation : animation: pulse 1s infinite;

Mini TP Express

1) Édite le CSS (LIVE). 2) Compare avec la solution attendue.

Zone CSS (LIVE)

Votre live

ANIM

Solution attendue

ANIM

Contrôles

CLIQUEZ

Animation Visuelle

DEMO
ANIM

Code en Temps Réel

LIVE
CSS
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.element {
  animation-name: none;
  animation-duration: 2s;
  animation-iteration-count: infinite;
}
HTML
<div class="animation-box">
  ANIM
</div>

9. Transitions CSS (Animations Douces)

Décorticage : transition: all 0.3s ease;

all
Propriétés affectées (all = toutes)
0.3s
Durée de la transition (300ms)
ease
Timing function (accélération)

transition crée une animation fluide entre deux états d'un élément lors d'un changement CSS (ex: au survol). C'est plus simple que @keyframes pour les petits effets.

Mini TP (rapide) : crée un bouton 140px × 50px, fond cyan (#00bcd4), texte blanc.
  • Repos : background #00bcd4, transform scale(1)
  • Survol : background #0097a7 (plus foncé), transform scale(1.1)
  • Transition : transition: all 0.3s ease;

Mini TP Express

1) Édite le CSS. 2) Clique Appliquer. 3) Survole et compare avec la solution.

Zone CSS

Votre live (survole)

Solution attendue (survole)

Contrôles

CLIQUEZ

Transition Visuelle

DEMO
HOVER ME!

☝️ Survolez la boîte avec la souris

Code en Temps Réel

LIVE
CSS
.bouton {
  background: #667eea;
  transition: all 0.5s ease; /* Toutes propriétés, 0.5s */
}

.bouton:hover {
  background: #764ba2;
  transform: scale(1.1); /* S'agrandit au survol */
}
HTML
<div class="transform-box">
  HOVER ME!
</div>

📚 Slides PDF - Présentations CSS

Parcourez les présentations PDF pour approfondir vos connaissances CSS

PDFs Disponibles

Aucun PDF trouvé dans le dossier

🎯 Quiz de Compréhension CSS

Testez vos connaissances ! Répondez aux questions et obtenez votre score 📊

💡 Utilisez les boutons "Suivant" et "Précédent" pour naviguer entre les questions

Bootstrap - Définition, Avantages & Classes utiles

Documentation & Intégration

Liens officiels

📚 Documentation Bootstrap 5.3
🎨 Exemples & Templates
🔧 Composants Bootstrap

Comment intégrer Bootstrap ?

Ajoute dans <head> :
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> Avant </body> :
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

⚠️ IMPORTANT : Bootstrap utilise un système de 12 colonnes par ligne

Chaque row peut contenir jusqu'à 12 colonnes. Tu peux diviser en : 12 × col-1, 6 × col-2, 4 × col-3, 3 × col-4, 2 × col-6, ou 1 × col-12.

Bootstrap Grid System

Exemple : col-4 + col-4 + col-4 = 12 colonnes ✅

Avantages Framework CSS

Bootstrap est un framework (bibliothèque) CSS/JS qui fournit une grille responsive, des composants prêts à l'emploi (boutons, cartes, navbars…) et des classes utilitaires (marges, couleurs…) pour créer une UI rapidement et de manière cohérente.

  • Rapide: beaucoup de design sans écrire beaucoup de CSS.
  • Responsive: grille et breakpoints (sm/md/lg/xl/xxl).
  • Uniforme: styles cohérents (espacements, typographie, couleurs).
  • Composants: boutons, cards, alerts, modals, navbar, etc.
  • Utilitaires: classes pour margin/padding, couleurs, flex, display…

Top classes (les plus utilisées)

Layout / Grille
container row col col-6 col-sm-4 col-md-4
Breakpoints: sm (≥576px), md (≥768px), lg (≥992px), xl (≥1200px), xxl (≥1400px).
Différence lg/xl/xxl: lg = tablettes paysage, xl = écrans desktop, xxl = grands écrans (≥1400px).
Spacing
m-3 mt-3 mb-2 p-3 px-3 py-2
Couleurs
text-primary text-success bg-primary bg-light bg-dark
Noms: primary, success, danger, warning, info, light, dark.
Borders / UI
border rounded shadow btn btn-primary card

Zone HTML (Bootstrap) LIVE

Résultat Bootstrap (iframe) LIVE

💡 Cette preview charge Bootstrap uniquement dans l'iframe (pas de conflit avec votre CSS de la page).

TP Bootstrap — Grille responsive (sm/md) + bg-*

Énoncé

Énoncé TP Bootstrap

Objectif

  • Reproduire la grille (A, B, C, D, E, F, G)
  • sm: B et C prennent col-sm-12 (ils passent en 1 colonne sur mobile)
  • md: B = col-md-6, C = col-md-6 (largeur égale)
  • D/E/F/G = col-sm-6 + col-md-3
  • Chaque bloc A..G doit avoir une classe bg-*
Règles de vérification
- Structure: 1× col-12, 2× col-sm-12 col-md-6, 4× col-sm-6 col-md-3
- Chaque bloc doit avoir une classe bg-*

Code HTML (TP) LIVE

Résultat (iframe)

💡 Bootstrap est chargé uniquement dans l’iframe (pas de conflit avec votre CSS).

TP Bootstrap — Section principale avec 3 colonnes (8 pts)

Résultat attendu

Objectif

  • 1 pt: La section est placée dans un container Bootstrap pour centrer le contenu.
  • 1 pt: La section est composée d'une ligne (row) divisée en 3 colonnes (col).
  • 1 pt: Chaque colonne contient une image arrondie (img-fluid, rounded).
  • 1 pt: Chaque colonne contient du texte court (3-4 mots) centré (text-center).
  • 1 pt: Chaque colonne a une bordure (border).
  • 3 pts: Chaque colonne contient un bouton Bootstrap (btn) avec des couleurs différentes (btn-primary, btn-success, btn-danger).
Règles de vérification
- Structure: containerrow → 3× col text-center
- Chaque colonne: img-fluid rounded + texte court + border
- Boutons: btn btn-primary, btn btn-success, btn btn-danger

Code HTML (TP) LIVE

Votre résultat