GRADE 11 · PRACTICAL WORK · 40 MINUTES

Build a School Digital Day website

Two pages. One clear menu. A registration form.

Your goal

11.5.3.2 Create an interface using HTML and CSS.
11.5.3.3 Implement site navigation.

Use skills from earlier lessons: page elements, headings, paragraphs, links and form controls.

Your product: index.html, register.html and one shared styles.css. The Home page presents the event; the Register page contains a form.

You need a code editor and a browser. Unzip the folder first. No internet or server is needed. Work in the student folder. (download and unzip файл). Copy the supplied code, then complete the changes yourself.

TimeStep
0–4 minPlan and open the files
4–10 minBuild the Home page
10–17 minConnect the pages
17–26 minCreate the form
26–35 minStyle the interface
35–40 minTest and explain

1. Plan your website · 4 minutes

  1. Open index.html, register.html and styles.css in your editor. Open index.html in the browser.
  2. On paper, sketch two small page plans. Both need a header, a menu, main content and a footer.
  3. On the Home plan, add a workshop card and a Contact section. On the Register plan, add a form.
  4. Draw arrows for Home → Register and Register → Home. Add a Contact jump from each page.
Pause and check
  1. What will the user do on each page?
  2. Where will I put the menu so users can find it on both pages?

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

2. Build the Home page · 6 minutes

  1. In both HTML files, replace the STEP 2 comment in head with this line:
<link rel="stylesheet" href="styles.css">

In index.html only, replace the comment inside main with this code:

<section>
  <h2>Explore digital skills</h2>
  <p>Join our school event and try a new skill.</p>
  <article>
    <h3>Web design workshop</h3>
    <p>Create a page with HTML and CSS.</p>
    <a class="button" href="register.html">Register now</a>
  </article>
</section>
<aside>
  <h2>Before you join</h2>
  <p>Bring a notebook. Beginners are welcome.</p>
</aside>
<section id="contact">
  <h2>Contact</h2>
  <p>Ask your Computer Science teacher.</p>
</section>
  1. Change the workshop title and paragraph to your own idea. Keep the Register now link.
  2. Find header, nav (to be added next), main, section, article, aside and footer. Keep the nesting shown in the example.
  3. Save and refresh. At this point the page still has the browser’s default appearance.
Pause and check
  1. Why is the workshop inside article?
  2. Which element contains the main page content?
  3. Does aside have to appear on the right? Explain.

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

3. Add navigation · 7 minutes

Replace the STEP 3 comment in both files with this menu:

<nav aria-label="Main navigation">
  <a href="index.html" aria-current="page">Home</a>
  <a href="register.html">Register</a>
  <a href="index.html#contact">Contact</a>
</nav>
  1. In register.html, move aria-current="page" from the Home link to the Register link.
  2. Save both files. Test Home → Register → Home.
  3. Test Contact on both pages. It must reach the Contact section on index.html.
  4. On the Home page, test Register now.

Hint: index.html#contact means “open index.html and find id=contact”. CSS will underline the current page link in Step 5.

Pause and check
  1. What is the difference between register.html and index.html#contact?
  2. Does the word after # exactly match the target id?
  3. Can I return Home without using the browser Back button?

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

4. Create the registration form · 9 minutes

In register.html only, replace the comment inside main with:

<section>
  <h2>Your registration</h2>
  <p>Demo only: no data is sent or saved. Use fictional details.</p>
  <form onsubmit="event.preventDefault()">
    <label for="student-name">Name (required)</label>
    <input type="text" id="student-name" name="student_name" required>

    <label for="email">Email (required)</label>
    <input type="email" id="email" name="email" required>

    <!-- Add the workshop select here -->

    <label for="message">Your question (optional)</label>
    <textarea id="message" name="message" rows="3"></textarea>

    <button type="submit">Check my details</button>
  </form>
</section>
  1. Replace the workshop comment with the select code below.
  2. Add one more workshop option yourself. Give it a different value and a clear label.
  3. Check that each label’s for matches its control’s id.
  4. Save. Press Check my details with blank fields, then with an invalid email such as abc. Observe the browser’s message.
  5. Test fictional valid details: Alex, alex@example.com, and one workshop.
<label for="workshop">Workshop (required)</label>
<select id="workshop" name="workshop" required>
  <option value="">Choose a workshop</option>
  <option value="web">Web design</option>
  <option value="python">Python</option>
</select>

