Learn HTML and CSS: form, input, label, button and the types of a field
Forms
Anyone who wants a broken lamp fixed still has to phone Walter, and he writes everything down on the back of a beer mat. A form on the website would save him a lot of beer mats.
A form
A form goes in <form>. Every field is an <input>, or a <textarea> for a longer text and a <select> with <option>s for a drop-down list. Every field gets a <label>, the text above it: the label's for is the field's id. Whoever taps the label lands in the field, and a screen reader reads out what's being asked.
With type you choose the kind of field: email for an email address (a phone then shows a keyboard with @), tel for a phone number, date and number. A <button> sends the form.
In this course a form never sends anything: you only see how it looks.
<link rel="stylesheet" href="style.css"><main> <h1>Sign up your device</h1> <form> <label for="name">Name</label> <input id="name" type="text"> <label for="email">Email</label> <input id="email" type="email"> <label for="device">Device</label> <select id="device"> <option>Bike</option> <option>Lamp or toaster</option> <option>Clothes</option> <option>Computer</option> </select> <label for="problem">What's broken?</label> <textarea id="problem"></textarea> <button>Sign up</button> </form></main>Try it yourself
After the email address, add a field for your phone number, with the label "Phone" and the id phone, and put a "Sign up" button at the bottom.
<link rel="stylesheet" href="style.css"><main> <form> <label for="name">Name</label> <input id="name" type="text"> <label for="email">Email</label> <input id="email" type="email"> </form></main>body { margin: 0; font-family: system-ui, sans-serif; background: #f4f0e8; color: #2a2622;}header { padding: 12px 16px; background: #1f4e5f; color: #ffffff;}header h1 { margin: 0; font-size: 1.5rem;}nav a { padding: 6px 10px; border-radius: 999px; color: #ffffff; text-decoration: none;}main { padding: 0 16px 24px;}.slogan { margin: 16px 0 0; max-width: 40rem;}.benches { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 16px 0;}.button { display: inline-block; margin-top: 12px; padding: 10px 18px; border-radius: 999px; background: #d1495b; color: #ffffff; font-weight: 700; text-decoration: none;}/* A coloured edge per bench and a tag with a hole: only for the look. */.bench { padding: 14px 16px 16px; border-top: 4px solid #f2a541; border-radius: 14px; background: #ffffff; box-shadow: 0 1px 2px rgb(42 38 34 / 0.08), 0 8px 18px -12px rgb(42 38 34 / 0.35);}.bench h2 { margin: 0 0 6px; font-size: 1.1rem;}.bench p { margin: 0; color: #5b544c;}.bike { border-top-color: #2a9d8f;}.electrics { border-top-color: #f2a541;}.sewing { border-top-color: #d1495b;}.computer { border-top-color: #5b6cae;}.tag { display: inline-block; margin-bottom: 8px; padding: 3px 10px 3px 16px; border-radius: 4px 999px 999px 4px; background: radial-gradient(circle at 7px 50%, #ffffff 0 2.5px, transparent 3px), #ffd166; color: #3d2c00; font-size: 0.75rem; font-weight: 700;}form { display: grid; gap: 6px; max-width: 28rem; margin: 16px 0;}label { margin-top: 8px; font-weight: 600;}input,select,textarea { padding: 8px 10px; border: 1px solid #b9b0a3; border-radius: 8px; background: #ffffff; color: #2a2622; font: inherit;}button { justify-self: start; margin-top: 12px; padding: 10px 18px; border: 0; border-radius: 999px; background: #1f4e5f; color: #ffffff; font: inherit; font-weight: 700;}footer { padding: 12px 16px; background: #1f4e5f; color: #ffffff;}Ready for more?
The full lesson has 5 exercises, from easy to challenging, with hints, points and a streak you can build.
Start the lesson