HTML & CSS · 14-day planAll days
Put the whole course together in a complete, responsive personal page with a header, an introduction, a projects grid, a contact form and a footer. Plan it, build it step by step, check it against the accessibility list, then publish it free on the web for anyone to visit.
By the end of today you can
- Plan a page as sections before writing code
- Build a complete page with semantic HTML
- Style it with variables, Flexbox, Grid and media queries
- Check it for responsiveness and accessibility
- Publish a site for free with GitHub Pages or Netlify
Time to build something real: your own personal page. It uses everything from the course, and by the end it can be online for anyone to visit.
1. Plan the sections
Before any code, decide what goes on the page:
| Section | Content | Elements |
|---|---|---|
| Header | Your name, links to the sections | header, nav, a href="#…" |
| About | Photo, a few sentences about you | section, img, h1, p |
| Projects | Three things you've made or done | section, article cards |
| Contact | Name, email, message | form, label, input, textarea, button |
| Footer | Links, copyright | footer |
2. The whole page
Here it is, built from the course's pieces. Make it yours: change the name, text, colours (in :root) and projects. Use the width buttons to check phone and desktop.
Things to notice:
- Variables in
:roothold the whole design: change--brandand every button, link and tag follows. - Flexbox lays out the header; Grid with
auto-fitlays out the projects; one media query puts the photo beside the intro on wider screens. - The project images have
alt=""because they're decorative: the card titles already say what each project is. - The sticky header and
#about-style links make a one-page site easy to move around. - Forms on a static site need a service to receive messages: Formspree or Netlify Forms give you an address for
action.
3. Check it
Before publishing, go through the list:
- Widths: Phone, Tablet and Desktop all look right; nothing overflows sideways.
- Keyboard: Tab through every link, the button and the form; the focus is always visible.
- Headings: one
h1, thenh2for sections,h3for cards. - Images: meaningful alt text, or
alt=""for decoration. - Contrast: text is easy to read on its background.
- Validate: paste your HTML into the W3C validator (validator.w3.org) to catch typos.
4. Put it online
Make a folder with index.html, your CSS (in a <style> or a style.css file) and your images, then pick one:
Netlify Drop (quickest)
- Go to app.netlify.com/drop.
- Drag your folder onto the page.
- You get a public web address in seconds. Make a free account to keep it and update it.
GitHub Pages (great if you're learning Git)
- Create a repository on GitHub and upload your files, with
index.htmlat the top level. - In the repository, open Settings → Pages, choose the main branch and save.
- After a minute, your site is live at
https://your-username.github.io/repository-name/.
Both give you HTTPS for free, and you can connect your own domain name later.
5. Make it yours
Ideas to keep going:
- Dark mode: add
@media (prefers-color-scheme: dark) { :root { --bg: #0f172a; --text: #e5e7eb; … } }. - More pages: a blog post page linked from a project card.
- A web font for headings from Google Fonts.
- Animations: fade cards in with a transition on hover.
- Next course: add interactivity with JavaScript, like a menu button, a photo lightbox or form checks.
Course recap
Over 14 days you learned:
- HTML: elements and tags, text and lists, links and images, semantic layout, tables and forms.
- CSS: rules and selectors, the cascade, the box model, typography, colour and variables.
- Layout: Flexbox for rows and columns, Grid for two-dimensional layouts.
- Responsive design: the viewport, fluid units and mobile-first media queries.
- Polish and accessibility: positioning, transitions, focus, contrast and a checklist.
Next, take the HTML & CSS skill test, then bring your pages to life with the JavaScript course.
Knowledge check
Test what you learned
5 questions · pick an answer to see if you're right
- 1
Why sketch the sections of a page before writing code?
- 2
Why keep colours and spacing in CSS variables in a project like this?
- 3
The projects section should show 1 card per row on phones and 3 on desktops. Which CSS does this in one line?
- 4
What's the file name of a site's home page, so it opens at the plain address?
- 5
What do GitHub Pages and Netlify do for you?
That's the last day of HTML & CSS!
Check what you learned with the skill testWas this lesson helpful?
Need a breather? Take a two-minute break