Afficher la table des matières Masquer la table des matières
- Composition idéale de l’assiette de crudités : légumes indispensables et touches originales
- Adapter la composition selon la saison pour une fraîcheur maximum
- Sauces artisanales qui subliment la recette et font saliver vos invités
- Choisir la taille du plateau et la quantité selon l’événement
- ${escapeHtml(texts.title)} ${escapeHtml(texts.intro)} ${escapeHtml(texts.startBtn)} Astuce : utilisez Tab et Entrée pour naviguer et sélectionner. `; document.getElementById("start-quiz").addEventListener("click", () => { renderQuestion(0); }); } /* ---------- Rendu d'une question ---------- */ function renderQuestion(index) { currentIndex = index; const q = quizData[index]; // Créer le markup de la question et options let optionsHtml = q.options.map((opt, i) => { const optId = `${q.id}-opt-${i}`; const isMulti = q.type === "multi"; const role = isMulti ? "checkbox" : "radio"; const checked = getSavedSelection(q.id, opt.key) ? "aria-checked='true'" : "aria-checked='false'"; return ` ${escapeHtml(opt.key)} ${escapeHtml(opt.label)} ${escapeHtml(opt.explanation)} `; }).join(""); // Controls: Prev / Next or Submit const isFirst = index === 0; const isLast = index === quizData.length - 1; container.innerHTML = ` Question ${index + 1} / ${quizData.length} Score partiel : -- ${escapeHtml(q.question)} ${optionsHtml} ${escapeHtml(texts.prevBtn)} ${isLast ? `${escapeHtml(texts.submitBtn)}` : `${escapeHtml(texts.nextBtn)}`} ${q.type === "multi" ? "Vous pouvez sélectionner plusieurs options." : "Sélectionnez une option."} `; // Mettre à jour score partiel updatePartialScoreDisplay(); // Attacher événements aux options const optionButtons = container.querySelectorAll(".option-btn"); optionButtons.forEach(btn => { btn.addEventListener("click", () => { handleOptionSelect(q, btn); }); // Permettre sélection via Entrée / Espace (accessible) btn.addEventListener("keydown", (e) => { if (e.key === " " || e.key === "Enter") { e.preventDefault(); btn.click(); } }); // Rendre focus visible btn.setAttribute("tabindex", "0"); }); // Navigation const prevBtn = document.getElementById("prev-btn"); if (prevBtn && !isFirst) prevBtn.addEventListener("click", () => renderQuestion(index - 1)); const nextBtn = document.getElementById("next-btn"); if (nextBtn) nextBtn.addEventListener("click", () => { if (q.type === "multi") { // vérifier sélection min const sel = answers[q.id] || []; if ((q.minSelect || 1) > sel.length) { showTemporaryHint(`Sélectionnez au moins ${q.minSelect || 1} option(s).`); return; } } else { if (!answers[q.id]) { showTemporaryHint("Veuillez sélectionner une option avant de continuer."); return; } } renderQuestion(index + 1); }); const submitBtn = document.getElementById("submit-btn"); if (submitBtn) submitBtn.addEventListener("click", handleSubmit); } /* ---------- Gestion de la sélection d'une option ---------- */ function handleOptionSelect(question, btnEl) { const optKey = btnEl.getAttribute("data-opt-key"); if (question.type === "single") { // Décocher tous, cocher celui-ci question.options.forEach((opt, i) => { const id = `${question.id}-opt-${i}`; const el = document.getElementById(id); if (el) { el.setAttribute("aria-checked", opt.key === optKey ? "true" : "false"); } }); answers[question.id] = optKey; } else if (question.type === "multi") { // bascule const current = answers[question.id] || []; const idx = current.indexOf(optKey); if (idx === -1) current.push(optKey); else current.splice(idx, 1); answers[question.id] = current; // mettre à jour aria-checked question.options.forEach((opt, i) => { const id = `${question.id}-opt-${i}`; const el = document.getElementById(id); if (el) { el.setAttribute("aria-checked", (answers[question.id] || []).includes(opt.key) ? "true" : "false"); } }); } // Mettre à jour score partiel visible updatePartialScoreDisplay(); } /* ---------- Calcul du score total ---------- */ function calculateScore() { let total = 0; quizData.forEach(q => { const sel = answers[q.id]; if (!sel) return; if (q.type === "single") { const opt = q.options.find(o => o.key === sel); if (opt) total += opt.score; } else if (q.type === "multi") { (sel || []).forEach(k => { const opt = q.options.find(o => o.key === k); if (opt) total += opt.score; }); } }); // Normaliser sur 100 (approximatif) const maxPossible = quizData.reduce((acc, q) => { if (q.type === "single") acc += Math.max(...q.options.map(o => o.score)); else if (q.type === "multi") acc += q.options.reduce((a,b) => a + b.score, 0); return acc; }, 0); const percent = maxPossible ? Math.round((total / maxPossible) * 100) : 0; return { total, percent }; } /* ---------- Afficher score partiel (pour la question courante) ---------- */ function updatePartialScoreDisplay() { const el = document.getElementById("partial-score"); if (!el) return; let part = 0; // Calculer score pour les questions déjà répondues quizData.forEach(q => { const sel = answers[q.id]; if (!sel) return; if (q.type === "single") { const opt = q.options.find(o => o.key === sel); if (opt) part += opt.score; } else { (sel || []).forEach(k => { const opt = q.options.find(o => o.key === k); if (opt) part += opt.score; }); } }); el.textContent = `${part} pts`; } /* ---------- Soumission du quiz et affichage des résultats ---------- */ function handleSubmit() { // Vérifier que toutes les questions sont répondues (au moins 1 pour multi) for (const q of quizData) { const sel = answers[q.id]; if (!sel || (Array.isArray(sel) && sel.length === 0)) { showTemporaryHint("Veuillez répondre à toutes les questions avant de soumettre."); return; } } const { total, percent } = calculateScore(); // Générer message de feedback const fb = texts.feedback.slice().reverse().find(f => percent >= f.min) || texts.feedback[0]; // Générer composition recommandée basée sur réponses const composition = generateCompositionFromAnswers(); // Suggestions / astuces (quelques règles simples) const tips = [ "Variez les textures : combinez croquant, fondant et juteux.", "Jouez sur les couleurs : au moins 3 tons différents rendent l'assiette plus appétissante.", "Placez les dips au centre ou en plusieurs petites coupelles pour l'équilibre visuel.", "Ajoutez des éléments à grignoter (crackers, graines) pour varier les prises en main." ]; // Afficher résultat container.innerHTML = ` ${escapeHtml(texts.scorePrefix)} ${percent}% ${escapeHtml(fb.text)} ${escapeHtml(texts.recommendationTitle)} ${composition.map(row => ` ${escapeHtml(row.title)} ${escapeHtml(row.items.join(", "))} `).join("")} ${escapeHtml(texts.tipsTitle)} ${tips.map(t => `${escapeHtml(t)}`).join("")} ${escapeHtml(texts.tryAgainBtn)} Copier la composition Imprimer (format simple) `; document.getElementById("retry-btn").addEventListener("click", renderIntro); document.getElementById("copy-btn").addEventListener("click", () => { const textToCopy = buildPlainTextResult(percent, fb.text, composition, tips); navigator.clipboard?.writeText(textToCopy).then(() => { const f = document.getElementById("copy-feedback"); f.textContent = texts.savingText; setTimeout(() => f.textContent = "", 2500); }).catch(() => { const f = document.getElementById("copy-feedback"); f.textContent = "Impossible de copier automatiquement. Sélectionnez et copiez manuellement."; }); }); document.getElementById("print-btn").addEventListener("click", () => { const w = window.open("", "_blank"); w.document.write(`${escapeHtml(buildPlainTextResult(percent, fb.text, composition, tips))}`); w.document.close(); w.print(); }); } /* ---------- Génére une composition en fonction des réponses ---------- */ function generateCompositionFromAnswers() { // Base d'ingrédients const ingredients = { croquant: ["Bâtonnets de carotte", "Batônnets de concombre", "Céleri branche"], fondant: ["Avocat tranché", "Tomates confites", "Poivron rôti"], juteux: ["Tomates cerises", "Radis entiers"], verts: ["Concombre", "Courgette crue en rubans", "Feuilles de roquette"], vibrants: ["Carottes multicolores", "Poivrons jaune et rouge", "Tomates cerises"], crackers: ["Crackers aux graines", "Pain pita grillé"], noix: ["Amandes grillées", "Graines de courge"] }; // Déduire préférences const chosenTextures = answers["q2"] || []; const dipKey = answers["q3"]; const paletteKey = answers["q4"]; const sideChoice = answers["q5"]; const effort = answers["q6"]; const plate = []; // 1 - Dip central const dipMap = { "A": "Houmous maison", "B": "Yaourt aux herbes", "C": "Tapenade/pesto" }; plate.push({ title: "Dip(s)", items: [dipMap[dipKey] || "Houmous"] }); // 2 - Légumes selon textures const vegs = new Set(); if (chosenTextures.includes("A")) { ingredients.croquant.forEach(i=>vegs.add(i)); } if (chosenTextures.includes("B")) { ingredients.fondant.forEach(i=>vegs.add(i)); } if (chosenTextures.includes("C")) { ingredients.juteux.forEach(i=>vegs.add(i)); } // si aucune texture explicite (par sécurité), proposer mix if (vegs.size === 0) { ["Bâtonnets de carotte", "Tomates cerises", "Avocat tranché"].forEach(i=>vegs.add(i)); } plate.push({ title: "Légumes principaux", items: Array.from(vegs).slice(0,8) }); // 3 - Palette de couleurs if (paletteKey === "A") plate.push({ title: "Palette colorée", items: ingredients.vibrants.slice(0,3) }); else if (paletteKey === "B") plate.push({ title: "Palette verte", items: ingredients.greens ? ingredients.greens.slice(0,3) : ingredients.greens }); else plate.push({ title: "Contrastes", items: ["Tomates cerises", "Concombre", "Radis"] }); // 4 - Éléments à grignoter if (sideChoice === "A") plate.push({ title: "À grignoter", items: ingredients.crackers.slice(0,2) }); else if (sideChoice === "C") plate.push({ title: "Garnitures croquantes", items: ingredients.noix.slice(0,2) }); // 5 - Conseil selon niveau d'effort const effortAdvice = { "A": "Disposition rapide : couper uniformément en bâtonnets et placer un dip central.", "B": "Soignez les coupes en rubans et groupes par couleur.", "C": "Prévoyez petites coupelles, étages et herbes fraîches pour une présentation soignée." }; plate.push({ title: "Conseil de présentation", items: [effortAdvice[effort] || effortAdvice["B"]] }); return plate; } /* ---------- Helpers ---------- */ function getSavedSelection(qId, optKey) { const sel = answers[qId]; if (!sel) return false; if (Array.isArray(sel)) return sel.includes(optKey); return sel === optKey; } function showTemporaryHint(msg) { const el = container.querySelector("#hint-zone"); if (!el) return; el.textContent = msg; setTimeout(() => { if (el) { el.textContent = ""; } }, 2500); } /* Construire un texte simple du résultat pour le copier/imprimer */ function buildPlainTextResult(percent, feedback, composition, tips) { let out = `${texts.title}nScore: ${percent}%nn${feedback}nn${texts.recommendationTitle}:n`; composition.forEach(c => { out += `- ${c.title}: ${c.items.join(", ")}n`; }); out += `n${texts.tipsTitle}:n`; tips.forEach(t => out += `- ${t}n`); return out; } /* Petit utilitaire pour échapper HTML */ function escapeHtml(str) { if (typeof str !== "string") return str; return str.replace(/[&"']/g, (m) => ({ '&': '&', '': '>', '"': '"', "'": ''' }[m])); } /* ---------- Démarrage ---------- */ renderIntro(); /* ---------- Note sur l'usage d'APIs externes ---------- Ce quiz n'utilise aucune API externe (données embarquées) pour rester 100% gratuit et offline. Si vous souhaitez enrichir les recettes via une API publique gratuite (ex. endpoint de recettes), n'oubliez pas d'utiliser un service sans clé payante et d'inclure l'exemple de réponse JSON dans un commentaire, conformément aux contraintes. */ Événements adaptés : mariages, réceptions et apéros d’entreprise Le plateau de crudités séduit pour les mariages et fêtes car il apporte légèreté et couleur à l’apéritif; il s’accorde particulièrement bien avec des vins rosés ou des eaux aromatisées. Pour un repas d’entreprise privilégiez des portions modulables et des sauces clairement identifiées pour tenir compte des régimes alimentaires. Insight : prévoir une option végétalienne et une option relevée satisfait la majorité des invités sans complexifier la logistique. Bol de riz au poulet façon street corn : saveurs urbaines et gourmandes Bol de riz au poulet façon street corn : recette essentielle et bénéfices Point principal : Ce bol de riz combine du poulet mariné, du maïs grillé façon street corn et une sauce crémeuse pour créer un plat à la… Salade Fraîche et Légère de Pâtes Orzo Salade Fraîche et Légère de Pâtes Orzo : prête en 25 minutes, idéale pour un repas rapide d’été, healthy et pleine de légumes croquants 🥗🌞. Prépare-la pour un déjeuner végétarien, un pique-nique ou en accompagnement d’une grillade — résultat frais… Techniques de présentation et conservation pour une entrée qui attire le regard
- Techniques avancées pour impressionner : pyramides végétales et contenants naturels
- Variantes saisonnières, accompagnements gourmands et conseils anti-gaspillage
Composez l’assiette de crudités parfaite dès maintenant : sélectionnez une base de neuf légumes variés, ajoutez 2 à 3 sauces artisanales, choisissez la taille du plateau selon le nombre d’invités, puis soignez la présentation en cercles concentriques ou en relief pour faire réellement saliver vos convives. Cette méthode claire et répétable garantit une fraîcheur optimale et des saveurs harmonieuses à chaque service.
Pourquoi ça marche : une composition équilibrée multiplie les textures et favorise l’absorption des vitamines grâce aux sauces à l’huile d’olive, tandis que la présentation stimule l’appétit dès la vue de l’assiette. Appliquer ces étapes simples transforme une entrée classique en moment convivial mémorable pour vos invités.
Composition idéale de l’assiette de crudités : légumes indispensables et touches originales
Priorisez une base de légumes croquants et colorés : chou-fleur, endive, tomate cerise, concombre, champignon de Paris, radis, fenouil, carotte et poivron, en variant les couleurs pour l’impact visuel. Ajoutez une ou deux touches inattendues comme asperges ou mini épis de maïs pour surprendre les papilles et créer du contraste.
Exemple concret : Claire, organisatrice à Marseille, compose toujours son assiette avec au moins trois teintes contrastées et une texture fondante (avocat ou aubergine) pour équilibrer le croquant. Cette règle simple accroît immédiatement l’attrait visuel et la sensation de fraîcheur.
Adapter la composition selon la saison pour une fraîcheur maximum
Au printemps privilégiez asperges, petits pois et jeunes pousses; en été misez sur tomates anciennes, courgettes et fruits comme le melon pour une note sucrée. En automne et hiver, incorporez fenouil, betterave crue et agrumes pour renforcer les apports en vitamine C.
Astuce terrain : acheter au marché local la veille permet souvent de trouver des variétés anciennes qui font réellement saliver vos invités et allègent la facture.
À lire Le secret d’un sandwich au poulet parfait : cette marinade incontournable
Le secret d’un sandwich au poulet parfait : cette marinade incontournable
Le secret du sandwich au poulet parfait tient à une marinade équilibrée qui garantit goût, tendreté et cuisson uniforme 🍯🔥. Suivre cette méthode permet d’obtenir un poulet mariné juteux en 30 minutes à 4 heures, prêt à transformer n’importe quel…
Plan Repas Hebdomadaire du 10 au 16 août 2026
Plan repas hebdomadaire prêt à l’emploi pour la semaine du 10 au 16 août : suivez ce programme repas pour gagner du temps, réduire le stress des repas et améliorer votre alimentation dès aujourd’hui. Ce plan fournit un menu jour…
Sauces artisanales qui subliment la recette et font saliver vos invités
Choisissez 2 à 3 sauces contrastées : anchoïade pour une note iodée, tapenade noire ou verte pour l’onctuosité, et une option végétale comme une sauce pois chiche ou crème d’avocat. Préparez 100 ml pour un petit plateau et 200 ml pour les formats moyens à grands afin d’ajuster la générosité selon le nombre d’invités.
Suggestion pratique : préparer les sauces la veille renforce les arômes; conservez-les au frais dans des verrines hermétiques et sortez-les 15 minutes avant le service pour révéler les saveurs.
Pour approfondir les combinaisons classiques et obtenir des recettes faciles à reproduire, consultez des guides pratiques comme une recette complète pour plateaux et des astuces pour composer une assiette réussie sur des conseils nutritionnels pratiques. Ces ressources détaillent volumes et accords.
À lire Plan Repas Hebdomadaire du 10 au 16 août 2026
Transformez de la Courgette Fraîche en un Repas Convivial et Réconfortant pour Toute la Famille
Transformez une courgette fraîche en repas convivial et réconfortant pour toute la famille : préparez un gratin courgette-haché facile, plein de goût et prêt en moins d’une heure 🍽️. Gratin familial courgette et viande : la recette simple qui rassemble…
Transformez le Saumon en Conserve en un Repas Réconfortant pour les Soirées de Semaine
Transformez le saumon en conserve en un repas réconfortant prêt en un rien de temps pour vos soirées de semaine. Cette version pratique et savoureuse permet de cuisiner une recette simple et nutritive sans stress, même après une longue journée.…
Choisir la taille du plateau et la quantité selon l’événement
Décidez la taille en fonction du format de la réception : un petit plateau (sauce 100 ml) suffit pour 4-6 personnes, un format moyen (200 ml) convient à 8-12 personnes, tandis que les grands plateaux à plusieurs sauces couvrent 15-25 invités. Adapter le nombre de sauces permet d’offrir des choix sans gaspiller.
Cas pratique : pour un cocktail d’entreprise, Claire combine trois plateaux moyens répartis sur plusieurs points du buffet pour éviter les files et maintenir la fraîcheur; ceci favorise la circulation et les échanges entre collègues.
Événements adaptés : mariages, réceptions et apéros d’entreprise
Le plateau de crudités séduit pour les mariages et fêtes car il apporte légèreté et couleur à l’apéritif; il s’accorde particulièrement bien avec des vins rosés ou des eaux aromatisées. Pour un repas d’entreprise privilégiez des portions modulables et des sauces clairement identifiées pour tenir compte des régimes alimentaires.
Insight : prévoir une option végétalienne et une option relevée satisfait la majorité des invités sans complexifier la logistique.
Bol de riz au poulet façon street corn : saveurs urbaines et gourmandes
Bol de riz au poulet façon street corn : recette essentielle et bénéfices Point principal : Ce bol de riz combine du poulet mariné, du maïs grillé façon street corn et une sauce crémeuse pour créer un plat à la…
Salade Fraîche et Légère de Pâtes Orzo
Salade Fraîche et Légère de Pâtes Orzo : prête en 25 minutes, idéale pour un repas rapide d’été, healthy et pleine de légumes croquants 🥗🌞. Prépare-la pour un déjeuner végétarien, un pique-nique ou en accompagnement d’une grillade — résultat frais…
Techniques de présentation et conservation pour une entrée qui attire le regard
La présentation prime : disposez les légumes en cercles concentriques ou en spirale, variez les hauteurs avec de petites pyramides et utilisez des poivrons évidés comme coupelles pour les sauces; ces détails transforment l’assiette en œuvre d’art. La mise en scène visuelle provoque immédiatement l’envie et fait saliver.
Conservation : taillez au dernier moment quand c’est possible, stockez entre 2°C et 4°C, et servez sur glace pilée lors d’événements prolongés pour préserver la fraîcheur. Emballer sous cloche ou film alimentaire protège aussi de la déshydratation pendant le transport.
À lire Transformez le Saumon en Conserve en un Repas Réconfortant pour les Soirées de Semaine
Pour des idées de présentation qui font effet sur vos buffets, inspirez-vous d’astuces professionnelles et de mises en scène originales disponibles sur des conseils de présentation. Ces techniques transforment une simple assiette en point focal.
Techniques avancées pour impressionner : pyramides végétales et contenants naturels
La “pièce montée végétale” assemble légumes sur des piques dans une demi-pastèque ou un chou pour créer du volume et attirer l’œil; utiliser des feuilles d’endive comme petites barquettes ajoute raffinement et praticité. Ces méthodes réduisent aussi le recours au plastique et renforcent l’impact visuel.
Phrase-clé : jouer sur les textures et les contenants naturels élève instantanément l’assiette en expérience gustative.
En 13 minutes : des alternatives veggie idéales pour vos pâtes
En 13 minutes, transformez vos habitudes : remplacez les pâtes par des alternatives veggie savoureuses pour des repas équilibrés et des recettes rapides idéales en semaine. ⚡️ Cette méthode privilégie la cuisine express, la cuisine végétarienne et les options végan…
Un Dîner Facile à la Poêle aux Saveurs Lumineuses et Beurrées
Point clé : Préparez un dîner facile à la poêle qui combine saveurs lumineuses et saveurs beurrées en moins de 40 minutes, pour un plat gourmand et un nettoyage minimal. 🍋🧈 Pourquoi cela marche : la cuisson à la poêle…
À lire Bol de riz au poulet façon street corn : saveurs urbaines et gourmandes
Variantes saisonnières, accompagnements gourmands et conseils anti-gaspillage
Adaptez les accompagnements : au printemps ajoutez fleurs comestibles et fraises, en été intégrez melon et abricots secs, en automne pensez aux noix et figues, en hiver variez avec agrumes et légumes racines. Ces adaptations gardent la recette pertinente toute l’année et étonnent les invités par la richesse des saveurs.
Pour compléter l’offre, associez le plateau à une tarte de légumes sans pâte ou à une planche de fromages régionaux; ces accords équilibrent la fraîcheur et la gourmandise. Des ressources pratiques proposent des idées d’apéritifs simples et des recettes légères pour accompagner vos crudités, notamment des idées d’apéro et des alternatives peu caloriques sur un guide de recettes légères.
Conseil anti-gaspillage : congelez les épluchures pour un bouillon maison ou transformez les restes en dips; ces gestes économisent et ajoutent une touche maison aux services suivants. Insight final : l’attention portée aux détails réduit le gaspillage tout en augmentant la satisfaction des invités.