Afficher la table des matières Masquer la table des matières
- Recette simple de tarte tomate moutarde pour l’été — ingrédients et timing
- Étapes claires pour réussir la pâte et éviter qu’elle ne se détrempe
- Quizz : Cette Tarte à la Tomate et Moutarde
- Résultat
- ${q.text} Choisissez une réponse puis appuyez sur Entrée ou cliquez sur une option. ${q.options.map(opt => ` ${opt.text} Sélectionner `).join("")} `; // Activer/désactiver boutons de navigation prevBtn.disabled = currentIndex === 0; nextBtn.textContent = (currentIndex === questions.length - 1) ? "Terminer" : TEXTS.NEXT; // Réinitialiser summary si visible summary.classList.add("hidden"); // Attacher gestionnaires aux options attachOptionHandlers(); // Mettre le focus sur la liste pour navigation clavier const optionsList = document.getElementById("options-list"); optionsList.focus(); } /* Attache click + keyboard aux boutons d'option */ function attachOptionHandlers() { const optionButtons = Array.from(document.querySelectorAll(".option-btn")); const optionsList = document.getElementById("options-list"); let focusedIndex = 0; // Si l'utilisateur avait déjà répondu, afficher le feedback const prevChoice = userAnswers[currentIndex]; if (prevChoice) { // Affiche le feedback enregistré const chosenEl = optionButtons.find(b => b.dataset.option === prevChoice); if (chosenEl) showFeedbackForChoice(chosenEl); } optionButtons.forEach((btn, idx) => { // Clic sur option btn.addEventListener("click", () => { handleChoice(btn); // rendre focus clair btn.focus(); }); // Styles d'état sélectionné pour ARIA btn.setAttribute("tabindex", "-1"); }); // Navigation clavier : flèches pour se déplacer, Entrée pour valider optionsList.addEventListener("keydown", (ev) => { const max = optionButtons.length - 1; if (ev.key === "ArrowDown") { ev.preventDefault(); focusedIndex = Math.min(max, focusedIndex + 1); optionButtons[focusedIndex].focus(); } else if (ev.key === "ArrowUp") { ev.preventDefault(); focusedIndex = Math.max(0, focusedIndex - 1); optionButtons[focusedIndex].focus(); } else if (ev.key === "Enter" || ev.key === " ") { ev.preventDefault(); // Trouver celui qui a le focus const active = document.activeElement; if (active && active.classList.contains("option-btn")) { handleChoice(active); } else { // Si focus sur liste mais pas sur option, valider l'option 0 optionButtons[focusedIndex].click(); } } }); } /* Gère le choix de l'utilisateur pour une option */ function handleChoice(btn) { const optionId = btn.dataset.option; const q = questions[currentIndex]; // Trouver l'objet option const opt = q.options.find(o => o.id === optionId); // Enregistrer la réponse (remplace si l'utilisateur modifie) const prevAnswer = userAnswers[currentIndex]; userAnswers[currentIndex] = optionId; // Mettre à jour le score uniquement si la réponse est corrigée maintenant // Pour simplifier, on récompense une question une seule fois : si la réponse change, on recalcule le score complet recalcScore(); // Afficher feedback visuel showFeedbackForChoice(btn, opt); } /* Affiche le feedback (correct/incorrect) et l'explication */ function showFeedbackForChoice(btn, opt) { const q = questions[currentIndex]; // Marquer visuellement toutes les options limité pour éviter multiples choix falses const optionButtons = Array.from(document.querySelectorAll(".option-btn")); optionButtons.forEach(b => { b.disabled = true; b.classList.remove("option-correct", "option-wrong"); b.setAttribute("aria-disabled", "true"); }); // Trouver l'option correcte pour indiquer const correctOpt = q.options.find(o => o.correct); optionButtons.forEach(b => { const id = b.dataset.option; if (id === correctOpt.id) { b.classList.add("option-correct", "border-2"); } if (userAnswers[currentIndex] && id === userAnswers[currentIndex] && id !== correctOpt.id) { b.classList.add("option-wrong", "border-2"); } }); // Feedback textuel et explication const feedbackEl = document.getElementById("feedback"); const chosen = q.options.find(o => o.id === userAnswers[currentIndex]); const isCorrect = chosen && chosen.correct; feedbackEl.innerHTML = ` ${isCorrect ? 'Bonne réponse !' : 'Ce n’est pas tout à fait ça.'} ${chosen ? chosen.explication : ''} Indice : réponse correcte — ${correctOpt.text} `; // Mettre à jour progression visuelle et score progressBar.style.width = `${Math.round(((currentIndex + 1) / questions.length) * 100)}%`; scoreText.textContent = `${TEXTS.SCORE_PREFIX}${score}`; } /* Recalcule le score total selon userAnswers */ function recalcScore() { let s = 0; userAnswers.forEach((ans, idx) => { if (!ans) return; const q = questions[idx]; const chosen = q.options.find(o => o.id === ans); if (chosen && chosen.correct) s++; }); score = s; } /* Affiche le résumé final détaillé */ function showSummary() { recalcScore(); finalScore.textContent = TEXTS.FINAL(score); detailedAnswers.innerHTML = ""; questions.forEach((q, idx) => { const userAns = userAnswers[idx]; const chosen = q.options.find(o => o.id === userAns); const correct = q.options.find(o => o.correct); const ok = chosen && chosen.correct; const entry = document.createElement("div"); entry.className = "p-2 rounded explication"; entry.innerHTML = ` ${q.text} ${ok ? '✔️ Réponse correcte' : '❌ Réponse incorrecte'} ${ok ? '✅' : '➡️'} Votre réponse : ${chosen ? chosen.text : 'Aucune réponse'} Bonne réponse : ${correct.text} ${correct.explication} `; detailedAnswers.appendChild(entry); }); // Afficher la section résumé et masquer la zone question si vous le souhaitez summary.classList.remove("hidden"); } /* ========== Événements navigation ========== */ nextBtn.addEventListener("click", () => { if (currentIndex < questions.length - 1) { currentIndex++; renderQuestion(); } else { // Fin du quizz : afficher résumé // Assurer que les utilisateurs qui n'ont pas répondu voient le score progressBar.style.width = `100%`; progressText.textContent = TEXTS.PROGRESS(questions.length, questions.length); showSummary(); } }); prevBtn.addEventListener("click", () => { if (currentIndex > 0) { currentIndex--; renderQuestion(); } }); revealBtn.addEventListener("click", () => { // Affiche toutes les réponses sans compter comme "terminé" showSummary(); }); restartBtn.addEventListener("click", () => { // Reset complet currentIndex = 0; userAnswers = Array(questions.length).fill(null); score = 0; renderQuestion(); progressBar.style.width = `0%`; progressText.textContent = TEXTS.PROGRESS(1, questions.length); scoreText.textContent = `${TEXTS.SCORE_PREFIX}${score}`; }); retakeBtn.addEventListener("click", () => { // Reprendre depuis le début restartBtn.click(); // Scroller vers le haut du composant pour l'utilisateur document.getElementById("quiz-tarte").scrollIntoView({ behavior: 'smooth' }); }); tipsBtn.addEventListener("click", () => { // Affiche une boîte d'astuces sous forme accessible const box = document.createElement("div"); box.className = "mt-3 p-3 rounded border bg-amber-50"; box.innerHTML = `${TEXTS.CHEF_TIP_TITLE} ${TEXTS.CHEF_TIPS.map(p => `• ${p}`).join("")} `; // Insérer après le résumé summary.appendChild(box); box.scrollIntoView({ behavior: 'smooth' }); }); /* ========== Accessibilité additionnelle : gestion du focus global ========== */ // Permettre navigation clavier entre Prev/Next avec Tab naturellement. // Ajout : touche 'r' pour recommencer (raccourci convivial) document.addEventListener("keydown", (e) => { if (e.key.toLowerCase() === "r" && (e.ctrlKey || e.metaKey)) { // Ctrl/Cmd + R - ici on évite d'interférer avec reload du navigateur return; } if (e.key.toLowerCase() === "r") { // simple 'r' pour recommencer si l'utilisateur veut un raccourci restartBtn.focus(); } }); /* ========== Notes développeur ========== - Pas d'API externe utilisée (données embarquées). - Pour personnaliser les questions : modifier le tableau `questions` plus haut. - Pour traduire : ajuster les chaînes dans `TEXTS`. - Performance : manipulation DOM simple, aucun chargement bloquant. - Tests rapides : vérifier au clavier (flèches haut/bas, Entrée) et à la souris. ================================================= */ Ranger les plats à four verticalement dans un placard : la méthode pratique Un grand plat sous deux gratins et un moule coincé au fond : les piles compliquent vite l’accès au matériel de cuisson. Ranger les plats à four verticalement permet de saisir chaque pièce séparément, à condition de prévoir un support… Gratin de navets et de pommes de terre au thym Le gratin de navets et de pommes de terre au thym permet de réunir deux légumes simples dans un plat familial d’automne. Les pommes de terre adoucissent le goût des navets, tandis que le thym parfume la crème. Pour obtenir… Chaussons aux champignons et aux noix : refroidir la farce avant de garnir Une pâte dorée, des champignons fondants et quelques morceaux de noix : ces chaussons salés composent un repas d’automne avec une salade ou une soupe. Leur réussite dépend surtout de la farce. Trop humide, elle détrempe le dessous ; encore… Lentilles vertes aux poireaux et à la crème moutardée Des lentilles qui gardent leur tenue, des poireaux bien fondants et une sauce légèrement relevée : ce plat convient aux repas d’automne sans demander une longue liste de courses. Les lentilles sèches constituent la base du repas, tandis qu’une petite… Variantes estivales : fromages, herbes et présentations pour tous les repas Ajouter du parmesan, des copeaux de chèvre ou une boule de burrata change le profil en profondeur : le fromage apporte onctuosité tandis que le thym frais ou les herbes de Provence marquent les saveurs méditerranéennes. Pour des idées visuelles et adaptations très simples, la version colorée avec tomates anciennes se trouve aussi chez une déclinaison ultra simple, et pour des inspirations rapides à préparer, voir les recettes estivales tomates. Ces variantes rendent la tarte adaptée à un apéro, un pique-nique ou un dîner léger. 🧀🌿 Simplifier pour un plat rapide ou transformer en entrée fraîche
Cette tarte à la tomate et moutarde est ultra simple et devient rapidement la star de l’été : prête en moins de 40 minutes, elle combine tomate, moutarde et pâte croustillante pour un résultat à la fois frais et réconfortant. Ce plat polyvalent fonctionne comme entrée fraîche, plat rapide ou bouchée d’apéritif, parfait pour la cuisine estivale. À la clef : une recette simple, goûteuse et facile à préparer qui sublime les saveurs méditerranéennes. 🍅✨
Recette simple de tarte tomate moutarde pour l’été — ingrédients et timing
Ingrédients essentiels : il faut 1 pâte feuilletée, 3 à 4 tomates bien mûres, 2 c. à soupe de moutarde à l’ancienne, un filet d’huile d’olive et du sel et poivre. Temps total : préparation 10 min et cuisson 25–30 min, ce qui en fait une option idéale quand le temps manque. Suivre ces proportions garantit une tarte équilibrée entre acidité et pep’s ; c’est une recette simple qui marche à tous les coups. 🔥
Étapes claires pour réussir la pâte et éviter qu’elle ne se détrempe
Préchauffer le four à 200°C, dérouler la pâte et la piquer, puis étaler la moutarde à l’ancienne en laissant un bord visible : la moutarde forme une barrière qui protège la pâte. Disposer des tranches de tomate égouttées, assaisonner et ajouter un filet d’huile d’olive avant d’enfourner 25–30 minutes. Cette méthode simple empêche la tarte de s’alourdir et garantit une pâte croustillante tandis que les tomates restent fondantes. 🧑🍳
Pour approfondir les astuces anti-humidité et variantes de cuisson, consulter une fiche pratique qui détaille la technique de saupoudrage de chapelure et le choix de la pâte : astuce anti-humidité et recette classique. Cette référence montre comment quelques gestes simples transforment une tarte ordinaire en pièce maîtresse estivale. 🌿
Quizz : Cette Tarte à la Tomate et Moutarde
Testez vos connaissances et découvrez des astuces pour réussir la star de l’été !
Accessible au clavier — utilisez les flèches pour naviguer entre les options et Entrée pour valider.
Ranger les plats à four verticalement dans un placard : la méthode pratique
Un grand plat sous deux gratins et un moule coincé au fond : les piles compliquent vite l’accès au matériel de cuisson. Ranger les plats à four verticalement permet de saisir chaque pièce séparément, à condition de prévoir un support…
Gratin de navets et de pommes de terre au thym
Le gratin de navets et de pommes de terre au thym permet de réunir deux légumes simples dans un plat familial d’automne. Les pommes de terre adoucissent le goût des navets, tandis que le thym parfume la crème. Pour obtenir…
Chaussons aux champignons et aux noix : refroidir la farce avant de garnir
Une pâte dorée, des champignons fondants et quelques morceaux de noix : ces chaussons salés composent un repas d’automne avec une salade ou une soupe. Leur réussite dépend surtout de la farce. Trop humide, elle détrempe le dessous ; encore…
À lire Compote de pommes ultra simple avec seulement quatre ingrédients, dont… de l’eau !
Lentilles vertes aux poireaux et à la crème moutardée
Des lentilles qui gardent leur tenue, des poireaux bien fondants et une sauce légèrement relevée : ce plat convient aux repas d’automne sans demander une longue liste de courses. Les lentilles sèches constituent la base du repas, tandis qu’une petite…
Variantes estivales : fromages, herbes et présentations pour tous les repas
Ajouter du parmesan, des copeaux de chèvre ou une boule de burrata change le profil en profondeur : le fromage apporte onctuosité tandis que le thym frais ou les herbes de Provence marquent les saveurs méditerranéennes. Pour des idées visuelles et adaptations très simples, la version colorée avec tomates anciennes se trouve aussi chez une déclinaison ultra simple, et pour des inspirations rapides à préparer, voir les recettes estivales tomates. Ces variantes rendent la tarte adaptée à un apéro, un pique-nique ou un dîner léger. 🧀🌿
Simplifier pour un plat rapide ou transformer en entrée fraîche
Pour transformer la tarte en entrée fraîche ou en bouchées d’apéritif, cuire en grand format puis découper en carrés; elle se sert aussi parfaitement froide. Si l’urgence est de mise, la recette est prête en 40 minutes avec des ingrédients du placard — voir une version express qui mise sur la pâte prête à l’emploi pour aller encore plus vite : version express prête en 15 minutes. L’astuce clé : préparer les tomates en amont pour gagner du temps sans perdre en qualité. ⏱️
Pour obtenir la tarte tomate parfaite au rendu croustillant et présentation soignée, s’inspirer de recommandations ciblées comme tarte tomate parfaite qui détaille le choix des tomates et la cuisson. Tester une variante autour de la mozzarella ou d’une pâte brisée crée un résultat plus rustique et tout aussi savoureux. Le point final : choisir de bonnes tomates et ne pas saturer la pâte garantissent une tarte à la fois esthétique et gourmande — lancez-vous et transformez vos soirées d’été en petits festins. 🍽️
Tarte rustique aux pommes et aux noisettes : replier les bords sans moule
Une tarte rustique se façonne directement sur une plaque : la pâte accueille les fruits, puis ses bords se replient pour les retenir. Avec des pommes en lamelles et de la poudre de noisettes, elle compose un dessert d’automne généreux,…
À lire Le Dîner du Dimanche : Prêt à l’Avance et Savoureux sans Effort
Potée de chou blanc, carottes et saucisses : échelonner les cuissons
Une potée d’automne réussie repose sur un détail simple : chaque ingrédient entre dans la cocotte au bon moment. Les carottes épaisses demandent de l’avance, le chou émincé s’attendrit plus vite, et les saucisses réclament un traitement différent selon qu’elles…
Créer une station pour les boissons chaudes sur une étagère de cuisine
Quand les boissons chaudes accompagnent les pauses d’automne, leurs accessoires peuvent vite occuper plusieurs placards. Une station sur une étagère rassemble l’essentiel sans exiger un meuble supplémentaire. Le principe : mesurer la place disponible, garder les produits ouverts devant les…
Trois tambours à broder à carreaux pour un mur cosy
Quelques chutes à carreaux, trois tambours à broder et une palette rouille, crème et brun suffisent à composer une décoration murale chaleureuse. Le tissu apporte du relief, tandis que les cercles adoucissent les lignes du motif. Ce projet convient à…