The supplied onsubmit line prevents submission after browser validation. You do not need to write JavaScript in this task. With valid details, the page stays open and no success message appears. This is an interface exercise: the form does not register a person or save data.

Pause and check
  1. What does required do?
  2. Why is type="email" more suitable than type="text" here?
  3. Why do we use a button for checking a form and an a element for opening a page?
  4. Can I click the Name label to focus its input?

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

5. Style the interface · 9 minutes

Paste this code into styles.css, save and refresh both pages.

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: Arial, sans-serif;
  color: #243b35;
  background: #f2f6f5;
  line-height: 1.5;
}
header, footer {
  padding: 20px;
  background: #286d60;
  color: white;
  text-align: center;
}
nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px;
  background: #dcebe5;
}
nav a, .button, button {
  display: inline-block;
  padding: 10px 16px;
  background: #286d60;
  color: white;
  border: 0;
  border-radius: 6px;
  text-decoration: none;
  font: inherit;
}
nav a:hover, .button:hover, button:hover { background: #194b42; }
nav a[aria-current="page"] { text-decoration: underline; }
main { max-width: 850px; margin: auto; padding: 16px; }
section, aside {
  margin-bottom: 16px;
  padding: 20px;
  border: 1px solid #b9d1c6;
  border-radius: 10px;
  background: white;
}
article { padding: 16px; border-left: 4px solid #286d60; }
aside { background: #fff4d8; }
label { display: block; margin-top: 12px; }
input, select, textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid #617d70;
  border-radius: 5px;
  font: inherit;
}
button { margin-top: 16px; cursor: pointer; }
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid #a64b00;
  outline-offset: 3px;
}

Make three changes yourself:

  1. Change the header and footer background to a different dark colour. Keep the white text easy to read.
  2. Change the padding of section and aside from 20px to 24px. Observe the space inside the border.
  3. Change their margin-bottom from 16px to 24px. Observe the space between blocks.

Check that both pages share the same menu style. Make the browser window narrower: menu links should wrap, and form controls should stay inside their block.

Pause and check
  1. Did one change in styles.css affect both pages? Why?
  2. Which change increased space inside the blocks? Which increased the gap between them?
  3. Is the current page link underlined correctly on each page?
  4. Can I read all labels and see the keyboard focus outline?

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

6. Test and explain · 5 minutes

Work with a partner. Use fictional data. Do not fix a problem silently: note what failed and what you changed.

TestExpected result
Home → Register → HomeBoth page links work
Contact from RegisterHome opens at the Contact section
Submit blank formBrowser asks for a required value
Enter name, abc as email, choose workshopBrowser rejects the email format
Enter fictional valid valuesNo validation error; page stays open; nothing is saved
Press Tab; use Enter on a menu linkFocus is visible; the link opens
Narrow the browser windowMenu wraps; controls stay inside the page

Submit: the student folder with all three files, plus three short answers: (1) one HTML element and its purpose; (2) one CSS change and its effect; (3) one navigation or form problem you fixed. If no problem occurred, describe a test and its result.

Pause and check
  1. Can I show evidence that I have achieved both learning objectives?
  2. What can I now do without copying? What do I still need to practise?

Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.

Teacher / self-check notes — open after the task

Step 1: Home explains the event; Register collects input in a demonstration form. Keep the menu in the same location.

Step 2: article holds a self-contained workshop description. main holds the page’s primary content. aside means supplementary content; its position depends on CSS.

Step 3: register.html opens a file. index.html#contact opens the Home page and targets id="contact". There must be a Home link on Register.

Step 4: required prevents successful validation with an empty value. type="email" checks basic email syntax, not whether an address exists. A label links to a control through matching for and id values. name identifies a field when form data is submitted. A link navigates; a submit button attempts form submission.

Step 5: both files link to one stylesheet. Padding is inside the border; margin is outside. aria-current is set separately on each page and styled by CSS. Focus must be visible.

Assessment evidence: LO 11.5.3.2 — readable, consistently styled content and form with labels, spacing and visible focus. LO 11.5.3.3 — working page links, Contact fragment, return route and current-page indicator. Earlier skills — appropriate semantic structure and text, email, select, textarea and submit controls.

Timing: 4 + 6 + 7 + 9 + 9 + 5 = 40 minutes. This assumes students have already studied HTML elements, forms and basic CSS, and copy the provided snippets. Prepare the files before the lesson. This is guided practice, not a from-scratch coding test.