
Nguyễn Hoàng Anh
Published November 9, 2025

Learn why accessibility (a11y) is essential for inclusive design and how to implement it with semantic HTML, color contrast, and keyboard navigation.
Digital accessibility (often shortened to "a11y") is the practice of designing and building websites, apps, and other digital tools so that they can be used by everyone — regardless of their abilities or disabilities.
When you design with accessibility in mind, you don't just make things better for people with disabilities. You improve the experience for everyone.
This idea is often called the curb-cut effect.
Curb cuts — the sloped ramps on sidewalks — were originally designed for wheelchair users. But who else uses them?
The same principle applies to digital design. Features like high-contrast text, clear labels, and video captions don't just help users with disabilities — they help anyone in challenging situations, like using a phone under bright sunlight or watching a video in a noisy café.
Accessibility isn't a final checklist item. It's a foundational part of the entire design and development process.
A truly accessible interface starts with semantic HTML — using the right elements for the right purpose.
Good semantics:
<nav>...</nav><main>...</main><article>...</article><button>Click me</button>Bad semantics:
<div class="button">Click me</div>Why does it matter?
Because a screen reader knows how to announce a <button> — it says:
"Click me, button."
But a <div> styled like a button? It's silent and invisible to assistive technology.
Semantic HTML is the foundation for accessibility. It gives meaning to content and allows tools like screen readers to interpret it correctly.
According to WCAG Level AA, text should have a minimum contrast ratio of 4.5:1 against its background. This ensures readability for users with low vision or color deficiencies.
Tools to check contrast:
Never use color as the only indicator of meaning.
❌ Example:
This field is required✅ Better: Add icons, text, or underline patterns to reinforce meaning.
Not everyone uses a mouse. Some rely on keyboard navigation — using the Tab, Shift+Tab, and Enter keys to explore and interact with your interface.
Test your site: 👉 Can you reach every link, button, and input field using only your keyboard?
outline: none; /* Hides the focus ring */This removes the visible focus indicator, which tells users where they are on the page — a major accessibility issue.
If you're using Tailwind CSS:
<button className="focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2"> Click me</button>This keeps your design clean while maintaining focus visibility.
Forms are one of the most common — and most overlooked — accessibility pain points. Here's how to make them better:
<label>A visible and properly linked <label> tells both sighted users and screen readers what an input field is for.
✅ Example:
<label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-1"> Email Address</label><input id="email" type="email" className="w-full px-3 py-2 border rounded-md focus:ring-2 focus:ring-blue-500"/>Without a <label>, a screen reader might just say "Edit text" — leaving the user unsure what the field does.
Errors should be specific and easy to understand — not just "Invalid input."
✅ Example:
<p id="email-error" className="mt-1 text-sm text-red-600 flex items-center gap-1"> <span className="text-xl">❌</span> Please enter a valid email (e.g., name@example.com)</p>Pair errors with icons or color plus descriptive text — don't rely on color alone.
Here are a few simple checks you can do today:
<div> for interactive roles.Accessibility is not a bonus feature. It's good design.
When we build accessible websites and apps, we make the web better for everyone — faster, clearer, and more usable in all situations.
Accessibility isn't about perfection; it's about progress. Every alt text, every focus ring, every semantic tag you add brings us closer to a web that everyone can enjoy.
✳️ Written by [Your Name]
#Accessibility #WebDesign #InclusiveDesign #a11y #Frontend