KKitForma.

Language

EnglishEnglishTürkçeTurkishDeutschGermanTool unavailable · open catalogEspañolSpanishTool unavailable · open catalogFrançaisFrenchTool unavailable · open catalogPortuguêsPortugueseTool unavailable · open catalogItalianoItalianTool unavailable · open catalogNederlandsDutchTool unavailable · open catalogPolskiPolishTool unavailable · open catalogРусскийRussianTool unavailable · open catalogУкраїнськаUkrainianTool unavailable · open catalogSvenskaSwedishTool unavailable · open catalogNorskNorwegianTool unavailable · open catalogDanskDanishTool unavailable · open catalogSuomiFinnishTool unavailable · open catalogČeštinaCzechTool unavailable · open catalogRomânăRomanianTool unavailable · open catalogΕλληνικάGreekTool unavailable · open catalogالعربيةArabicTool unavailable · open catalogעבריתHebrewTool unavailable · open catalogفارسیPersianTool unavailable · open catalogاردوUrduTool unavailable · open catalogहिन्दीHindiTool unavailable · open catalogবাংলাBengaliTool unavailable · open catalogதமிழ்TamilTool unavailable · open catalogతెలుగుTeluguTool unavailable · open catalogमराठीMarathiTool unavailable · open catalogગુજરાતીGujaratiTool unavailable · open catalog简体中文Chinese SimplifiedTool unavailable · open catalog繁體中文Chinese TraditionalTool unavailable · open catalog日本語JapaneseTool unavailable · open catalog한국어KoreanTool unavailable · open catalogTiếng ViệtVietnameseTool unavailable · open catalogไทยThaiTool unavailable · open catalogBahasa IndonesiaIndonesianTool unavailable · open catalogBahasa MelayuMalayTool unavailable · open catalogFilipinoFilipinoTool unavailable · open catalogKiswahiliSwahiliTool unavailable · open catalogAfrikaansAfrikaansTool unavailable · open catalogMagyarHungarianTool unavailable · open catalogБългарскиBulgarianTool unavailable · open catalogHrvatskiCroatianTool unavailable · open catalogSrpskiSerbianTool unavailable · open catalogSlovenčinaSlovakTool unavailable · open catalogSlovenščinaSlovenianTool unavailable · open catalogLietuviųLithuanianTool unavailable · open catalogLatviešuLatvianTool unavailable · open catalogEestiEstonianTool unavailable · open catalogCatalàCatalanTool unavailable · open catalogEuskaraBasqueTool unavailable · open catalog
← All learning paths

Free learning • no account required

Build a small, usable web app

Four stages take a study-planner page from meaningful HTML to a responsive layout, validated calculations and keyboard testing.

Produce a local study planner with labelled inputs, one responsive layout and a repeatable test checklist.

Suggested study time: 150 minutes, plus your project. Go at your own pace.

Before you start: prerequisites and scope
  • Create and save a text file; open a local HTML file in a browser.
  • Use addition, division and a browser. No programming course is required.

This is a foundations path, not a job qualification. Code is read and edited in your own text editor; this page checks understanding, not arbitrary code execution. No server, account or paid service is required.

0/4

Completion means practice acknowledged and every quiz answer correct. It is a personal study record, not certification. All lessons remain available.

Loading this device’s progress…

Restore or reset progress

1. Structure before decoration

By the end

  • Choose headings, labels and buttons by their purpose.
  • Connect an input to a visible label.

Start by writing the information a visitor needs: what the planner does, what to enter and where the answer appears. A heading names the page; a paragraph explains it; a form groups the inputs and submit action. These roles still matter when styles fail.

A visible label is not the same as a placeholder. Link the label’s for value to the input’s id. The hint can explain units, but it does not replace the name. Use a real button so keyboard activation works without recreating it.

Create planner.html, save it as UTF-8 and open it locally. The fragment below needs a document wrapper with <!doctype html>, html lang="en" (or "tr"), a title and a main element. It has no calculation yet: separate a readable structure from behavior.

Worked example

Name a duration field so its unit remains visible after typing.

  1. Give the input a unique id: minutes.
  2. Use the same value in label for. Put the unit in the label.
  3. Make the action a submit button inside the form.
<form id="planner">
  <label for="minutes">Minutes per session</label>
  <input id="minutes" name="minutes" type="number" min="1" required>
  <button type="submit">Calculate</button>
</form>

Clicking the label focuses the input. Tab reaches the input and the button.

Try it yourself

Add a second field for sessions per week and an empty paragraph for the result. Do not add JavaScript yet.

  • Each input has a different id and a matching visible label.
  • The button is reachable with Tab; clicking either label focuses the right input.
Reveal the practice solution

Use id="sessions" with label for="sessions". Give the result paragraph id="result" and role="status" so later result updates can be announced.

Watch for this mistake: A large bold paragraph may look like a heading, but it does not expose heading structure. Choose the semantic element first.

Check your understanding

Choose one answer per question. You can retry without a limit; review the explanation after checking.

1. Which pair connects a visible label to an input?
2. A visitor must calculate using a keyboard. Which element is the best starting point?

0/2 answered. Answer every question before checking.

Sources and review date

Explanations, examples and quiz questions are original KitForma material. These links support technical facts and curriculum alignment.

Apply it: your final project

Build a weekly study planner. Ask for minutes per session and sessions per week. Show total weekly minutes and hours. Include a heading, explanation, labelled fields and a result region.

  • 30 minutes × 4 sessions gives 120 minutes and 2 hours; 45 × 3 gives 135 minutes and 2.25 hours.
  • Reject empty, negative or non-finite values. Sessions must be a whole number greater than zero.
  • At a narrow width, fields fit without page scrolling sideways. All actions work with Tab and Enter, and results are announced.
  • Record one failing input, the cause, the fix and the repeated test in a short README.

The project is self-reviewed using this rubric; the site does not automatically grade your code or certify mastery.

KitForma

What would you like to do?