Afficher la table des matières Masquer la table des matières
- Recette d’avril : Risotto aux asperges fraîches — crémeux et léger
- Velouté glacé de petits pois — soupe froide pleine de printemps
- Salade fraise, avocat et herbes aromatiques — sucré-salé vitaminé
- Tartine radis‑beurre aux herbes — le snack printanier parfait
- Quizz : 7 questions ultra fraîches pour vos recettes d’avril
- ${escapeHtml(q.question)} ${q.choices.map((choice, i) => ` ${escapeHtml(choice)} Choisir `).join('')} `; // Mettre à jour boutons de navigation prevBtn.disabled = index === 0; nextBtn.disabled = !answered[index]; // activé seulement si la question a été validée // Si toutes répondues, show final bouton via nextBtn navigating to result // Restaurer sélection si existante if (selections[index] !== null) { highlightSelectedOption(selections[index]); } // Attacher gestionnaires aux options (support clavier) const optionButtons = card.querySelectorAll('.option'); optionButtons.forEach(btn => { btn.addEventListener('click', () => { const choiceIdx = Number(btn.dataset.choiceIndex); selectOption(index, choiceIdx); }); // support clavier (Entrée / Espace) déjà couvert par button element }); // Mettre le focus sur la première option pour accessibilité setTimeout(() => { const firstOption = card.querySelector('.option'); if (firstOption) firstOption.focus(); }, 0); // Afficher feedback si déjà validée if (answered[index]) { showFeedbackFor(index); } } /* Sélectionne visuellement une option et met à jour l'état temporaire */ function selectOption(questionIndex, choiceIndex) { selections[questionIndex] = choiceIndex; // Visuel highlightSelectedOption(choiceIndex); // Activer le bouton valider (si pas encore validée) if (!answered[questionIndex]) { validateBtn.disabled = false; } } /* Met à jour la mise en surbrillance des options */ function highlightSelectedOption(choiceIndex) { const optionButtons = card.querySelectorAll('.option'); optionButtons.forEach(btn => { const idx = Number(btn.dataset.choiceIndex); if (idx === choiceIndex) { btn.classList.add('bg-rose-50', 'ring-1', 'ring-rose-200'); btn.setAttribute('aria-pressed', 'true'); } else { btn.classList.remove('bg-rose-50', 'ring-1', 'ring-rose-200'); btn.setAttribute('aria-pressed', 'false'); } }); } /* Affiche le feedback (correct/incorrect + explication) pour une question validée */ function showFeedbackFor(index) { const fb = card.querySelector('#feedback'); const q = QUESTIONS[index]; const chosen = selections[index]; const correct = q.correctIndex; const isCorrect = chosen === correct; fb.innerHTML = ` ${isCorrect ? 'Bonne réponse ✅' : 'Réponse incorrecte ❌'} ${escapeHtml(q.explanation)} Réponse correcte : ${escapeHtml(q.choices[correct])} `; } /* Valider la réponse courante : verrouille la question et affiche feedback */ function validateCurrent() { const idx = currentIndex; if (selections[idx] === null) { // Alerte accessible si aucune sélection const fb = card.querySelector('#feedback'); fb.innerHTML = `Veuillez sélectionner une option avant de valider.`; return; } answered[idx] = true; // Désactiver le bouton valider pour cette question validateBtn.disabled = true; // Activer suivant (sauf si on est sur la dernière, où le bouton amène au résultat) nextBtn.disabled = false; // Afficher feedback showFeedbackFor(idx); // Mettre à jour la barre de progression (inclure questions validées) updateOverallProgress(); } /* Met à jour la barre de progression globale (en % de questions validées) */ function updateOverallProgress() { const doneCount = answered.filter(Boolean).length; const percent = Math.round((doneCount / QUESTIONS.length) * 100); progressBar.style.width = `${percent}%`; } /* Navigation : précédent / suivant */ prevBtn.addEventListener('click', () => { if (currentIndex > 0) { currentIndex--; renderQuestion(currentIndex); } }); nextBtn.addEventListener('click', () => { // Si on est à la dernière question et qu'elle est validée, afficher résultat if (currentIndex === QUESTIONS.length - 1 && answered[currentIndex]) { showResults(); return; } if (currentIndex < QUESTIONS.length - 1) { currentIndex++; renderQuestion(currentIndex); } }); /* Gestion du clic Valider */ validateBtn.addEventListener('click', () => { validateCurrent(); }); /* Calculer et afficher les résultats finaux */ function showResults() { // Calcul du score let correctCount = 0; QUESTIONS.forEach((q, i) => { if (selections[i] === q.correctIndex) correctCount++; }); const percent = Math.round((correctCount / QUESTIONS.length) * 100); // Masquer la carte de question et montrer écran résultat resultScreen.classList.remove('hidden'); resultScreen.innerHTML = ` Résultat Vous avez obtenu ${correctCount} / ${QUESTIONS.length} (${percent}%). Recommencer ${QUESTIONS.map((q, i) => { const chosen = selections[i]; const isCorrect = chosen === q.correctIndex; return ` Q${i+1} — ${escapeHtml(q.question)} Votre réponse : ${escapeHtml(q.choices[chosen] || '—')} Réponse correcte : ${escapeHtml(q.choices[q.correctIndex])} ${escapeHtml(q.explanation)} `; }).join('')} Partager le score `; // Scroll to results (si nécessaire) resultScreen.scrollIntoView({ behavior: 'smooth', block: 'center' }); // Attacher handlers pour restart et share document.getElementById('restart-btn').addEventListener('click', restartQuiz); document.getElementById('share-btn').addEventListener('click', () => { // Simple partage via Clipboard (accessible) — texte en français const shareText = `Mon score au quizz "Recettes d'avril" : ${correctCount}/${QUESTIONS.length} (${percent}%) — Testez vos connaissances printanières !`; navigator.clipboard?.writeText(shareText).then(() => { alert('Score copié dans le presse-papiers. Partagez-le où vous voulez !'); }).catch(() => { alert('Impossible de copier automatiquement. Voici votre score :n' + shareText); }); }); } /* Redémarrer le quiz */ function restartQuiz() { currentIndex = 0; selections = Array(QUESTIONS.length).fill(null); answered = Array(QUESTIONS.length).fill(false); resultScreen.classList.add('hidden'); validateBtn.disabled = false; nextBtn.disabled = true; updateOverallProgress(); renderQuestion(currentIndex); } /* Petit utilitaire pour échapper HTML et éviter injections */ function escapeHtml(str) { return String(str) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/, '<') .replace(/>/g, '>'); } /* Initialisation */ (function init() { // Désactiver le validate tant que rien sélectionné validateBtn.disabled = true; nextBtn.disabled = true; updateOverallProgress(); renderQuestion(currentIndex); // Raccourcis clavier globaux pour ergonomie (flèches pour navigation, Enter pour valider) document.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight') { // Aller à la question suivante si possible if (!nextBtn.disabled) nextBtn.click(); } else if (e.key === 'ArrowLeft') { if (!prevBtn.disabled) prevBtn.click(); } else if (e.key === 'Enter') { // Si focus dans une option, activer le clic natif (button accepte Enter) const active = document.activeElement; if (active && active.classList && active.classList.contains('option')) { active.click(); } else { // Sinon, valider si possible if (!validateBtn.disabled) validateBtn.click(); } } }); })(); /* ========== Remarque sur les APIs externes ========== Ce composant n'utilise pas d'API externe pour fonctionner — tout est embarqué localement. Si vous souhaitez intégrer des données externes (ex: suggestions de recettes), utilisez uniquement des APIs publiques gratuites. Exemple (neutre) : TheMealDB (API de recettes gratuites) URL : https://www.themealdb.com/api.php Exemple d'appel pour un plat aléatoire (GET) : https://www.themealdb.com/api/json/v1/1/random.php Exemple de réponse JSON (abrégé) : { "meals": [ { "idMeal": "52772", "strMeal": "Teriyaki Chicken Casserole", "strCategory": "Chicken", "strArea": "Japanese", "strInstructions": "Préparation...", "strMealThumb": "https://www.themealdb.com/images/media/meals/wvpsxx1468256321.jpg", ... } ] } // Aucun appel à ces services n'est effectué par ce quiz par défaut. */ Lasagnes épinards‑saumon — transition hiver‑printemps
- Gratin de blettes — réconfort printanier et minimaliste
- Sorbet rhubarbe‑fraise — dessert glacé et acidulé
7 recettes d’avril ultra fraîches pour apporter immédiatement de la fraîcheur et des couleurs à la table : des plats légers, des salades éclatantes et des desserts acidulés prêts à être réalisés dès aujourd’hui. 🍓🌿
Choix des recettes pensé pour profiter des légumes de saison et des herbes aromatiques, avec des instructions précises (temps, portions, étapes) pour cuisiner en toute confiance lors des beaux jours. Voici comment transformer le panier du marché d’avril en menus inspirants et faciles à suivre.
Recette d’avril : Risotto aux asperges fraîches — crémeux et léger
Temps : 25 minutes · Pour : 4 personnes. Utiliser asperges vertes, riz pour risotto (300 g), 1 oignon, 10 cl de vin blanc, 1 L de bouillon de légumes chaud, 40 g de beurre et 40 g de parmesan râpé. 🌱
Faire suer l’oignon 2 min, ajouter le riz et nacrer 1 min, déglacer au vin blanc. Verser le bouillon louche par louche jusqu’à cuisson al dente (15–18 min), incorporer les pointes d’asperge cuites 3–4 min en fin de cuisson, puis le beurre et le parmesan pour une texture onctueuse. Astuce : rincer rapidement les asperges à l’eau froide pour conserver leur couleur vive. Insight : le secret pour un risotto parfait est un bouillon chaud et un fouettage final énergique pour obtenir une fraîcheur crémeuse.
Velouté glacé de petits pois — soupe froide pleine de printemps
Temps : 15 minutes de préparation + refroidissement · Pour : 4 personnes. Prévoir 500 g de petits pois, 1 pomme de terre moyenne, 1 oignon, 50 ml de crème légère, bouillon, sel, poivre et une poignée d’herbes aromatiques (menthe ou estragon). 🧊🌿
Cuire les petits pois avec la pomme de terre et l’oignon 10 min, mixer avec le bouillon puis filtrer. Refroidir au réfrigérateur au moins 2 heures. Servir avec un filet de crème et des feuilles de menthe ciselées pour un contraste vif. Exemple concret : servir en verrines lors d’un apéro au jardin pour surprendre les convives. Insight : une soupe froide bien assaisonnée est la clé des plats légers d’avril.
À lire 7 Recettes Avec L’Asperge Pour Sublimer Ce Légume De Saison Éphémère
Salade fraise, avocat et herbes aromatiques — sucré-salé vitaminé
Temps : 10 minutes · Pour : 4 personnes. Rassembler 250 g de fraises, 2 avocats mûrs, jeunes pousses, citron, huile d’olive, sel, poivre, basilic et ciboulette. 🍓🥑
Couper fraises et avocats en tranches, assaisonner d’un filet de citron et d’huile d’olive, ajouter basilic et ciboulette ciselés. Exemple pratique : ajouter des copeaux de parmesan ou des graines toastées pour un croquant subtil. Cette salade illustre comment transformer des ingrédients simples en un plat printanier qui célèbre le printemps. Insight : associer un fruit de saison à une texture onctueuse crée un équilibre immédiat.
La vidéo ci‑dessus propose variantes et dressages rapides pour sublimer cette salade en moins de 10 minutes. 🎥
Tartine radis‑beurre aux herbes — le snack printanier parfait
Temps : 5 minutes · Pour : 2 personnes. Prendre 1 baguette ou pain de campagne, 150 g de beurre doux à température, radis croquants, sel, poivre et un mélange d’herbes aromatiques (persil, ciboulette). 🥖
Tartiner le pain généreusement, disposer des rondelles de radis, saupoudrer d’herbes et d’un zeste de citron pour plus de pep’s. Astuce de pro : toaster légèrement le pain pour un contraste de textures. Insight : une tartine réussie montre qu’un plat léger peut être délicieux sans complication.
Quizz : 7 questions ultra fraîches pour vos recettes d’avril
Testez vos indispensables de la cuisine printanière — accessible et rapide.
Lasagnes épinards‑saumon — transition hiver‑printemps
Temps : 40 minutes · Pour : 6 personnes. Composer avec 300 g d’épinards frais, 300 g de saumon frais ou fumé, plaques de lasagne, béchamel légère, 150 g de fromage râpé. 🍽️
À lire 7 Asperges Vertes Recette Originales Pour Sublimer Ce Légume De Saison Éphémère
Poêler rapidement les épinards avec ail et huile, mélanger au saumon émietté, monter les couches avec béchamel et cuire 25–30 min au four. Idée pratique : remplacer moitié béchamel par yaourt grec pour alléger le plat sans perdre en onctuosité. Insight : cette recette incarne les plats légers de transition, parfaits pour des repas familiaux au printemps.
Regarder la démonstration vidéo aide à maîtriser le montage et la cuisson pour une texture fondante et légère. 🎬
Gratin de blettes — réconfort printanier et minimaliste
Temps : 40 minutes · Pour : 6 personnes. Utiliser 1 kg de bettes à carde, 30 g de beurre, 30 g de farine, 500 ml de lait, 1 jaune d’œuf, 100 g de fromage râpé. 🧀
Bouillir les côtes et les feuilles séparément, préparer une sauce blanche, mélanger la moitié des blettes avec la sauce, verser dans un plat, parsemer de fromage et gratiner 15 min. Exemple : ajouter une pointe de muscade pour sublimer la béchamel. Insight : le gratin transforme un légume souvent délaissé en plat convivial de printemps.
Sorbet rhubarbe‑fraise — dessert glacé et acidulé
Temps : 20 minutes de préparation + congélation · Pour : 6 personnes. Préparer 300 g de rhubarbe, 200 g de fraises, 150 g de sucre, jus de citron et 100 ml d’eau. 🍧
Cuire la rhubarbe avec l’eau et le sucre 10 min, ajouter les fraises, mixer et passer au chinois. Turbiner ou congeler en remuant toutes les 30 min pour obtenir une texture sorbet. Astuce : servir avec des feuilles de menthe pour un effet rafraîchissant maximal. Insight : un sorbet maison offre la touche finale parfaite pour célébrer les beaux jours en cuisine.
Pour approfondir l’exploration des recettes d’avril et découvrir d’autres idées de menus printaniers, consulter des sélections thématiques comme Idées de recettes pour avril ou les conseils saisonniers de Recettes d’avril pour varier les inspirations. 🌼
À lire 7 Idées De Repas Printemps Ultra Frais Pour Célébrer Le Retour Des Beaux Jours
Pour des alternatives axées sur les salades et les plats légers, explorer des collections pratiques comme recettes printanières fraîches et des idées de salades d’été pour adapter ces recettes aux prochains jours ensoleillés. ☀️
Fil conducteur : imaginer Clara, organisatrice de déjeuners sur la terrasse, qui utilise ces sept recettes pour composer un menu modulable selon l’arrivée des produits au marché. Chaque recette combine un problème (plats lourds en fin d’hiver), une solution (ingrédients de saison) et un exemple concret (temps et astuces), pour une mise en œuvre immédiate. Insight final : commencer par une salade colorée, ajouter un plat de partage tiède et conclure par un sorbet assure un repas printanier réussi.
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
À lire 7 Recettes Avec Les Cerises Pour Profiter À Fond De Cette Saison Éphémère
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…
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,…
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…
À lire 7 Salade Printemps Fraîches Pour Célébrer Le Retour Des Beaux Jours En Cuisine
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 à…