Apply your knowledge to build something amazing!
:information_source: Project Overview Difficulty Level: Intermediate
Estimated Time: 6-8 hours
Skills Practiced: HTML Structure, CSS Styling, Responsive Design, External Resources Integration, Design Principles
This project teaches:
graph LR
A[🚀 Start] --> B[📋 Part 1: Setup & HTML]
B --> C[🎨 Part 2: CSS & Styling]
C --> D[📝 Part 3: Content & Resources]
D --> E[🎯 Part 4: Icons & Polish]
E --> F[📱 Part 5: Responsive Design]
F --> G[✅ Complete!]
style A fill:#e1f5e1
style B fill:#e3f2fd
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#fce4ec
style F fill:#e0f2f1
style G fill:#c8e6c9
:warning: Critical Files Warning DO NOT DELETE the existing files in the template:
- Package files
- Any other files you didn't create
ONLY EDIT the necessary files (index.html, style.css, and your uploaded assets).
tip Pro Tip Create a backup of your project regularly by downloading it from StackBlitz. This helps you recover your work if something goes wrong!
Required Assets:
By the end of Part 1, you should have:
Project Preparation:
:muscle: You've got this! Setting up might feel overwhelming at first, but once you see your first image appear on the page, you'll feel the excitement of bringing your holiday memories to life!
tip Best Practice
Organize your images with descriptive names like beach-background.jpg
or vacation-photo-1.jpg
instead of generic names like img1.jpg
. This makes your code more maintainable!
HTML Structure:
index.html
file<div>
tags and create classes to style them with CSS.{/* Example structure for your sections */}
<div class="hero-section">
<h1>My Amazing Holiday</h1>
<p>Welcome to my travel story...</p>
</div>
<div class="content-section">
<h2>Day 1: Beach Adventures</h2>
<img src="assets/beach-photo.jpg" alt="Beach sunset">
<p>Description of your first day...</p>
</div>
By the end of Part 2, you should have:
CSS Setup and Design:
<head>
section).:warning: Common Pitfall If your CSS isn't working, check these common issues:
- Is the CSS file linked correctly?
<link rel="stylesheet" href="style.css">
- Are your class names spelled correctly in both HTML and CSS?
- Did you forget the dot (.) before class names in CSS?
Section Styling:
/* Example CSS for sections */
.hero-section {
background-image: url('assets/hero-background.jpg');
background-size: cover;
background-position: center;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.content-section {
padding: 60px 20px;
max-width: 1200px;
margin: 0 auto;
}
By the end of Part 3, you should have:
Implemented Google Fonts
Applied a consistent color palette
Completed styling for your first content section
Created an appealing visual hierarchy
Complete the layout for your first content section (for example, the first "sandwich" or main section).
Integrate a Google Font of your choice by adding the appropriate <link>
tag in the <head>
of index.html and referencing the font in your CSS.
Choose a color palette from Color Hunt and apply it to your website for a cohesive design.
tip Typography Tips Choose fonts that complement each other:
{/* Example: Adding Google Fonts */}
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Dancing+Script:wght@700&display=swap" rel="stylesheet">
</head>
/* Example: Using the fonts in CSS */
h1 {
font-family: 'Dancing Script', cursive;
font-size: 3rem;
color: #2c3e50; /* From your Color Hunt palette */
}
body {
font-family: 'Montserrat', sans-serif;
line-height: 1.6;
color: #34495e; /* From your Color Hunt palette */
}
By the end of Part 4, you should have:
All content sections completed and styled
Favicon properly displayed
Font Awesome icons integrated
Consistent design throughout the page
Finish the layout for all remaining content sections, ensuring each section is styled and organized.
Add a favicon to your project by uploading an icon file and linking it in the <head>
of index.html.
Use Font Awesome for icons:
<head>
.:warning: Icon Integration Remember to add Font Awesome BEFORE you try to use any icons:
html
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
{/* Example: Adding favicon and Font Awesome */}
<head>
{/* Favicon */}
<link rel="icon" type="image/png" href="assets/favicon.png">
{/* Font Awesome */}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
</head>
{/* Example: Using Font Awesome icons */}
<div class="social-icons">
<i class="fab fa-instagram"></i>
<i class="fab fa-facebook"></i>
<i class="fas fa-camera"></i>
<i class="fas fa-map-marker-alt"></i>
</div>
By the end of Part 5, you should have:
Mobile-friendly navigation
Images that scale properly
Text that's readable on all devices
Layout that adapts to different screens
Make your web page responsive so it looks good on all screen sizes.
Use CSS media queries and/or Bootstrap (if included) to adjust layouts for mobile, tablet, and desktop views.
Test your design using the StackBlitz preview window - resize the window to check how your site adapts.
:tada: Almost there! Responsive design can be tricky, but remember: you're not just making a website, you're creating an experience that everyone can enjoy, whether they're on a phone, tablet, or computer. Every adjustment you make brings your project closer to professional quality!
tip Responsive Design Best Practices
/* Example: Media Queries for Responsive Design */
/* Mobile styles (default) */
.content-section {
padding: 20px;
font-size: 16px;
}
.gallery {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}
/* Tablet styles */
@media (min-width: 768px) {
.content-section {
padding: 40px;
font-size: 18px;
}
.gallery {
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
}
/* Desktop styles */
@media (min-width: 1024px) {
.content-section {
padding: 60px;
max-width: 1200px;
margin: 0 auto;
}
.gallery {
grid-template-columns: repeat(3, 1fr);
gap: 30px;
}
}
My Holiday Part 1 - Content Layout
My Holiday Part 2 - Content Layout
My Holiday Part 3 - Content Layout
My Holiday Part 4 - Final Layout
My Holiday Part 5 - Responsive Design
Code with AI: AI can help you brainstorm and generate content!
Prompts:
Code with AI: Experiment with different background styles.
Prompts:
Code with AI: Explore different font and color combinations.
Prompts:
Code with AI: Find the perfect icon.
Prompts:
tip Debugging Checklist When something isn't working, check these in order:
Images Not Showing:
/* Wrong */
background-image: url(assets/image.jpg); /* Missing quotes */
background-image: url("asset/image.jpg"); /* Wrong folder name */
/* Correct */
background-image: url("assets/image.jpg");
CSS Not Applying:
{/* Check your link tag */}
<link rel="stylesheet" href="style.css"> {/* Is the path correct? */}
{/* Check class names match */}
<div class="hero-section"> {/* HTML */}
.hero-section { } /* CSS - names must match exactly */
Layout Breaking on Mobile:
max-width: 100%
Once you've completed the basic requirements, try these advanced challenges:
Create a photo gallery with hover effects:
.gallery-item {
transition: transform 0.3s ease;
}
.gallery-item:hover {
transform: scale(1.05);
box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}
Add a parallax scrolling effect to your hero background:
.hero-section {
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
Implement a theme switcher:
function toggleTheme() {
document.body.classList.toggle('dark-mode');
}
Create a smooth page entrance:
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.content-section {
animation: fadeIn 1s ease-out;
}
Design a unique cursor for your holiday theme:
body {
cursor: url('assets/palm-tree-cursor.png'), auto;
}
tip Going Further These challenges help you: