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(//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 5 Recette D’Été Ultra Fraîches Que Vous Allez Cuisiner Tout L’Été Sans Lassitude
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 Plat D’Ete Frais Et Gourmands Pour Régaler Toute La Famille Sans Effort
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 Le Dessert à la Rhubarbe Facile que je Prépare Chaque Printemps
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.
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é
À lire 7 Plats D’Ete Ultra Frais Pour Survivre À La Canicule Sans Cuisiner Des Heures
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…
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
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…
À lire 5 Recette Été Ultra Fraîches À Préparer Sans Allumer Le Four Une Seule Fois
Ces Beignets De Courgettes Ultra Croustillants Vont Ruiner Votre Régime Cet Été
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,…