<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Interactive MCQ Container with CSS & JavaScript</title> </head> <body> <div class="quiz-container" id="quiz"> <div class="quiz-header"> <h2 id="question">Question text</h2> <ul> <li> <input type="radio" name="answer" id="a" class="answer"> <label for="a" id="a_text"> Question</label> </li> <li> <input type="radio" name="answer" id="b" class="answer"> <label for="b" id="b_text"> Question</label> </li> <li> <input type="radio" name="answer" id="c" class="answer"> <label for="c" id="c_text"> Question</label> </li> <li> <input type="radio" name="answer" id="d" class="answer"> <label for="d" id="d_text"> Question</label> </li> </ul> </div> <button id="submit">Submit</button> </div> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> </body> </html>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;400&display=swap'); * { box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 90vh; overflow: hidden; margin: 0; background-color: #eee; } .quiz-container { background-color: #fff; border-radius: 2%; box-shadow: 0 0 10px 2px rgba(100, 100, 100, 0.1); width: 37.5rem; overflow: hidden; } .quiz-header { padding: 4rem; } h2 { padding: 1rem; text-align: center; margin: 0; } ul { list-style-type: none; padding: 0; } ul li { font-size: 1.2rem; margin: 1rem 0; } ul li label { cursor: pointer; } button { background-color: #33a1eb; border: none; color: #fff; display: block; width: 100%; cursor: pointer; font-size: 1.1rem; font-family: inherit; padding: 1.3rem; } button:hover { background-color: #3c8ae3; } button:focus { outline: none; background-color: #3c8ae3; }
const quizData = [{ question: "Which language runs in a web browser?", a: "Java", b: "C", c: "Python", d: "JavaScript", correct: "d", }, { question: "What does CSS stand for?", a: "Central StyleSheets", b: "Cascading Style Sheets", c: "Cascading Simple Sheets", d: "Cars SUVs Sailboats", correct: "b", }, { question: "What does HTML stand for?", a: "HyperText Markup Language", b: "Heypertext Markdown Language", c: "Hyperloop Machine Language", d: "Helicopters Terminals Motorboats Lamborginis", correct: "a", }, { question: "What year was JavScript launched?", a: "1994", b: "1995", c: "1997", d: "none of the above", correct: "b", } ]; const quiz = document.getElementById('quiz'); const answerEls = document.querySelectorAll('.answer'); const questionEl = document.getElementById('question'); const a_text = document.getElementById('a_text'); const b_text = document.getElementById('b_text'); const c_text = document.getElementById('c_text'); const d_text = document.getElementById('d_text'); const submitBtn = document.getElementById('submit'); let currentQuiz = 0; let score = 0; loadQuiz(); function loadQuiz() { deselectAnswer(); const currentQuizData = quizData[currentQuiz]; questionEl.innerText = currentQuizData.question; a_text.innerText = currentQuizData.a; b_text.innerText = currentQuizData.b; c_text.innerText = currentQuizData.c; d_text.innerText = currentQuizData.d; } function deselectAnswer() { answerEls.forEach(answerEl => answerEl.checked = false); } function getSelected() { let answer; answerEls.forEach(answerEl => { if (answerEl.checked) { answer = answerEl.id; } }); return answer; } submitBtn.addEventListener('click', () => { const answer = getSelected(); if (answer) { if (answer === quizData[currentQuiz].correct) { score++; } currentQuiz++; if (currentQuiz < quizData.length) { loadQuiz(); } else { quiz.innerHTML = ` <h2> You answered correctly at ${score}/${quizData.length} questions correctly</h2> <button onclick="location.reload()"> Reload </button> ` } } })
This snippet creates an engaging and interactive multiple-choice question (MCQ) container, providing a dynamic learning experience with pure CSS and JavaScript. The component allows users to interact with quiz questions, select answers, and receive immediate feedback, enhancing user engagement and comprehension.
Key Features:
- Interactive Functionality: Implements JavaScript to handle user interactions, including answer selection, feedback display, and score tracking.
- Dynamic Content Handling: Utilizes JavaScript to dynamically load and manage MCQ questions and answer options.
- Responsive Design: Ensures the MCQ container adapts to various screen sizes, offering a consistent user experience across devices.
- Clear Visual Indicators: Uses CSS to create clear visual cues for correct and incorrect answers, enhancing user understanding.
Implementation:
- Create the HTML Structure: Set up the basic HTML structure for the MCQ container, including question display, answer options, and feedback areas.
- Apply CSS Styles: Use CSS to style the MCQ container, answer options, feedback elements, and visual indicators.
- Implement JavaScript Logic: Write JavaScript code to handle user interactions, manage question states, provide feedback, and track scores.
- Integrate Dynamic Content: Use JavaScript to dynamically load and display MCQ questions and answer options from a data source.
By following these steps, you can create an interactive and engaging MCQ container using pure CSS and JavaScript, enhancing the learning experience for your website visitors.

Join Our Community Call-to-Action Banner Section With Tailwind CSS

Bootstrap 5 Responsive Service Pricing Table Block

Owl Carousel Responsive CSS-Only Team Section Showcase

Tailwind CSS Subscribe Container with Integrated Footer

Responsive Bootstrap 5 Detailed Features Section

Responsive CSS-Only Glassmorphism Login Form with background image

Responsive Tailwind CSS Hero Section and Adaptive Navbar

Responsive Bootstrap 5 Compact FAQ Accordion Display

Responsive CSS Only Services Section with Hover Effects

Responsive Tailwind CSS Team Members Display Showcase

Responsive Bootstrap 5 Clear Process Flow Component

Responsive Interactive Login & Register Form with CSS & JS Transitions
Building Blocks for Your Web Pages
Explore a collection of pre-written HTML,CSS and Javascript
snippets to jumpstart your web development projects.