Background image
logologo symbol

1 - Introductory Course

HTML & CSS - Introduction

Description

HTML and CSS are two of the web's building blocks. They allow us, respectively, to define what are the contents of a website and how it should look like. In this module you will get in touch with the syntax, learn all fundamental parts of each and create a website.
If you never worked with either before, the syntax might look a little weird at first but it grows on you and you'll feel at home in no time. Focus on creating clean code, which you understand 100%. Make extensive use of sandboxes (with CodePen or W3Schools, for example). Get comfortable and use HTML's semantic tags (header, main, section, footer, nav, etc). Go through the list of HTML and CSS topics described in this Guide to make sure you haven't overlooked anything important.
Those semantic tags are worth dwelling on, because they are the moment web development stops being about how things look. A <div> and a <nav> can be styled to look identical, but they do not mean the same thing. Someone using a screen reader hears "navigation" and can jump straight to it; with a div they hear nothing useful at all. Same with a <button> versus a div you attached a click handler to: the real button can be reached with the Tab key and activated with Enter or Space, for free, and the fake one cannot be used without a mouse. Choosing the right tag is the cheapest accessibility work you will ever do — you are not adding anything, just picking the honest name for what the thing is.
This matters professionally, not only morally. Since June 2025 the European Accessibility Act has applied across the EEA, Iceland included, which means a great many commercial websites and apps are now legally required to be accessible. Employers here are asking about this in interviews. Starting the habit now, on a one-page website, is far easier than retrofitting it later.
It's also a good moment to learn a bit about Developer Tools, which all major browsers offer. With these tools you'll be able to inspect your work and understand what's really happening when the browser uses your files.
But none of that is much fun if you can't share, so you'll also release a website on the web using a service such as Github Pages. With this knowledge it will be possible to make all your great work publicly available for friends and potential future clients!

Topics

  • What is HTML and CSS?
  • Setup development environment
  • Basic HTML aspects
    • Syntax
      • Units
    • Common tags
      • Block elements
        • div, main, section, ul, li, table
      • Inline elements
        • p, a, img
    • Semantics
      • Common layout structure (header with navbar, main, sidebase, footer)
  • Basic CSS aspects
    • Structure & Syntax
    • Common properties
    • Colors
    • Fonts
    • Display & Visibility
    • State pseudo-classes
    • BEM Notation
    • CanIUse.com
  • Accessibility basics
    • Alt text on images
    • Heading order (one h1, then h2, h3 — no skipping)
    • Landmarks (header, nav, main, footer)
    • Tabbing through a page with the keyboard
  • Chrome Dev Tools
  • Deployment
    • Git
    • Markdown (README.md)
    • Surge, Github Pages and similar services

Goals

Knowledge

Understand what a markup language is
Understand what a style sheet language is
Understand what the "cascading" in Cascading Style Sheets means
Understand what "static site hosting" is
Understand that the tag you choose is what tells a screen reader, and Google, what a thing actually is
Understand what alt text is for, and why headings have to be in order

Skills

Be able to setup a development environment to start a web development project
Be able to use HTML and CSS to create a simple website
Be able to use the browser's development tools to inspect a website's code
Be able to publish a static website
Be able to write a page that someone can use with only a keyboard

Idea for return

  • description
    • Create a one-page website (see some theme ideas below).
  • Submit:
    • Git repository
      • Add comments for each relevant code block
      • Add project description and details in the README.md file
    • Public URL (no need for a custom domain). Tip: use GitHub Pages.
  • What should be included:
    • Website’s should contain at least 3 parts: <header> element, <main> element and <footer> element
    • <header> element should contain at least a logo and navigation item
    • <footer> element should contain at least some contact information or similar
    • Website should contain:
      • At least 2 <section> elements
      • Paragraph, list, image and anchor elements
    • Website should be styled with CSS
      • Use of color palette
      • Use of Google fonts (or similar)
      • Hover state for links
      • At least one page should be available
    • Website should be usable by everyone
      • Every image has an alt that describes what is in it. If the image is purely decorative, give it an empty alt="" so screen readers skip it
      • Exactly one <h1>, and the headings below it go in order — do not jump from h2 to h4 because you liked the size better. Use CSS for size
      • Now put your mouse away and press Tab through your whole page. You should be able to reach every link, and you should always be able to see where you are. If the outline disappeared, you removed it with CSS — put it back
    • Theme ideas:
      • Lost pet website 😢
      • New product or service
      • Portfolio
      • Upcoming event
      • Restaurant website