In HTML forms, the label element serves as an intuitive way to link a label to an input field. By wrapping an input field with a label or by using the for
attribute, you make sure that clicking on the label moves the focus to the corresponding input element. This seemingly simple feature is invaluable for accessibility, especially for those who use screen readers.
Let’s start with a sample form that uses the label
element for three different types of fields: text, radio, and checkbox.
<form>
<!-- Text Input -->
<label for="username">Username</label>
<input type="text" id="username" name="username">
<!-- Radio Input -->
<label for="subscribeYes">Subscribe to newsletter?</label>
<input type="radio" id="subscribeYes" name="subscribe" value="yes">
<!-- Checkbox Input -->
<label for="terms">I agree to terms and conditions</label>
<input type="checkbox" id="terms" name="terms">
</form>
The aria-label attribute provides an alternative to the label
element. It makes the form elements accessible without visually displaying a label on the screen. This can be handy when you want to maintain a streamlined UI without compromising accessibility.
Let’s rework the previous example using aria-label
.
<form>
<!-- Text Input -->
<input type="text" aria-label="Username" id="username" name="username">
<!-- Radio Input -->
<input type="radio" aria-label="Subscribe to newsletter?" id="subscribeYes" name="subscribe" value="yes">
<!-- Checkbox Input -->
<input type="checkbox" aria-label="I agree to terms and conditions" id="terms" name="terms">
</form>
label
tag and added aria-label="Username"
to the input field.label
for the radio button was replaced with aria-label="Subscribe to newsletter?"
.aria-label="I agree to terms and conditions"
.Both label
and aria-label
share the noble mission of enhancing web accessibility. However, when it comes to the form’s structural efficiency, aria-label
takes the cake. To get down to the nitty-gritty, let’s look at the line count of uncommented code: The initial example with label
fields consists of 9 lines of code, whereas the reworked example using aria-label
comprises just 6 lines. That’s a noticeable reduction, making the latter a more streamlined option.
That said, the prominence of a label
shouldn’t be undervalued. It not only fortifies accessibility but also elevates the user experience by creating a clickable area around the associated input field. In essence, aria-label
serves as a versatile alternative—efficient yet accessible. Use it judiciously to create web forms that are not just user-friendly but also design-efficient.