| | <!DOCTYPE html> |
| | <html lang="zh-TW"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>洋蔥式穿搭測驗</title> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <style> |
| | @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;700&display=swap'); |
| | body { |
| | font-family: 'Noto Sans TC', sans-serif; |
| | background-color: #f0f4f8; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-100 min-h-screen flex items-center justify-center p-4"> |
| |
|
| | <div id="quiz-container" class="bg-white rounded-xl shadow-lg p-8 w-full max-w-lg transition-all duration-300 transform"> |
| | <h1 class="text-3xl font-bold text-center text-gray-800 mb-6">洋蔥式穿搭測驗</h1> |
| | |
| | <div id="quiz-question" class="transition-opacity duration-500 ease-in-out"> |
| | <h2 id="question-text" class="text-xl font-semibold text-gray-700 mb-4"></h2> |
| | <div id="answer-options" class="space-y-4"></div> |
| | </div> |
| |
|
| | <div id="quiz-result" class="hidden text-center transition-opacity duration-500 ease-in-out"> |
| | <h2 class="text-2xl font-bold text-green-600 mb-4">測驗完成!</h2> |
| | <p class="text-xl text-gray-700">你的分數是:<span id="score" class="font-bold text-3xl text-blue-600"></span> / <span id="total-questions" class="font-bold text-3xl text-blue-600"></span></p> |
| | <p id="result-message" class="mt-4 text-gray-600"></p> |
| | <button id="restart-btn" class="mt-6 px-6 py-3 bg-blue-500 text-white rounded-full font-bold shadow-lg hover:bg-blue-600 transition-all duration-300">重新開始</button> |
| | </div> |
| | </div> |
| |
|
| | <div id="feedback-modal" class="fixed inset-0 bg-black bg-opacity-50 hidden items-center justify-center p-4 z-50"> |
| | <div class="bg-white rounded-lg p-6 max-w-sm w-full text-center shadow-2xl"> |
| | <p id="feedback-text" class="text-xl font-bold mb-4"></p> |
| | <button id="next-btn" class="px-6 py-2 bg-blue-500 text-white rounded-full hover:bg-blue-600 transition-all duration-300">下一題</button> |
| | </div> |
| | </div> |
| |
|
| | <script> |
| | const questions = [ |
| | { |
| | question: "洋蔥式穿搭中,最貼近皮膚的「基礎層」主要功能是什麼?", |
| | options: ["防風防水", "鎖住熱空氣", "排汗"], |
| | answer: "排汗" |
| | }, |
| | { |
| | question: "以下哪種材質最不適合用作洋蔥式穿搭的「基礎層」?", |
| | options: ["羊毛", "聚酯纖維", "棉質"], |
| | answer: "棉質" |
| | }, |
| | { |
| | question: "「保暖層」的主要功能是透過捕捉什麼來保持身體溫暖?", |
| | options: ["水分", "熱空氣", "光線"], |
| | answer: "熱空氣" |
| | }, |
| | { |
| | question: "「防護層」的主要功能是防風和防水,這層最常見的設計是什麼?", |
| | options: ["透氣拉鍊", "隱藏式口袋", "可拆式帽子"], |
| | answer: "透氣拉鍊" |
| | }, |
| | { |
| | question: "在寒冷的天氣下,為什麼穿著濕掉的棉質衣物會讓人覺得更冷?", |
| | options: ["因為水會吸收太陽熱能", "因為水會加速身體熱量散失", "因為棉質衣物會變得更重"], |
| | answer: "因為水會加速身體熱量散失" |
| | }, |
| | { |
| | question: "如果你覺得身體很熱,但又不想脫掉整件外套,可以怎麼做來調節體溫?", |
| | options: ["把帽子戴起來", "拉開外套的透氣拉鍊", "繫緊外套的袖口"], |
| | answer: "拉開外套的透氣拉鍊" |
| | }, |
| | { |
| | question: "保暖層如果被雨淋濕,會發生什麼事?", |
| | options: ["保暖效果會更好", "會變得更輕", "會失去鎖住熱空氣的能力"], |
| | answer: "會失去鎖住熱空氣的能力" |
| | }, |
| | { |
| | question: "為什麼「防護層」的防風功能很重要?", |
| | options: ["因為風會讓衣服變得太重", "因為風會吹散保暖層裡鎖住的熱空氣", "因為風會讓衣服顏色變淡"], |
| | answer: "因為風會吹散保暖層裡鎖住的熱空氣" |
| | }, |
| | { |
| | question: "洋蔥式穿搭最主要的好處是什麼?", |
| | options: ["讓外觀看起來更時尚", "可以減少衣物數量", "方便根據環境變化調節體溫"], |
| | answer: "方便根據環境變化調節體溫" |
| | }, |
| | { |
| | question: "哪一層是為了應對強風和下雨等外部環境變化?", |
| | options: ["基礎層", "保暖層", "防護層"], |
| | answer: "防護層" |
| | } |
| | ]; |
| | |
| | let currentQuestionIndex = 0; |
| | let score = 0; |
| | |
| | const quizQuestionDiv = document.getElementById('quiz-question'); |
| | const questionText = document.getElementById('question-text'); |
| | const answerOptionsDiv = document.getElementById('answer-options'); |
| | const quizResultDiv = document.getElementById('quiz-result'); |
| | const scoreSpan = document.getElementById('score'); |
| | const totalQuestionsSpan = document.getElementById('total-questions'); |
| | const resultMessage = document.getElementById('result-message'); |
| | const restartBtn = document.getElementById('restart-btn'); |
| | const feedbackModal = document.getElementById('feedback-modal'); |
| | const feedbackText = document.getElementById('feedback-text'); |
| | const nextBtn = document.getElementById('next-btn'); |
| | |
| | function showQuestion() { |
| | if (currentQuestionIndex < questions.length) { |
| | const q = questions[currentQuestionIndex]; |
| | questionText.textContent = q.question; |
| | answerOptionsDiv.innerHTML = ''; |
| | q.options.forEach(option => { |
| | const button = document.createElement('button'); |
| | button.textContent = option; |
| | button.className = "w-full py-3 px-4 bg-gray-200 text-gray-700 font-medium rounded-full hover:bg-blue-500 hover:text-white transition-colors duration-300 shadow-md"; |
| | button.onclick = () => checkAnswer(option); |
| | answerOptionsDiv.appendChild(button); |
| | }); |
| | } else { |
| | showResults(); |
| | } |
| | } |
| | |
| | function checkAnswer(selectedOption) { |
| | const q = questions[currentQuestionIndex]; |
| | const isCorrect = selectedOption === q.answer; |
| | if (isCorrect) { |
| | score += 10; |
| | feedbackText.textContent = "答對了!"; |
| | feedbackText.className = "text-xl font-bold text-green-600 mb-4"; |
| | } else { |
| | feedbackText.textContent = `答錯了... 正確答案是:「${q.answer}」`; |
| | feedbackText.className = "text-xl font-bold text-red-600 mb-4"; |
| | } |
| | feedbackModal.style.display = 'flex'; |
| | } |
| | |
| | nextBtn.onclick = () => { |
| | feedbackModal.style.display = 'none'; |
| | currentQuestionIndex++; |
| | showQuestion(); |
| | }; |
| | |
| | function showResults() { |
| | quizQuestionDiv.classList.add('hidden'); |
| | quizResultDiv.classList.remove('hidden'); |
| | scoreSpan.textContent = score; |
| | totalQuestionsSpan.textContent = 100; |
| | if (score === 100) { |
| | resultMessage.textContent = "太棒了!你完全掌握了洋蔥式穿搭的精髓!"; |
| | } else if (score >= 60) { |
| | resultMessage.textContent = "做得很好!再多練習幾次,你就能完全掌握了!"; |
| | } else { |
| | resultMessage.textContent = "沒關係,洋蔥式穿搭需要多練習。可以回到前面再複習一次喔!"; |
| | } |
| | } |
| | |
| | restartBtn.onclick = () => { |
| | currentQuestionIndex = 0; |
| | score = 0; |
| | quizResultDiv.classList.add('hidden'); |
| | quizQuestionDiv.classList.remove('hidden'); |
| | showQuestion(); |
| | }; |
| | |
| | document.addEventListener('DOMContentLoaded', () => { |
| | showQuestion(); |
| | }); |
| | </script> |
| | </body> |
| | </html> |
| |
|