Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
HTML

HTML: Use ARIA Roles for Better Accessibility

- 24.07.26 - ErcanOPAK

♿ ARIA Roles = Better Accessibility

HTML is semantic. ARIA roles add more meaning. Screen readers understand, accessibility improves.

📝 ARIA Roles

<!-- Landmark Roles -->
<header role="banner"></header>
<nav role="navigation"></nav>
<main role="main"></main>
<aside role="complementary"></aside>
<footer role="contentinfo"></footer>

<!-- Widget Roles -->
<div role="button" tabindex="0">Click me</div>
<div role="checkbox" aria-checked="false">Check me</div>
<div role="slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
<div role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"></div>
<ul role="tablist">
    <li role="tab" aria-selected="true">Tab 1</li>
    <li role="tab" aria-selected="false">Tab 2</li>
</ul>

<!-- Content Roles -->
<img role="img" alt="Description" src="">
<article role="article"></article>
<section role="region" aria-label="Section title"></section>

<!-- Live Regions -->
<div role="status" aria-live="polite">Status message</div>
<div role="alert" aria-live="assertive">Alert message</div>
<div role="log" aria-live="polite">Log messages</div>

<!-- Dialog -->
<div role="dialog" aria-modal="true" aria-labelledby="dialog-title">
    <h2 id="dialog-title">Dialog Title</h2>
</div>

🎯 ARIA Attributes

<!-- aria-label -->
<button aria-label="Close dialog">×</button>
<nav aria-label="Main navigation"></nav>

<!-- aria-labelledby -->
<div role="dialog" aria-labelledby="dialog-title">
    <h2 id="dialog-title">Confirm Action</h2>
</div>

<!-- aria-describedby -->
<input aria-describedby="email-help">
<div id="email-help">We'll never share your email</div>

<!-- aria-hidden -->
<div aria-hidden="true">Hide from screen readers</div>

<!-- aria-expanded -->
<button aria-expanded="false">Expand</button>

<!-- aria-controls -->
<button aria-controls="dropdown-content">Toggle</button>

<!-- aria-disabled -->
<button aria-disabled="true">Disabled</button>

<!-- aria-invalid -->
<input aria-invalid="true">

<!-- aria-required -->
<input aria-required="true">

<!-- aria-hidden (decorative) -->
<img aria-hidden="true" alt="" src="">


- Use semantic HTML when possible
- Add ARIA roles for custom elements
- Test with screen readers
- Use aria-label for button icons
- Use aria-describedby for help text

💡 ARIA Tips

  • Use semantic HTML when possible
  • Add ARIA roles for custom elements
  • Test with screen readers
  • Use aria-label for button icons
  • Use aria-describedby for help text

“ARIA roles add meaning. Screen readers understand. Essential for accessibility.”

— Accessibility Specialist

Related posts:

HTML5: Fix a Textarea That Ignores maxlength When Text Is Pasted In

HTML: Use Download Attribute to Force File Download Instead of Opening

HTML: Use Spellcheck Attribute to Enable Browser Spell Check

Post Views: 3

Post navigation

CSS: Master Pseudo Elements (::before & ::after)
JavaScript: Use Strict Mode for Better Code

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (553)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com