A modern, interactive Internet Technology quiz application with a beautiful neomorphic UI design. Features multiple question types, theme switching, detailed review section, and a sleek animation system. Built with pure frontend technologies for outstanding performance.
Internet.Technologies.mp4
The application is fully responsive and works beautifully on all devices:
- Desktop: Full-featured experience with optimized layouts
- Tablet: Adjusted UI for comfortable touch interaction
- Mobile: Streamlined interface for on-the-go learning
- 20 Internet Technology Questions: Covering HTTP, DNS, networking, web development and more
- Multiple Question Types: MCQ, True/False, and Text Input questions
- 15-Minute Timer: Challenge yourself to complete all questions in time
- Score Tracking: See how well you performed
- Detailed Review: Compare your answers with correct ones, with explanations
- Navigation: Go back to previous questions to change answers
- Visual Feedback: Clear color-coding (green for correct, red for incorrect)
- Soft, realistic shadows that create a 3D effect
- Custom elevation system for interactive elements
- Consistent design language throughout the application
- Light theme: Clean, bright interface for daytime use
- Dark theme: Eye-friendly dark mode for night time
- System preference detection: Automatically matches your device settings
- Smooth transitions between quiz states
- Micro-interactions for enhanced feedback
- Performance-optimized animations using CSS techniques
/**
* Shows the review screen with a list of questions and user's answers
* Visually indicates if answers are correct or incorrect
*/
function showReviewScreen() {
// Create review item for each question
questions.forEach((question, index) => {
// Get user's answer
const userAnswerText = getUserAnswerText(question);
// Create visual feedback based on correctness
const userAnswerObj = userAnswers[index];
if (userAnswerObj && userAnswerObj.correct) {
userAnswer.classList.add('correct'); // Green styling
} else if (userAnswerText !== "Not answered") {
userAnswer.classList.add('wrong'); // Red styling
}
// Display correct answer for comparison
const correctAnswer = document.createElement('div');
correctAnswer.classList.add('review-answer', 'correct-answer');
correctAnswer.textContent = getCorrectAnswerText(question);
});
}:root {
/* Color Palette */
--primary: #7000FF;
--primary-dark: #5B00CC;
--primary-light: #9B4DFF;
--primary-rgb: 112, 0, 255;
--secondary: #FF2D55;
--accent: #00F7FF;
--accent-secondary: #0096FF;
/* Neomorphic Shadow System */
--soft-shadow-light: rgba(166, 177, 199, 0.5);
--hard-shadow-light: rgba(255, 255, 255, 0.8);
--soft-shadow-dark: rgba(0, 0, 0, 0.3);
--hard-shadow-dark: rgba(40, 45, 60, 0.5);
/* Dynamic Theme Variables */
--background: var(--bg-light);
--text: var(--text-light);
--shadow-soft: var(--soft-shadow-light);
--shadow-hard: var(--hard-shadow-light);
}- Efficient DOM Manipulation: Minimized reflows and repaints
- Event Delegation: Optimized event handling
- CSS Animation: Hardware-accelerated animations with transforms
- Lazy Initialization: Components load only when needed
- Debounced Events: Prevents performance bottlenecks during interaction
# Clone the repository
git clone https://github.com/HosamDyab/Quiz-App.git
# Navigate to the project
cd Quiz-App
# No build tools or dependencies required!
# Simply open index.html in your browser- Double-click on
index.htmlor open it with your browser - No server needed - works directly from the filesystem
- No external dependencies - everything included!
Quiz-App/
โโโ index.html # Main entry point
โโโ script.js # Quiz application logic
โโโ styles.css # Styling and animations
โโโ README.md # Documentation
- โ Chrome (latest)
- โ Firefox (latest)
- โ Safari (latest)
- โ Edge (latest)
- โ Opera (latest)
- โ Mobile browsers
- User accounts and progress tracking
- Additional question categories
- Difficulty level settings
- Offline support with PWA implementation
- Multi-language support
- Social sharing of results
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Font Awesome for the icons
- Google Fonts for typography
- All contributors and reviewers