Afficher la table des matières Masquer la table des matières
- Recette rapide : clafoutis abricot fondant en 30 minutes
- Étapes express pour un clafoutis abricot ultra fondant
- Variantes gourmandes et astuces de cheffe pour un résultat irrésistible
- Quizz : Ce Clafoutis Abricot Fondant
- ${sanitize(q.question)} Choisissez ${q.type === 'multiple' ? 'une ou plusieurs réponses' : 'une seule réponse'}. #${state.currentIndex + 1} Options ${q.choices.map((c, idx) => renderChoice(q, c, idx)).join('')} `; // Attacher gestionnaires aux boutons choix const choiceButtons = quizContainer.querySelectorAll('.choice-btn'); choiceButtons.forEach(btn => { btn.addEventListener('click', onChoiceClick); btn.addEventListener('keydown', onChoiceKeydown); }); // Restorer sélection si déjà répondu if (state.answers[q.id]) { restoreSelection(q); } // Focus sur première option pour navigation clavier const firstBtn = quizContainer.querySelector('.choice-btn'); if (firstBtn) firstBtn.focus(); } /* Création HTML d'un choix (bouton pour accessibilité clavier) */ function renderChoice(question, choice, idx) { // Pour multiple, on permet toggles ; pour single, sélection unique const inputType = question.type === 'multiple' ? 'checkbox' : 'radio'; // We use button-like elements for accessible toggles return ` ${idx + 1} ${sanitize(choice.text)} ${inputType === 'checkbox' ? 'Multiple' : 'Unique'} `; } /* ---------- Gestion des interactions ---------- */ function onChoiceClick(e) { const btn = e.currentTarget; const qid = btn.dataset.qid; const choiceId = btn.dataset.choice; const inputType = btn.dataset.inputtype; const question = QUIZ_TEXT.questions.find(q => q.id === qid); if (inputType === 'checkbox') { // Toggle multiple selection const pressed = btn.getAttribute('aria-pressed') === 'true'; btn.setAttribute('aria-pressed', String(!pressed)); // Met à jour visual (outline via CSS) updateAnswerMultiple(qid); } else { // Single choice: désactiver autres const allBtns = quizContainer.querySelectorAll(`.choice-btn[data-qid="${qid}"]`); allBtns.forEach(b => b.setAttribute('aria-pressed', 'false')); btn.setAttribute('aria-pressed', 'true'); state.answers[qid] = choiceId; // Afficher feedback immédiat pour single-choice showFeedback(question); } } /* Support navigation clavier sur boutons (Enter/Espace) */ function onChoiceKeydown(e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); e.currentTarget.click(); } // Flèches pour naviguer entre options if (e.key === 'ArrowDown' || e.key === 'ArrowRight') { e.preventDefault(); const next = e.currentTarget.parentElement.nextElementSibling; if (next) next.querySelector('.choice-btn').focus(); } if (e.key === 'ArrowUp' || e.key === 'ArrowLeft') { e.preventDefault(); const prev = e.currentTarget.parentElement.previousElementSibling; if (prev) prev.querySelector('.choice-btn').focus(); } } /* Met à jour la sélection multiple dans state */ function updateAnswerMultiple(qid) { const pressedBtns = Array.from(document.querySelectorAll(`.choice-btn[data-qid="${qid}"]`)) .filter(b => b.getAttribute('aria-pressed') === 'true') .map(b => b.dataset.choice); state.answers[qid] = pressedBtns; // Feedback dynamique pour multiple const question = QUIZ_TEXT.questions.find(q => q.id === qid); showFeedback(question); } /* Afficher feedback (correct/incorrect + explication) */ function showFeedback(question) { const feedbackEl = quizContainer.querySelector('#feedback'); const user = state.answers[question.id]; let correct = false; if (question.type === 'single') { correct = user === question.answer; } else { // multiple: comparer ensembles (ordre non important) const expected = question.answer.slice().sort(); const got = Array.isArray(user) ? user.slice().sort() : []; correct = (expected.length === got.length) && expected.every((v, i) => v === got[i]); } if (user === undefined || (Array.isArray(user) && user.length === 0)) { feedbackEl.innerHTML = `Aucune réponse sélectionnée.`; return; } feedbackEl.innerHTML = ` ${correct ? 'Bonne réponse' : 'Réponse à améliorer'} ${sanitize(question.explanation)} `; } /* Restaurer sélection si utilisateur revient en arrière */ function restoreSelection(question) { const saved = state.answers[question.id]; if (!saved) return; if (question.type === 'single') { const btn = quizContainer.querySelector(`.choice-btn[data-qid="${question.id}"][data-choice="${saved}"]`); if (btn) btn.setAttribute('aria-pressed', 'true'); } else { // tableau saved.forEach(choiceId => { const btn = quizContainer.querySelector(`.choice-btn[data-qid="${question.id}"][data-choice="${choiceId}"]`); if (btn) btn.setAttribute('aria-pressed', 'true'); }); } } /* ---------- Contrôles (précédent / suivant) ---------- */ function onPrev() { if (state.currentIndex === 0) return; state.currentIndex--; renderQuestion(); updateControls(); } function onNext() { const question = QUIZ_TEXT.questions[state.currentIndex]; // S'assurer qu'une réponse a été donnée avant d'avancer const ans = state.answers[question.id]; if (ans === undefined || (Array.isArray(ans) && ans.length === 0)) { // Petit focus et message accessible const feedbackEl = quizContainer.querySelector('#feedback'); feedbackEl.innerHTML = `Veuillez sélectionner une réponse avant de continuer.`; // Focus sur première option const firstBtn = quizContainer.querySelector('.choice-btn'); if (firstBtn) firstBtn.focus(); return; } if (state.currentIndex < QUIZ_TEXT.questions.length - 1) { state.currentIndex++; renderQuestion(); updateControls(); } else { // Fin du quiz finishQuiz(); } } function updateControls() { prevBtn.setAttribute('aria-disabled', String(state.currentIndex === 0)); prevBtn.disabled = state.currentIndex === 0; nextBtn.textContent = state.currentIndex === QUIZ_TEXT.questions.length - 1 ? 'Terminer' : 'Suivant ▶'; // Mise à jour progress bar const total = QUIZ_TEXT.questions.length; progressBar.style.width = `${((state.currentIndex + 1) / total) * 100}%`; } /* ---------- Calcul du score et affichage résultat ---------- */ function finishQuiz() { clearInterval(state.timerInterval); // Calcul const total = QUIZ_TEXT.questions.length; let correctCount = 0; QUIZ_TEXT.questions.forEach(q => { const user = state.answers[q.id]; if (q.type === 'single') { if (user === q.answer) correctCount++; } else { const expected = q.answer.slice().sort(); const got = Array.isArray(user) ? user.slice().sort() : []; if (expected.length === got.length && expected.every((v,i)=>v===got[i])) correctCount++; } }); const percent = Math.round((correctCount / total) * 100); let message = QUIZ_TEXT.messages.tryAgain; if (percent === 100) message = QUIZ_TEXT.messages.perfect; else if (percent >= 80) message = QUIZ_TEXT.messages.great; else if (percent >= 50) message = QUIZ_TEXT.messages.good; // Afficher panel résultat resultPanel.innerHTML = ` Résultat : ${correctCount}/${total} (${percent}%) ${sanitize(message)} ${QUIZ_TEXT.questions.map(q => summarizeQuestionResult(q)).join('')} Refaire Partager `; resultPanel.classList.remove('hidden'); resultPanel.focus(); // Attacher actions document.getElementById('retry-btn').addEventListener('click', resetQuiz); document.getElementById('share-btn').addEventListener('click', shareResult); // Scroll léger vers le panel (si besoin) resultPanel.scrollIntoView({ behavior: 'smooth', block: 'center' }); } /* Résumé par question pour le panel résultat */ function summarizeQuestionResult(q) { const user = state.answers[q.id]; let correct = false; let userText = ''; if (q.type === 'single') { correct = user === q.answer; const choice = q.choices.find(c => c.id === user); userText = choice ? choice.text : 'Aucune'; } else { const expected = q.answer.slice().sort(); const got = Array.isArray(user) ? user.slice().sort() : []; correct = expected.length === got.length && expected.every((v,i)=>v===got[i]); userText = Array.isArray(user) ? user.map(id => (q.choices.find(c=>c.id===id)||{text:id}).text).join(', ') : 'Aucune'; } const correctText = q.type === 'multiple' ? q.choices.filter(c => q.answer.includes(c.id)).map(c=>c.text).join(', ') : (q.choices.find(c => c.id === q.answer) || {text: q.answer}).text; return `${sanitize(q.question)} Votre réponse : ${sanitize(userText)} — Réponse attendue : ${sanitize(correctText)} `; } /* Réinitialiser le quiz */ function resetQuiz() { state.currentIndex = 0; state.answers = {}; state.startTime = Date.now(); clearInterval(state.timerInterval); state.timerInterval = setInterval(updateTimer, 1000); resultPanel.classList.add('hidden'); renderQuestion(); updateControls(); } /* Partager le résultat (copier dans le presse-papier) */ function shareResult() { const total = QUIZ_TEXT.questions.length; let correctCount = 0; QUIZ_TEXT.questions.forEach(q => { const user = state.answers[q.id]; if (q.type === 'single') { if (user === q.answer) correctCount++; } else { const expected = q.answer.slice().sort(); const got = Array.isArray(user) ? user.slice().sort() : []; if (expected.length === got.length && expected.every((v,i)=>v===got[i])) correctCount++; } }); const text = `J'ai obtenu ${correctCount}/${total} au quizz "${QUIZ_TEXT.title}" sur la recette du Clafoutis Abricot Fondant !`; navigator.clipboard?.writeText(text).then(() => { alert('Résultat copié dans le presse-papier. Partagez-le partout !'); }).catch(() => { prompt('Copiez ce texte pour le partager :', text); }); } /* ---------- Utilitaires ---------- */ /* Simple sanitisateur pour textes (évite injections) */ function sanitize(str) { if (!str && str !== 0) return ''; return String(str) .replace(/&/g, "&") .replace(/, "<") .replace(/>/g, ">"); } /* ---------- Démarrage ---------- */ initQuiz(); /* ---------- Notes techniques ---------- - Aucune API externe n'est requise pour ce quiz. - Si vous souhaitez pré-remplir via une API publique gratuite (exemples), vous pouvez appeler un service public JSON. Exemple (non utilisé ici) : URL d'exemple : https://api.publicapis.org/entries Exemple de réponse JSON : { "count": 1420, "entries": [ { "API": "Cat Facts", "Description": "Daily cat facts", "Auth": "", "HTTPS": true, "Cors": "no", "Link": "https://alexwohlbruck.github.io/cat-facts/" }, ... ] } - Pour préserver performance : pas de librairie lourde, Tailwind via CDN (léger). - Accessibilité : focus géré, aria-live pour feedback, boutons utilisables au clavier. - Internationalisation : toutes les chaînes sont en français et modifiables au début. ---------------------------------------------------------*/ Astuces pratiques pour gagner du temps et sublimer le fruit de saison
- Sources d'inspiration et recettes similaires à consulter
Obtenez un clafoutis abricot fondant en seulement 30 minutes : une version express, simple et gourmande pour transformer les abricots de saison en un dessert d’été qui se sert tiède ou froid. ⏱️🍑 Ce guide donne la méthode express, les ingrédients précis et les astuces pour réussir un résultat moelleux et sucré à souhait dès la première fournée.
Recette rapide : clafoutis abricot fondant en 30 minutes
Pour 6 personnes : 500 g d’abricots lavés et dénoyautés, 4 œufs, 125 g de sucre, 100 g de farine, 60 g de beurre, 25 cl de lait et 1 pincée de sel. 🧈🍶 Utiliser un moule peu profond permet de réduire fortement le temps de cuisson sans sacrifier le fondant.
Cette version est pensée pour être rapide : préparation 10–12 minutes, cuisson 18–20 minutes dans un four très chaud ou 25–30 minutes en mode convection à 200 °C. Pour une alternative plus traditionelle (texture plus dense), la cuisson classique de 45–50 minutes reste disponible. Insight clé : choisir un moule bas change tout pour gagner du temps.
Étapes express pour un clafoutis abricot ultra fondant
Préparer les abricots : couper en deux et réserver côté bombé vers le haut dans un moule beurré. 🍑 Disposer serré les moitiés assure un visuel gourmand et concentre les jus durant la cuisson.
Préparer l’appareil : battre les 4 œufs avec le 125 g de sucre et la pincée de sel jusqu’à mousse légère, ajouter la 100 g de farine tamisée, puis incorporer le beurre fondu tiède et le 25 cl de lait pour obtenir une pâte parfaitement lisse. Astuce pratique : verser le lait tiède pour éviter les grumeaux et garder une texture très fondante.
Cuisson express : préchauffer le four à 220 °C, enfourner immédiatement et surveiller entre 18 et 30 minutes selon le moule. Le clafoutis est cuit lorsque le dessus est doré et que le centre tremble encore légèrement. Cet ajustement permet d’obtenir un dessert d’été prêt en moins d’une demi-heure.
À lire Une sauce à la saucisse crémeuse prête en seulement 15 minutes
Une soirée pizzas à personnaliser ensemble avant Noël
Avant Noël, une soirée pizza permet de partager une activité et le repas qui suit. Chacun choisit ses garnitures, mais tout le monde suit le même ordre : préparer, étaler, garnir puis cuire. Ce cadre évite les embouteillages devant le…
Raconter une recette de famille à travers ses gestes
Une recette de famille tient parfois dans une feuille tachée, quelques lignes au dos d’une enveloppe ou une phrase répétée devant le four. Pour l’offrir, on peut lui joindre un court récit : celui d’une main qui replie la pâte,…
Bouillon de courge et vermicelles : cuire les pâtes au dernier moment
En novembre, une soupe peut réchauffer le dîner sans passer par le mixeur. Dans ce bouillon de légumes, la courge reste en petits morceaux tendres et les vermicelles apportent juste assez de consistance. Le point décisif arrive en fin de…
Variantes gourmandes et astuces de cheffe pour un résultat irrésistible
Pour renforcer le côté gourmand, ajouter une cuillère à café d’extrait de vanille ou remplacer 20 g de sucre par du sucre complet pour une note caramélisée. 🍨 Une boule de glace vanille au service apporte un contraste chaud/froid qui sublime le fruit.
À lire Un petit-déjeuner façon diner prêt en seulement 25 minutes
Conservation et service : ce clafoutis se conserve très bien 2 à 3 jours au réfrigérateur ; servir tiède pour les convives pressés ou bien frais pour un dessert à préparer la veille. Insight : la texture s’affirme au frais tout en restant fondante.
Quizz : Ce Clafoutis Abricot Fondant
Testez vos connaissances sur la recette en 30 minutes et devenez le roi/la reine du clafoutis d'été.
Astuces pratiques pour gagner du temps et sublimer le fruit de saison
Choisir des abricots mûrs mais fermes maximise la tenue à la cuisson et évite un excès de jus qui alourdit la pâte. ☀️ Le fruit de saison doit rester la star : le disposer côté bombé visible crée un bel effet visuel à la sortie du four.
Pour une cuisson express réussie, utiliser un plat métallique ou un moule en céramique peu profond ; ces matériaux transmettent la chaleur plus rapidement. Résultat clé : la technique de moule change la durée et le moelleux du clafoutis.
Clafoutis sucré à la courge et à la poire : bien préparer les fruits
Dans un clafoutis sucré à la courge et à la poire, la difficulté tient surtout à l’eau apportée par les deux ingrédients. Une purée trop fluide ou des poires très juteuses peuvent laisser un centre humide malgré des bords déjà…
Tatin de butternut aux oignons : préparer le démoulage
À lire Steaks de Chou Rôtis : Croquants et Fondants en Seulement 10 Minutes de Préparation !
Une tatin de butternut aux oignons se prépare autant avant la cuisson qu’au moment de retourner le moule. Des légumes trop humides détrempent la pâte ; une garniture mal répartie risque de glisser. Pour ce repas de novembre, l’objectif est…
Courge et champignons : préparer deux textures dans un même plat
Associer courge et champignons demande surtout de coordonner deux cuissons. La première doit devenir tendre sans s’écraser ; les seconds gagnent à perdre leur eau avant de dorer. Tout réunir cru dans un plat rend cette coordination difficile : les…
Sources d'inspiration et recettes similaires à consulter
Pour comparer des variantes et des astuces de pâtissiers amateurs, la recette pas à pas propose une version classique très visuelle. Pour une lecture gourmande et conviviale, la fiche Marmiton offre d'autres conseils de cuisson et de service.
Pour des idées de menus estivaux et des déclinaisons faciles, consulter les guides pratiques comme recettes estivales simples ou le dossier clafoutis abricot guide pour adapter la recette selon le matériel disponible. Inspiration finale : mêler simplicité et technique donne un dessert d'été mémorable.
Phrase-clé finale : en maîtrisant le choix du moule, la température et la disposition des abricots, le clafoutis abricot fondant devient un dessert d'été rapide et gourmand prêt en minutes. 🍑🍽️
Un dîner d’automne avec un seul four : établir l’ordre des cuissons
À lire Un Dîner Express à la Poêle aux Saveurs Lumineuses et Beurrées
Un gratin de courge et une tarte aux pommes composent un menu d’automne séduisant, jusqu’au moment où les deux réclament le four. Pour éviter ce conflit, choisissez l’ordre des cuissons avant de commencer les préparations. La bonne question est simple…
Composer une soupe-repas : quels morceaux garder dans le bol ?
Une soupe-repas gagne à offrir plusieurs textures : une base qui enveloppe la cuillère, des morceaux faciles à manger et quelques garnitures ajoutées au dernier moment. Pour décider quoi mixer, partez du résultat souhaité : quels ingrédients doivent épaissir le…