Session BRE05 Help

Mini-Projet : ToDoList

Préparation du repository

  • Dans votre dossier bre05-js-j6, créez un dossier todolist

  • Créez un fichier index.html dans le dossier todolist

  • Créez un fichier style.css dans le dossier todolist

  • Créez un fichier index.js dans le dossier todolist

Le contenu des fichiers

index.html

<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mini-Projet ToDoList</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <header> <h1>Ma Liste</h1> </header> <ul id="todo-list"> <!-- Exemple pour vous montrer la structure HTML à créer --> <li class="todo-item"> <input type="checkbox" class="todo-checkbox"> <span class="todo-text">Faire les courses</span> <button class="delete-btn">Supprimer</button> </li> </ul> <form id="todo-form"> <input type="text" id="todo-input" placeholder="Nouvelle tâche..." required> <button type="submit" id="add-btn">+</button> </form> </div> <script type="application/javascript" src="index.js"></script> </body> </html>

style.css

* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', sans-serif; background-color: #f0f2f5; display: flex; justify-content: center; padding-top: 40px; } .container { background: white; width: 90%; max-width: 450px; padding: 2rem; border-radius: 20px; box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1); } header h1 { margin-bottom: 20px; text-align: center; color: #1a1a1a; } #todo-list { list-style: none; margin-bottom: 25px; max-height: 400px; overflow-y: auto; } .todo-item { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 10px; transition: background 0.2s; } .todo-item:hover { background: #f8f9fa; } .todo-text { flex: 1; font-size: 1rem; transition: color 0.3s, text-decoration 0.3s; } .completed .todo-text { text-decoration: line-through; color: #a0aec0; } .todo-checkbox { width: 18px; height: 18px; cursor: pointer; accent-color: #6c5ce7; } #todo-form { display: flex; gap: 10px; border-top: 1px solid #eee; padding-top: 20px; } #todo-input { flex: 1; padding: 12px; border: 1px solid #ddd; border-radius: 10px; outline: none; } #add-btn { background: #6c5ce7; color: white; border: none; padding: 0 20px; border-radius: 10px; cursor: pointer; font-size: 1.5rem; } .delete-btn { background: none; border: none; color: #ff7675; cursor: pointer; font-weight: bold; font-size: 0.8rem; }

index.js

let todos = []; window.addEventListener('DOMContentLoaded', () => { });

Consignes

Nous allons reprendre le principe de l'exercice de la todolist mais en l'améliorant.

Cette fois la liste des tâches va être remplie par les ajouts depuis votre formulaire.

Chaque tâche de la liste devra générer une structure HTML semblable à celle fournie en exemple (vous devrez donc retirer celle placée en guise d'exemple dans le HTML) :

<li class="todo-item"> <input type="checkbox" class="todo-checkbox"> <span class="todo-text">Faire les courses</span> <button class="delete-btn">Supprimer</button> </li>

À la soumission du formulaire, une tâche est ajoutée à la liste et dans le HTML.

Lorsque la case de cette liste est cochée, son texte devient barré.

Lorsque l'on appuie sur le bouton supprimer, elle est supprimée de la liste.

13 January 2026