Two pages. One clear menu. A registration form.
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.
| Time | Step |
|---|---|
| 0–4 min | Plan and open the files |
| 4–10 min | Build the Home page |
| 10–17 min | Connect the pages |
| 17–26 min | Create the form |
| 26–35 min | Style the interface |
| 35–40 min | Test and explain |
Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
<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>Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
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>aria-current="page" from the Home link to the Register link.Hint: index.html#contact means “open index.html and find id=contact”. CSS will underline the current page link in Step 5.
Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
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>for matches its control’s id.abc. Observe the browser’s message.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.
Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
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:
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.
Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
Work with a partner. Use fictional data. Do not fix a problem silently: note what failed and what you changed.
| Test | Expected result |
|---|---|
| Home → Register → Home | Both page links work |
| Contact from Register | Home opens at the Contact section |
| Submit blank form | Browser asks for a required value |
| Enter name, abc as email, choose workshop | Browser rejects the email format |
| Enter fictional valid values | No validation error; page stays open; nothing is saved |
| Press Tab; use Enter on a menu link | Focus is visible; the link opens |
| Narrow the browser window | Menu 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.
Mark each answer: ✓ I can explain it · ? I need to check · → I need help. Show evidence in your code or browser.
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.