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(//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 Ce Pesto Basilic Maison Va Ruiner Tous Vos Pestos Industriels En 5 Minutes Chrono
Ces Courgettes Farcies Fondantes Vont Devenir Votre Plat D’Été Préféré Cette Année
Ces courgettes farcies fondantes vous offrent un plat d’été à la fois simple et éblouissant : une recette facile, prête en 40 minutes, qui transforme des légumes farcis en un repas léger et réconfortant. ▶️ Suivez les étapes claires ci-dessous…
Poulet Cowboy en Une Poêle aux Saveurs Intenses du Tex-Mex
Poulet Cowboy en Une Poêle : une recette Tex-Mex à la fois rapide et spectaculaire, conçue pour délivrer des saveurs intenses en moins de 30 minutes. Suivre les étapes ci‑dessous permet d’obtenir un plat épicé, juteux et parfait pour un…
La Caviar Aubergine Recette Traditionnelle Qui Va Sublimer Tous Vos Apéros D’Été
La recette traditionnelle de caviar d’aubergine transforme instantanément un simple apéro en moment solaire et convivial : une tartinade onctueuse, parfumée et facile à préparer pour tous vos apéros d’été 🌞. Suivre cette méthode garantit une aubergine grillée fondante, un…
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 Cette Tarte Abricot Amande Fondante Va Devenir Votre Dessert Signature De L’Été
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.
7 Desserts Sans Sucre Ultra Gourmands Qui Trompent Même Les Plus Sucrés
Résumé : Des desserts sans sucre peuvent être aussi riches et séduisants que leurs équivalents sucrés — il suffit de choisir les bonnes bases (purée de fruits, dattes, compote) et d’ajuster texture et cuisson pour obtenir des pâtisseries légères et…
7 Ramen Recettes Authentiques Qui Vont Ruiner Vos Nouilles Instantanées Pour Toujours
À lire Cette Tarte Aux Abricots Fondante Va Devenir Votre Dessert D’Été Préféré
Arrêtez les nouilles instantanées : ces 7 recettes de ramen authentiques offrent des bouillons, des garnitures et des techniques à reproduire chez soi pour des bols qui surpassent instantanément tout paquet prêt-à-l’emploi. 🍜 Suivez les étapes précises, utilisez ingrédients frais…
Ce Pesto Basilic Maison Va Ruiner Tous Vos Pestos Industriels En 5 Minutes Chrono
Ce Pesto Basilic Maison transforme des pâtes banales en explosion de saveurs fraîches en moins de 5 minutes — sans conservateurs et bien plus vivant que n'importe quel pesto industrial. 🌿 Prépare la base, suis trois gestes précis, et le…
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. 🍑🍽️
Ces Beignets De Courgettes Ultra Croustillants Vont Ruiner Votre Régime Cet Été
À lire Ma salade incontournable pour les déjeuners, les repas partagés et les journées chargées
Ces beignets de courgettes ultra croustillants promettent un plaisir coupable cet été : dorés, légers et prêts en quelques minutes grâce à l'Air Fryer, ils transforment le légume en véritable gourmandise. Suivre cette recette permet d'obtenir un snack estival irrésistible…
Ce Rougail Saucisse Authentique Va Vous Transporter Direct À La Réunion En Une Bouchée
Ce rougail saucisse authentique promet un voyage immédiat vers la Réunion : une bouchée suffit pour ressentir le soleil, les épices et les saveurs de la cuisine réunionnaise. Préparez-vous à suivre une recette simple et précise, avec des étapes claires,…