<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alena Nik</title>
    <description>The latest articles on DEV Community by Alena Nik (@alenanik).</description>
    <link>https://dev.to/alenanik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F135491%2F54c8854e-48fb-4e49-9379-526061ad7edc.jpg</url>
      <title>DEV Community: Alena Nik</title>
      <link>https://dev.to/alenanik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alenanik"/>
    <language>en</language>
    <item>
      <title>✨ Access the limitless power of AI (and accessibility) ✨</title>
      <dc:creator>Alena Nik</dc:creator>
      <pubDate>Fri, 28 Apr 2023 21:11:33 +0000</pubDate>
      <link>https://dev.to/alenanik/access-the-limitless-power-of-ai-and-accessibility-5g3d</link>
      <guid>https://dev.to/alenanik/access-the-limitless-power-of-ai-and-accessibility-5g3d</guid>
      <description>&lt;p&gt;&lt;em&gt;"When raising the accessibility topic, I often found some resistance because it was too difficult to accomplish, there were priorities, or because no one asked for it. In the end, no one wants to admit in a work environment that they don't even know how to start. And this affects me because we are a team, and we can learn together."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As developers, designers, and inclusive writers, we are responsible for the accessibility of our products. This means more than just using semantic HTML, DOM order, and accessibility plugins without impacting cost, timeline, and other teams. We are responsible for shipping accessible products, and doing it quickly.&lt;/p&gt;

&lt;p&gt;Accessibility means making sure that everyone, including people with disabilities, can use our products. AI (Artificial Intelligence) can help make things more accessible in many ways, such as using voice recognition, captioning and transcription, image and object recognition, predictive text, and personalized interfaces.&lt;/p&gt;

&lt;p&gt;However, it is important to note that AI can also perpetuate existing biases and discrimination, including those towards people with disabilities.&lt;/p&gt;

&lt;p&gt;Assuming that every company has knowledgeable people available to help with accessibility reviews is unrealistic. But can we apply basic accessibility knowledge to improve? The short answer is yes.&lt;/p&gt;

&lt;p&gt;As I write this, I feel that it may be outdated tomorrow, but accessibility principles will never be. These principles aim to eliminate barriers that might prevent people with disabilities from accessing digital content or using digital interfaces.&lt;/p&gt;

&lt;p&gt;As we know, AI has the potential to greatly improve accessibility for people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Voice recognition: AI-powered voice recognition technologies can help people with visual, motor, or cognitive disabilities to interact with computers, smartphones, and other devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Captioning and transcription: AI-powered speech recognition and natural language processing technologies can be used to automatically generate captions and transcripts for videos and other media, making them accessible to people who are deaf or hard of hearing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Image and object recognition: AI-powered image and object recognition technologies can help people with visual impairments to navigate their environment by describing images, recognizing objects, and identifying text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Predictive text and auto-correction: AI-powered predictive text and auto-correction technologies can help people with motor disabilities to type more quickly and accurately.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Accessibility principles
&lt;/h3&gt;

&lt;p&gt;Accessibility teams shouldn't become a bottleneck for the business, but they need to be prepared to spot issues faster than ever. A good way to evaluate the experiences we deliver is to evaluate them in the simplest way possible.&lt;/p&gt;

&lt;p&gt;The industry-standard guidelines for web content accessibility are organized around four principles: Perceivable, Operable, Understandable, and Robust. These are standards that will not change tomorrow or in a year.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understandable (AI-powered) 💫
&lt;/h3&gt;

&lt;p&gt;Information and the operation of the user interface must be understandable, i.e.:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text is readable and understandable.&lt;/li&gt;
&lt;li&gt;Content appears and operates in predictable ways.&lt;/li&gt;
&lt;li&gt;Users are helped to avoid and correct mistakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notion recently came up with an AI solution as promised on &lt;a href="https://www.notion.so/product/ai"&gt;Notion public website&lt;/a&gt;. Their solution offers summaries, writing improvements, corrections, and generates ideas for you. The advertised &lt;em&gt;"Like a one-click photo editor, but for your words"&lt;/em&gt; concerns me a little.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GDn1rjWp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.gyazo.com/6ec85fca9c65efe90700202d186edd84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GDn1rjWp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.gyazo.com/6ec85fca9c65efe90700202d186edd84.png" alt="Image of Notion landing page: Write better.&amp;lt;br&amp;gt;
Communicate with confidence.&amp;lt;br&amp;gt;
Improve writing&amp;lt;br&amp;gt;
Like a one-click photo editor, but for your words." width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For people with visual impairments, the reference to a "photo editor" may not be meaningful or relevant. Additionally, for people with cognitive or learning disabilities, the concept of a "one-click" tool may not be clear or easy to understand.&lt;/p&gt;

&lt;p&gt;I would consider rephrasing it in a more descriptive and straightforward manner. For example, "Our tool helps you easily edit and improve your written content, just like a photo editor can enhance your pictures with one click." This way, the functionality is still being explained, but in a more inclusive way that everyone can understand.&lt;/p&gt;

&lt;p&gt;Raycast AI also have the solution at &lt;a href="https://www.raycast.com/ai"&gt;Raycast website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Magic at your fingertips. Unlock the power of AI on your Mac. Write smarter, code faster, and answer questions quicker. Get more done in less time!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y19zjp79--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.gyazo.com/77c066a7585dbdbe64b334718d6f9f7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y19zjp79--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.gyazo.com/77c066a7585dbdbe64b334718d6f9f7c.png" alt="Landing page in dark tones - Magic at your fingertips&amp;lt;br&amp;gt;
Unlock the power of AI on your Mac. Write smarter, code faster, and answer questions quicker. Get more done in less time!" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Our AI-powered tool for Mac helps you write and code more efficiently, get quick answers to your questions, and save time"&lt;/em&gt; could work too. While it may be tempting to use metaphors or figurative language like "magic at your fingertips," we need to avoid making assumptions that AI is easy or magical. AI can be challenging for many people, and it's important to be clear and transparent about what users can expect from AI-powered tools.&lt;/p&gt;

&lt;p&gt;Another example are Chat-like "Ask me anything" windows. Xata recently launched AI-build in feature to build applications with ChatGPT embedded in the database. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OJpGyCic--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/69zz6630m0zv63jyewce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OJpGyCic--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/69zz6630m0zv63jyewce.png" alt="Ask any question about Xata modal window with suggestions" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's exciting amazing, but keeping in mind &lt;strong&gt;understandable&lt;/strong&gt; principle of "content appears and operates in predictable ways" we can make it better. What will happen and who am I asking?&lt;/p&gt;

&lt;p&gt;It's important to ensure that users understand what to expect when they interact with such features. One way to make it clear would be to provide prompts or suggestions on what type of questions users can ask or what information they can expect to receive from the AI.&lt;/p&gt;

&lt;p&gt;Additionally, it's important to provide clear instructions on how to use the feature and what to do if the user experiences any difficulties. Testing with users with a range of abilities can also help identify any potential accessibility issues with such features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Robust (AI-powered) 💫
&lt;/h3&gt;

&lt;p&gt;Content must be robust enough that it can be interpreted by a wide variety of user agents, including assistive technologies. Robust content is compatible with different browsers and&lt;br&gt;
assistive technologies.&lt;/p&gt;

&lt;p&gt;There are several types of assistive technologies that may not be compatible with AI text generation experiences like ChatGPT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hsaXJSZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yteqbu1pbsmb9kbnsljt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hsaXJSZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yteqbu1pbsmb9kbnsljt.png" alt='Examples&amp;lt;br&amp;gt;
"Explain quantum computing in simple terms"&amp;lt;br&amp;gt;
"Got any creative ideas for a 10 year old’s birthday?"&amp;lt;br&amp;gt;
"How do I make an HTTP request in Javascript?"&amp;lt;br&amp;gt;
Capabilities&amp;lt;br&amp;gt;
Remembers what user said earlier in the conversation&amp;lt;br&amp;gt;
Allows user to provide follow-up corrections&amp;lt;br&amp;gt;
Trained to decline inappropriate requests&amp;lt;br&amp;gt;
Limitations&amp;lt;br&amp;gt;
May occasionally generate incorrect information&amp;lt;br&amp;gt;
May occasionally produce harmful instructions or biased content&amp;lt;br&amp;gt;
Limited knowledge of world and events after 2021' width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Screen readers: people who are blind or have low vision may rely on screen readers to access digital content. However, screen readers may not be able to access the text generated by ChatGPT in real-time, as it is generated dynamically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Braille displays: people who are blind or have low vision may also use braille displays to read digital content. Braille displays may not be compatible with the text generated by ChatGPT, as it may not be possible to convert the text into braille in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speech recognition software: people with physical disabilities or those who have difficulty typing may use speech recognition software to interact with digital content. AI text generation experiences like ChatGPT may not be able to understand spoken input and generate text in response.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Switch access: people with physical disabilities may use switch access devices to interact with digital content. AI text generation experiences like ChatGPT may not be designed to accept input from switch access devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We need to consider these limitations and ensure that AI text generation experiences are as accessible as possible for people who rely on such technologies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operable (AI-powered) 💫
&lt;/h3&gt;

&lt;p&gt;User interface components and navigation must also be operable. This means that functionality must be available from a keyboard, users have enough time to read and use the content, and content does not cause seizures or physical reactions. Additionally, users should be able to easily navigate, find content, and determine where they are. Different input modalities beyond the keyboard should also be considered.&lt;/p&gt;

&lt;p&gt;I'm focusing on keyboard interaction and testing Notion AI solution with VoiceOVer. And had the following criteria handy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--llP6-8FX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/501g43lrbn7z4ycn8p5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--llP6-8FX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/501g43lrbn7z4ycn8p5r.png" alt='2.1 Keyboard Accessible 2.1.2 No Keyboard Trap Users can navigate between form elements using the tab or arrow keys,  then focus can be moved away from that component using only a keyboard 2.1.3 Keyboard No Exceptions Keyboard No Exception requires that all functionality is accessible by keyboard with no exceptions. Ensure there are no specific timings needed for keystrokes, for example holding down ‘Enter’ for three seconds to submit a form" 2.1.4 Characters Key Shortcuts User should be able to reconfigure or deactivate the shortcut, if used on a website 2.2 Enough Time 2.2.1 Timing Adjustable Timed refresh must not exist 2.2.2 Pause, Stop, Hide Remove all blink elements. &amp;lt;br&amp;gt;
Remove all marquee elements, even if they are empty." 2.2.3 No Timing   Ensure there’s no time-limited content on your website.' width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a sighted user using assistive technology, I wasn't able to understand that I've been in AI dialog at any moment. The focus was moved either to the image or empty input. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uRa1yxpD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ke2hz1mhkph3600mdirq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uRa1yxpD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ke2hz1mhkph3600mdirq.gif" alt="Experience with Voice Over and Notion AI dialog: you can test it on Notion website to see text generation" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In fact, I had really hard time to make this screenshot for you: the keyboard option to pause. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ltVBlSZu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nojjvfasbl3mzyp7w2bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ltVBlSZu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nojjvfasbl3mzyp7w2bi.png" alt="Stop AI generation with ESC key" width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2.2.1: &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/timing-adjustable"&gt;Timing Adjustable&lt;/a&gt; (Sufficient)&lt;/li&gt;
&lt;li&gt;2.2.2: &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide"&gt;Pause, Stop, Hide&lt;/a&gt; (Sufficient)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing with assistive technologies like VoiceOver or NVDA that we have handy can help ensure that the AI solution is keyboard accessible and adheres to the operable principles. It's important to consider the WCAG criteria to ensure that the AI solution is accessible to as many users as possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrap up
&lt;/h3&gt;

&lt;p&gt;Personally, I'm very excited about how AI has evolved in the last few weeks.&lt;/p&gt;

&lt;p&gt;I find it amazing that AI can assist people with cognitive disabilities such as dyslexia or ADHD by providing simplified language, summarising lengthy texts, and predicting and completing sentences to improve reading comprehension and writing. We can also implement these features when building or designing our own applications.&lt;/p&gt;

&lt;p&gt;Moreover, by following simple accessibility principles, developers and designers can ensure that users can navigate and use the website or application effectively.&lt;/p&gt;

&lt;p&gt;💫💫💫💫&lt;/p&gt;

&lt;p&gt;Stay with me on twitter 👇&lt;br&gt;
&lt;/p&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t3zVxVA7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/media/Fuo82tbWwAMNrpm.png" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--2YAWLKFw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/profile_images/1650489163538477058/Y2ncs_y2_normal.jpg" alt="Alena Nikolaeva profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Alena Nikolaeva
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @alenanik11
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kDgU_xDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      How many days until all* websites in the EU need to be accessible?: 794&lt;br&gt;&lt;br&gt;Friendly reminder available on: &lt;a href="https://t.co/SBgJzRcl4w"&gt;online-accessibility-countdown.eu/?lang=en&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/a11y"&gt;#a11y&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      12:19 PM - 26 Apr 2023
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1651199279782871042" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OXOJJiQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1651199279782871042" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--foTp-unf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1651199279782871042" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SFHqU4bF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
 

</description>
      <category>a11y</category>
      <category>ai</category>
      <category>inclusive</category>
    </item>
    <item>
      <title>Tell Me You Need Accessibility Without Telling Me</title>
      <dc:creator>Alena Nik</dc:creator>
      <pubDate>Tue, 23 Aug 2022 18:34:20 +0000</pubDate>
      <link>https://dev.to/alenanik/tell-me-you-need-accessibility-without-telling-me-3p28</link>
      <guid>https://dev.to/alenanik/tell-me-you-need-accessibility-without-telling-me-3p28</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This is not a post about accessibility. This is a true story.&lt;/p&gt;

&lt;p&gt;Hi, friend! &lt;/p&gt;

&lt;p&gt;You know I wrote an &lt;a href="https://dev.to/alenanik/inclusive-components-making-modals-accessible-1hn9"&gt;article&lt;/a&gt; almost a year ago, saying that "Building accessible websites shows that you care about disabled people.". I've had another thought on that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vim.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility on steroids
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;"How many people with disabilities use my website?"&lt;/em&gt; - it's a common question that you can often hear or ask. You are building a metasearch, database, or management tool. Hands down, we hear this question a lot. But is it actually an accurate question? &lt;/p&gt;

&lt;p&gt;Imagine that you, accessibility professional, just heard this question on a meeting. And your product is developer oriented and accessibility is not something that is prioritised. &lt;/p&gt;

&lt;p&gt;Usually the conversation goes on, and on and you try to explain that it's not about our "target user" and it's not about a percentage of visually impaired users, and it's not about getting an accessibility overlay and we are done, and it's certainly not about just screen readers vs user agents.&lt;/p&gt;

&lt;p&gt;I bet it sounds familiar. &lt;/p&gt;

&lt;p&gt;Later you try to do your best to update internal policies to be more inclusive, you create documents on Notion and introduce bullet-proof practices (linters, testing, accessibility specs), try to get investment, conduct workshops and audit the product. And you, more certainly, succeed. After many conversations, many PR's, many Slack conversations "a tab is actually a checkbox?", removing modals, tooltips and disabled buttons and after many user testing sessions you get to something solid.&lt;/p&gt;

&lt;p&gt;This is one scenario.&lt;/p&gt;

&lt;p&gt;But let's get back to the initial question raised on a meeting: &lt;em&gt;"How many people with disabilities use my website?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine if we pause here, and we don't gather the data about assistive technologies, we don't talk about temporal or permanent disability, and we don't talk about disability at all (at the moment). &lt;/p&gt;

&lt;h2&gt;
  
  
  Developer or User Experience
&lt;/h2&gt;

&lt;p&gt;Imagine you are building a product for the user who prefers not to use the mouse. And hasn't been using one for some years. Why? Because, &lt;em&gt;why not&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;The question is now: &lt;em&gt;"How many people use my website?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine you are building a technical, developer (or rather backend developer) oriented product. All of your efforts are on getting the best DX ever and no one yet raised a concert about accessibility, but then you realise that your "target" user may not have any disability at all. They just can't use the product and don't know why exactly. More over, the word accessibility or screen reader is not even in their heads, and they don't use typical accessibility short-cuts that we try so hard to support.&lt;/p&gt;

&lt;p&gt;I'm talking about that user that you truly want as a long-term user and they will just silently drop and search for some similar product that has focus ring just because they navigate with the Tab key or Vim extension, like this one: &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/tridactyl-vim"&gt;Trydactyl: Vim, but in your browser extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They don't like User Interfaces, they don't have JS enabled, they don't have complains, they just can't use developer oriented product thinking that something is not ok with their habits. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's not about making people adhere to the system, it's about making the system adhere to the habits of people."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone who likes plain old websites when the navigation was easy, we didn't have to wait for the site to load, we didn't have fancy smooth scroll. I can tell you more, these users can have JS disabled by default. &lt;/p&gt;

&lt;p&gt;All they need is a focus outline and keyboard navigation to be perfect. They, most likely, don't know how to use screen reader and, actually, don't have to learn. Their choice is not to use the mouse. And this is your target user: a person who buys a car only with the keyboard, a person who shops for books, a person who buys flight tickets. How many people are not using a mouse just because they don't want to? &lt;/p&gt;

&lt;p&gt;If your website does not have a good enough support for keyboard, which happens to be an accessibility requirement just like many others UX patterns, you would lose the users, and they would never complain. &lt;/p&gt;

&lt;h2&gt;
  
  
  Thinking out loud
&lt;/h2&gt;

&lt;p&gt;"Can you tell me, what do you do if the website does not show you the focus outline?"&lt;/p&gt;

&lt;p&gt;"Well, I just hit the Tab key until I find it, and then I quit. I go to another one. It's ok." &lt;/p&gt;

&lt;p&gt;"Hey, and what about sites with animations and smooth scroll? You know, they are quite trendy."&lt;/p&gt;

&lt;p&gt;"They are pretty, but you know... 8 years ago Why they keep making these?" &lt;/p&gt;

&lt;p&gt;"I can never do grad and drop. Can you move my Trello card?" &lt;/p&gt;

&lt;p&gt;"I used to use my keyboard to navigate websites more in the earlier days of the web."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apxVTEYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i1el2b0euaql29tucasn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apxVTEYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i1el2b0euaql29tucasn.gif" alt="Drag and drop cards on the UI" width="661" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are tons of websites out there that would make their life easier, not harder, while offering something similar.&lt;/p&gt;

&lt;p&gt;If we don't know where our product is going to end up, if it's 3G connection, if it's an old device, if it's not a mobile and not a desktop but something weird, and we implement defensive CSS by default, care about performance, and layout shifts without questioning. Then why do we question sometimes if the accessibility is needed if we don't know where our product is going to end up?&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus on the essentials
&lt;/h2&gt;

&lt;p&gt;So going back to the question on "how many people use my website?" and should you bring up the conversation about accessibility to the table?&lt;/p&gt;

&lt;p&gt;Yes, and you would still need to do your best as an accessibility designer or engineer to get the product to the state where every user benefits from implemented accessibility features, but the conversation about whether your target user needs accessibility is much shorter.&lt;/p&gt;

&lt;p&gt;We set high standards for accessibility and, personally, I don't think we should treat it as an extra work for advocacy groups, experts or something like a rabbit hole.&lt;/p&gt;

&lt;p&gt;Can we possibly make it simple so our team is not stuck with reading specs all over again, feeling guilty about not passing audits or fail on "simple" things?&lt;/p&gt;

&lt;p&gt;Full keyboard access, site consistency, be careful with huge sliders, parallax to name a few. These are users frustrations, all users frustrations.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fRhI7omR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/profile_images/477441054895919104/OB69-tiw_normal.jpeg" alt="Adrian Roselli 🗯 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adrian Roselli 🗯
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/aardrian"&gt;@aardrian&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kDgU_xDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Weird how many of these map to WCAG Success Criteria.&lt;br&gt;&lt;a href="https://t.co/lLieQdPd9l"&gt;twitter.com/vitalyf/status…&lt;/a&gt;&lt;br&gt;&lt;br&gt;It is almost like you can improve usability by following the most baseline of accessibility standards.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      13:04 PM - 20 Aug 2022
    &lt;/div&gt;

      &lt;div class="ltag__twitter-tweet__quote"&gt;
        &lt;div class="ltag__twitter-tweet__quote__header"&gt;
          &lt;span class="ltag__twitter-tweet__quote__header__name"&gt;
            Vitaly Friedman 🇺🇦🏳️‍🌈
          &lt;/span&gt;
          @vitalyf
        &lt;/div&gt;
        🧵User frustrations in 2022. Just a few frustrating design patterns that we should be avoiding when designing today:

– Tiny scrollable panes.
– Tiny click targets.
– Unexpected content shifts.
– Mega-menus opening on hover.
– Country selector dropdown.
– Generic error messages. https://t.co/8IchNWQ9Xu
      &lt;/div&gt;

    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1560976172338610177" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OXOJJiQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1560976172338610177" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--foTp-unf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1560976172338610177" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SFHqU4bF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
 

&lt;h2&gt;
  
  
  Tell me more
&lt;/h2&gt;

&lt;p&gt;One of the ways I found to simplify the conversation about accessibility is (not bringing it up as a separate conversation) but to break it down to simple down to earth examples: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keyboard support and focus visible&lt;/strong&gt; &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/focus-visible"&gt;https://www.w3.org/WAI/WCAG21/Understanding/focus-visible&lt;/a&gt; &lt;br&gt;
Any people who like Vim in team? For sure!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Color contrast&lt;/strong&gt; &lt;a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html"&gt;https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html&lt;/a&gt; &lt;br&gt;
Someone can't tell the difference between blue and turquoise? Yes, and it's a perfect use-case&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Meaningful sequence&lt;/strong&gt; &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/meaningful-sequence.html"&gt;https://www.w3.org/WAI/WCAG21/Understanding/meaningful-sequence.html&lt;/a&gt; &lt;br&gt;
You don't like your JS to be enabled, I get it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reflow&lt;/strong&gt; &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/reflow.html"&gt;https://www.w3.org/WAI/WCAG21/Understanding/reflow.html&lt;/a&gt; &lt;br&gt;
In case you use the website on your fridge's display or a modern toaster&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I found it very beneficial to look for these examples in order to build trust and not to overwhelm people in my team with getting JAWS license, build match-media hook or ask for them to incorporate Cypress A11y checks into the CI ASAP. &lt;/p&gt;

&lt;p&gt;Build up from something basic up to talking about motor difficulties, a special mouse, speech recognition software or on-screen keyboard emulator.&lt;/p&gt;

&lt;p&gt;We can start by translating specs: "This Success Criterion helps anyone who relies on the keyboard to operate the page, by letting them visually determine the component on which keyboard operations will interact at any point in time" to a simple language instead of copy-pasting European Accessibility Act to our Notion page and silently fix the violations on your own. &lt;/p&gt;

&lt;p&gt;Make it a conversation about humans, humans that are in your team up until the point where the empathy and trust will grow to cover a variety of background, abilities and interests. &lt;/p&gt;

&lt;h2&gt;
  
  
  We never know what's normal
&lt;/h2&gt;

&lt;p&gt;The takeaway that I'd like you to get is that there are many ways to plan accessibility strategy for a project, and many ways to bring it up to your team. But the reality is that real world needs are going &lt;em&gt;beyond&lt;/em&gt; screen readers announcements and meeting accessibility criteria. Some users &lt;strong&gt;don't know&lt;/strong&gt; they need accessibility, some users know they do. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Maybe&lt;/em&gt;, it's not a question about diversity and accessibility, it's not a question about "How many people with disabilities use my website?" or "This target audience is not that big, right?", it's not even a question. It's about making web better by default: taking care about our markup more than we care about selecting the best possible animation framework. &lt;/p&gt;

&lt;p&gt;The experience that I got from my &lt;a href="https://dev.to/alenanik/inclusive-components-making-modals-accessible-1hn9"&gt;article from last year&lt;/a&gt; where I said that "what we can do is make sure that all of our users can have similar experiences" I still stand by this idea, but today I'm not looking for % of visually impaired users who rely on a screen reader to explain it to stakeholders. &lt;/p&gt;

&lt;p&gt;I'm thinking about a backend developer who doesn't like the mouse. Then it's not about looking for a why making something accessible. Because, &lt;em&gt;why not&lt;/em&gt;? &lt;/p&gt;

&lt;p&gt;If you like this article, please, share it with your team and reach out to me on &lt;a href="https://twitter.com/alenanik11"&gt;Twitter&lt;/a&gt;, whether you liked it or have suggestions 💚&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s---pmG69ts--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/profile_images/1546036829199208449/cYcJy7CY_normal.jpg" alt="Alena Nikolaeva 🦋 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Alena Nikolaeva 🦋
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @alenanik11
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kDgU_xDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Accessible markup patterns and components 🧱 🔗&lt;br&gt;aria-modal-dialog documentation is just lovely! Saving it for learning &lt;br&gt;&lt;a href="https://t.co/HVzKbqIzhG"&gt;github.com/scottaohara/ac…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:01 PM - 07 Aug 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1556339653887893507" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OXOJJiQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1556339653887893507" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--foTp-unf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1556339653887893507" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SFHqU4bF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
 

</description>
      <category>ux</category>
      <category>a11y</category>
      <category>inclusive</category>
      <category>design</category>
    </item>
    <item>
      <title>✨ Accessibility: a gentle introduction ✨</title>
      <dc:creator>Alena Nik</dc:creator>
      <pubDate>Thu, 07 Oct 2021 20:32:33 +0000</pubDate>
      <link>https://dev.to/alenanik/accessibility-a-gentle-introduction-1398</link>
      <guid>https://dev.to/alenanik/accessibility-a-gentle-introduction-1398</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Many times, I've tried to find a comprehensive, yet, not too detailed technical first-temps guide to accessibility for the team. So I decided to put together this one. For anyone who would want to step outside their daily coding tasks for a breath of fresh a11y air. &lt;br&gt;
This article might be helpful for answer some common questions, leaving coding aside, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who is responsible for accessibility?&lt;/li&gt;
&lt;li&gt;Who defines web accessibility?&lt;/li&gt;
&lt;li&gt;Common principles&lt;/li&gt;
&lt;li&gt;Legislation &lt;/li&gt;
&lt;li&gt;First steps&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  The definition
&lt;/h1&gt;

&lt;p&gt;At the most basic level, accessibility &lt;strong&gt;ensures that everyone, regardless of ability or disability, can access your website or application.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The definition is more nuanced than that, though. The Web is fundamentally designed &lt;code&gt;to work for all people&lt;/code&gt;. However, poorly designed and inaccessible applications lead to broad-scale exclusion. &lt;/p&gt;

&lt;h2&gt;
  
  
  Who defines web accessibility?
&lt;/h2&gt;

&lt;p&gt;👉 World Wide Web Consortium (W3C) - &lt;a href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noopener noreferrer"&gt;Web Content Accessibility Guidelines (WCAG)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 It’s important to note that the WCAG standards themselves are guidelines, not law. The W3C itself evaluates organisations based on these standards but doesn’t have the authority to enforce them. &lt;/p&gt;

&lt;p&gt;The Web Content Accessibility Guidelines (WCAG) 2.1 is a comprehensive standard for web accessibility. It is also currently the basis for legislation on web accessibility in many parts of the world. In Europe, the guidelines are referenced in the standard EN 301 549 Accessibility requirements for ICT products and services, which is the basis for EU legislation on web accessibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is responsible for accessibility within the team?
&lt;/h2&gt;

&lt;p&gt;To keep the commitment active, and most importantly, to translate it into action, all team members need to know how they should contribute in their own specific role. This is not limited to the roles working directly in web production, such as design, development, authoring, engineering, and testing practices. &lt;/p&gt;

&lt;p&gt;Having said that accessibility is a team afford, it should be integrated into design process and product definition, from the start. Developers has to do out best to advocate for it and know the tools, but, luckily they are not on their own.&lt;/p&gt;

&lt;p&gt;👉 Accessibility responsibility by roles:&lt;br&gt;
&lt;a href="https://www.w3.org/community/wai-engage/wiki/Accessibility_Responsibility_Breakdown" rel="noopener noreferrer"&gt;Accessibility Responsibility Breakdown&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility principles
&lt;/h3&gt;

&lt;p&gt;👩🏻‍🚀 The industry-standard guidelines for web content accessibility are organised around four principles: &lt;code&gt;Perceivable&lt;/code&gt;, &lt;code&gt;Operable&lt;/code&gt;, &lt;code&gt;Understandable&lt;/code&gt;, and &lt;code&gt;Robust&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P&lt;/strong&gt;&lt;br&gt;
Information and user interface components must be presentable to users in ways they can perceive.&lt;br&gt;
💡 Does your website work for people with low vision? Or in a grayscale mode?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O&lt;/strong&gt;&lt;br&gt;
User interface components and navigation must be operable.&lt;br&gt;
💡 Functionality is available from a keyboard? Users can use different input modalities beyond the keyboard?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;U&lt;/strong&gt; &lt;br&gt;
Information and the operation of the user interface must be understandable.&lt;br&gt;
💡 Text is readable and understandable? Users are helped to avoid and correct mistakes?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;br&gt;
Content must be robust enough that it can be interpreted by a wide variety of user agents, including assistive technologies. 💡&lt;code&gt;Robust&lt;/code&gt; content is compatible with different browsers and&lt;br&gt;
assistive technologies.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The guidelines include three levels of success criteria to be met when testing. These levels are denoted with A, AA, and AAA, with AAA being the highest level of conformance and A being the lowest, while still conforming.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🧑‍⚖️ Legislation (Europe)
&lt;/h3&gt;

&lt;p&gt;Within the EU, the enforcement of the &lt;strong&gt;Web Accessibility Directive&lt;/strong&gt; is currently the foremost factor driving demand for web accessibility knowledge and services in the public sector. With the upcoming European Accessibility Act, there will also be new legal imperatives on the private sector within the next few years.&lt;/p&gt;

&lt;p&gt;The enforcement of the Web Accessibility Directive is based on monitoring, self-declaration, and the possibility for end-users to complain. If the organisation covered by the directive doesn’t fulfil its obligation, it can be fined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;European Accessibility Act&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The European Accessibility Act (Directive (EU) 2019/882), is a directive that will enter into force in the member states by 2022. The act covers the private sector and focus on certain accessible products and services that have been identified as being most important for persons with disabilities.&lt;/p&gt;

&lt;p&gt;European Union (2019). European Accessibility Act. Directive (EU) 2019/882 of the European Parliament and of the Council of 17 April 2019 on the accessibility requirements for products and services. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.L_.2019.151.01.0070.01.ENG&amp;amp;toc=OJ:L:2019:151:TOC" rel="noopener noreferrer"&gt;EUR-Lex - 32019L0882 - EN - EUR-Lex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The European standard for ICT accessibility: EN301549&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The European standard “EN301549 v.2.1.2 Accessibility requirements for ICT products and services” acts as the presumed conformance to the minimum requirements of the Web Accessibility Directive.&lt;/p&gt;

&lt;p&gt;Annex B covers the relationship between the functional performance statements and the technical requirements, and can be used to support the reader in understanding what&lt;br&gt;
noncompliance may mean to different user groups.&lt;/p&gt;

&lt;p&gt;When it comes to the technical requirements for web accessibility, the EN301549 is&lt;br&gt;
referring to the international standard &lt;strong&gt;WCAG 2.1 AA.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a wide &lt;strong&gt;range of disabilities&lt;/strong&gt;, but accessibility aims to make sure that people can use the web no matter their abilities. It is important to consider and design for different types of use cases, as listed in the EN301549.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usage without vision&lt;/li&gt;
&lt;li&gt;Usage with limited vision&lt;/li&gt;
&lt;li&gt;Usage without perception of color&lt;/li&gt;
&lt;li&gt;Usage without hearing&lt;/li&gt;
&lt;li&gt;Usage with limited hearing&lt;/li&gt;
&lt;li&gt;Usage without the vocal capability&lt;/li&gt;
&lt;li&gt;Usage without manipulation or strength&lt;/li&gt;
&lt;li&gt;Usage with limited reach&lt;/li&gt;
&lt;li&gt;Minimise photosensitive seizure triggers&lt;/li&gt;
&lt;li&gt;Usage with limited cognition&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Very first steps as a developer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Status of your project&lt;/strong&gt; 🥽&lt;br&gt;
The very first recommendation you can investigate and try is to integrate a simple audit tool, such as &lt;a href="https://github.com/dequelabs/agnostic-axe" rel="noopener noreferrer"&gt;axe&lt;/a&gt; for the DOM for potential accessibility issues, just to see where you are and how you feel. Manual testing can be hard at first, as you don't know what are you testing. It's an integration in the development environment and should be pretty straightforward, it gives helpful hints in the console while developing features.&lt;/p&gt;

&lt;p&gt;If you’re setting up automated tests (and you probably should), you can even &lt;a href="https://github.com/component-driven/cypress-axe" rel="noopener noreferrer"&gt;integrate axe with Cypress&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👩🏻‍🚀 There is only so much that can be automated. Auditing the HTML and CSS for potential pitfalls is a good place to start, but ultimately it is not going to replace some careful manual testing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Grab some checklists&lt;/strong&gt; ✅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WCAG 2.1 quickref checklist&lt;/strong&gt; 👉 &lt;a href="http://www.w3.org/WAI/WCAG21/quickref/" rel="noopener noreferrer"&gt;http://www.w3.org/WAI/WCAG21/quickref/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deque Web Accessibility Checklist for Developers&lt;/strong&gt; 👉&lt;a href="https://dequeuniversity.com/checklists/web/" rel="noopener noreferrer"&gt;https://dequeuniversity.com/checklists/web&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deque Web Accessibility Checklist PDF for Developers 👉&lt;/strong&gt; &lt;a href="https://media.dequeuniversity.com/public/en/docs/deque_web_accessibility_checklist.pdf" rel="noopener noreferrer"&gt;https://media.dequeuniversity.com/public/en/docs/deque_web_accessibility_checklist.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deque Basic Web Accessibility Checklist for Designers 👉&lt;/strong&gt; &lt;a href="https://dequeuniversity.com/assets/pdf/module-design/dq-designers-checklist.pdf" rel="noopener noreferrer"&gt;https://dequeuniversity.com/assets/pdf/module-design/dq-designers-checklist.pdf&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrapping up
&lt;/h3&gt;

&lt;p&gt;Remember that this introduction is the starting point for an accessible design and web, not the endpoint.&lt;/p&gt;

&lt;p&gt;Knowing the tools and being able to explain the importance of the work we do clearly makes a difference and if you just come to a11y community, I hope you stay 🙃&lt;/p&gt;

&lt;p&gt;If you like this article and the information that I have put together, please, share it with your colleague and reach out to me on Twitter, whether you liked it or have suggestions 💚&lt;/p&gt;

&lt;p&gt;Stay with me on twitter 👇&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1351611328188862465-31" src="https://platform.twitter.com/embed/Tweet.html?id=1351611328188862465"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1351611328188862465-31');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1351611328188862465&amp;amp;theme=dark"
  }



 &lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>inclusive</category>
    </item>
    <item>
      <title>✨ Inclusive components #2: the importance of headings</title>
      <dc:creator>Alena Nik</dc:creator>
      <pubDate>Wed, 10 Mar 2021 19:54:56 +0000</pubDate>
      <link>https://dev.to/alenanik/inclusive-components-2-the-importance-of-headings-1h19</link>
      <guid>https://dev.to/alenanik/inclusive-components-2-the-importance-of-headings-1h19</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Heading elements (&lt;code&gt;h1&lt;/code&gt;, &lt;code&gt;h2&lt;/code&gt;, &lt;code&gt;h3&lt;/code&gt;, etc.) help to break up the content of the page into related “chunks” of information. They are incredibly important for people who use assistive technology. If headings and HTML landmarks are used correctly, the user understands the meaning of a page or view and has a better experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick example
&lt;/h2&gt;

&lt;p&gt;To illustrate the point, I want to show two examples:&lt;br&gt;
Imagine that we have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💡 A simple website, where visually we can distinguish the "blocks" of content, with headings, images and we clearly see the overall hierarchy. 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F9nxX7KR%2FScreenshot-2021-03-10-at-18-16-11.png" alt="a simple website of the page has 3 cards with images, logo, and headings, looking like posts"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We don't know yet whether the code behind it actually using &lt;code&gt;h1&lt;/code&gt;, &lt;code&gt;h2&lt;/code&gt; and so on, but visually it's clear where the titles are and what is in front of us. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is the same website with no heading structure and no hierarchy. For the users with assistive technology, it creates overall confusion since there is no way to know where to navigate.
This is how it looks for the users that use a screen reader. 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FmGFChLt%2FScreenshot-2021-03-10-at-18-15-57.png" alt="a simple website of the page has 3 cards with images, logo, and headings, looking like posts and screen reader window"&gt;
&lt;/li&gt;
&lt;li&gt;And here is how the website looks for them, when we - developers - code the correct document structure and respect heading order.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F7JwN6dD%2FScreenshot-2021-03-10-at-18-18-27.png" alt="a simple website of the page has 3 cards with images, logo, and headings, looking like posts and screen reader window"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the way, I'm taking the images example from A11ycasts#18 video with Rob Dondson, that I highly recommend watching 👉 &lt;a href="https://www.youtube.com/watch?v=vAAzdi1xuUY&amp;amp;ab_channel=GoogleChromeDevelopers" rel="noopener noreferrer"&gt;A11ycasts episode on Youtube&lt;/a&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  "But I want to do it the right way. Where can I start?" 👩🏼‍💻
&lt;/h2&gt;

&lt;p&gt;First, understand that users who use the keyboard and screen reader must be able to skip the content, navigate the web and get an equally good experience from the start. &lt;/p&gt;

&lt;p&gt;Secondly, let's answer some of the questions with accessibility in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does your website makes sense if you view it after having turned off JS/CSS?&lt;/li&gt;
&lt;li&gt;DOM order matches the visual order?&lt;/li&gt;
&lt;li&gt;Can you navigate with the normal flow?&lt;/li&gt;
&lt;li&gt;Do users have the ability to jump to any section of the document and get to the information quickly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you may know, screen reader users use heading to navigate through the page.&lt;/p&gt;

&lt;p&gt;✨VoiceOver Keyboard Shortcuts✨&lt;/p&gt;

&lt;p&gt;&lt;code&gt;VO+H(Control+Option+H) to navigate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Control + Option + U to open rotor&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Can you see how users can immediately benefit from the correct HTML tag and order?&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FYfhXJvr%2FScreenshot-2021-03-10-at-19-50-56.png%2520%3D250x" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FYfhXJvr%2FScreenshot-2021-03-10-at-19-50-56.png%2520%3D250x" alt="Screenshot from Lindsey a11ywithlindsey.com with heading and the window of the screen "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider the example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Title of the Page&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Here's a little bit of information before we get started&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt; 
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Hey you, heading 2&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Here's a little bit of info about the second heading&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt; 
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Here's another heading for testing purposes&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Here's a little bit of info about the second heading&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  WCAG failures:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Heading-like text that isn’t marked up as headings (Level A)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;❌
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Introduction&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"subtitle"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Looks like a subtitle&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Illogical heading order (&lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; is not followed directly by an &lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt;) (Level A)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;❌
&lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Bacon and mushroom risotto&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;To cook a perfect risotto, it is essential to […] &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Instructions&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;

❌
&lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card-subheading"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Subheading&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h4&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card-heading"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Heading&lt;span class="nt"&gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Nondescriptive headings (Level AA)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Recipe&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;To cook a perfect risotto, it is essential to […] &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Recipe&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;A coq au vin is a classic French stew in which […] &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Bad scenarios 🤨:
&lt;/h3&gt;

&lt;p&gt;Not every issue counts as a WCAG failure, but they all potentially cause some confusion and pose potential barriers for people with disabilities. Such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lack of headings (unless you’re striving for Level AAA)&lt;/li&gt;
&lt;li&gt;Missing &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;More than one &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; per page&lt;/li&gt;
&lt;li&gt;Do not select heading levels based on their appearance (font-size). Select the appropriate heading rank in your hierarchy.&lt;/li&gt;
&lt;li&gt;Using headings that don’t appropriately describe their related content does represent a failure of 2.4.6 Headings and Labels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Headings should not be used as subheadings, subtitles, alternative titles, taglines, or slogans. In such cases, it is best to use a &lt;p&gt; tag.&lt;/p&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Best practices (common sense)✅:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Headings are ranked &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; through &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;.

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; representing the most important idea on the page&lt;/li&gt;
&lt;li&gt;sub-sections organized with &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; level headings. Those sub-sections can themselves be divided with &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt; level headings, and so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Heading levels should increase by one h1 &amp;gt; h2 &amp;gt; h3 &amp;gt; h4 &amp;gt; h5 &amp;gt; h6
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;❌
&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Some text that's not a heading, but we want "bigger" text&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;

✅
&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Chapter1&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Some subsection&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt; 
&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Chapter2&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Some subsection&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;h1&gt;
&lt;/h1&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The beginning of the main content should start with &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;logo - navigation&lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Home page&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Most web pages should have only one &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; representing the most important idea on the page. At the same time, hero &lt;code&gt;h1&lt;/code&gt; does not &lt;strong&gt;necessarily&lt;/strong&gt; represent the page, but it's just a slogan. 
#### What if the design doesn't have a heading?
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2F9nxX7KR%2FScreenshot-2021-03-10-at-18-16-11.png" alt="a simple website of the page has 3 cards with images, logo and headings, looking like posts"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or it's not always can be present, but the page still should have the &lt;code&gt;h1&lt;/code&gt; heading to give the user context.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;logo - navigation&lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sr-only"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Showcase page or another heading name&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Specs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. &lt;strong&gt;(Level A)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Screen readers allow users to navigate by headings, so headings are an effective way to bypass blocks of content, as required by WCAG 2.4.1 &lt;strong&gt;(Level A)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Headings MUST be accurate and informative, as labels for the sections of text they describe. &lt;strong&gt;(Level AA)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Section headings are used to organize the content. &lt;strong&gt;(Level AAA)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Alternatives
&lt;/h3&gt;

&lt;p&gt;If a scenario arises where you can’t make changes to existing elements’ hierarchy, there is an alternative method that you can use to provide semantics: using Accessible Rich Internet Applications (&lt;strong&gt;ARIA&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;role="heading"&lt;/code&gt; can be placed on an element to assign it a role of heading.&lt;code&gt;aria-level&lt;/code&gt; needs to be placed on the same element as &lt;code&gt;role="heading"&lt;/code&gt; to assign the element’s heading level.&lt;/p&gt;
&lt;h3&gt;
  
  
  HTML5 outline
&lt;/h3&gt;

&lt;p&gt;Sadly, heading algorithm &lt;strong&gt;was never really picked up by any browser or screen reader&lt;/strong&gt;, and the HTML 5.2 draft advises against using it any further.&lt;/p&gt;
&lt;h3&gt;
  
  
  Real-world example
&lt;/h3&gt;

&lt;p&gt;Here is a snippet from React library (linked in resources below) that implemented accessible &lt;code&gt;&amp;lt;Heading/&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;Section/&amp;gt;&lt;/code&gt; components.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Section&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="na"&gt;aria-labelledby&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;labelId&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;hidden&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ric-hidden&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;rest&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Heading&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;labelId&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`h&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;level&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;noHeading&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ric-hidden&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Heading&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Heading&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Heading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;rest&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Element&lt;/span&gt;
      &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;hidden&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`ric-hidden &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;rest&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Resources 📂
&lt;/h2&gt;
&lt;h3&gt;
  
  
  A collection of inclusive components for React created with styled-components worth your attention if you want to quickly improve #a11y of the app 👩🏼‍💻
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pbilyk" rel="noopener noreferrer"&gt;
        pbilyk
      &lt;/a&gt; / &lt;a href="https://github.com/pbilyk/react-inclusive-components" rel="noopener noreferrer"&gt;
        react-inclusive-components
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Inclusive components for React, created with styled-components. Based on Heydon Pickering's book, Inclusive Components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;react-inclusive-components&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Inclusive components for React. Based on Heydon
Pickering's book, &lt;strong&gt;Inclusive Components&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The library does not include React, it's just a collection of components to make the development of accessible apps easeir.&lt;/p&gt;
&lt;p&gt;It has a minimum stylings that ensures that these elements are behaving properly and avoid different pitfalls (e.g. hiding an element from user but still making it accessible by the screen reader).&lt;/p&gt;
&lt;p&gt;These components are not stateful and as abstract as possible to not interfere with any development that you are doing.&lt;/p&gt;
&lt;p&gt;You can submit issues or Pull Requests at the &lt;a href="https://github.com/pbilyk/react-inclusive-components" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Usage&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Button&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Accessible button component. Can be of several types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;submit&lt;/strong&gt; — Regular form submit button&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;button&lt;/strong&gt; — Regular button that can handle various events&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;toggle&lt;/strong&gt; — A toggle button for handling the 'on/off' state of various
interface elements. Automatically adds &lt;code&gt;aria-pressed&lt;/code&gt; attribute with the
passed values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;toggle-dynamic&lt;/strong&gt; — A toggle button…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pbilyk/react-inclusive-components" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  "Quick Reference" that I use a lot:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/WAI/WCAG21/quickref/?versions=2.0" rel="noopener noreferrer"&gt;A customizable quick reference to Web Content Accessibility Guidelines (WCAG) 2 requirements&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  WCAG criteria
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/WCAG21/#info-and-relationships" rel="noopener noreferrer"&gt;1.3.1 Info and Relationships&lt;/a&gt;: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. (Level A)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/WCAG21/#headings-and-labels" rel="noopener noreferrer"&gt;2.4.6 Headings and Labels&lt;/a&gt;: Headings and labels describe topic or purpose. (Level AA)&lt;/p&gt;

&lt;p&gt;WCAG 2.1 through Level AA doesn’t require subheadings. Level AAA takes it up a level&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/WCAG21/#section-headings" rel="noopener noreferrer"&gt;2.4.10 Section Headings&lt;/a&gt;: Section headings are used to organize the content. (Level AAA)&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 💡
&lt;/h2&gt;

&lt;p&gt;Guess how many heading I used in order to structure this post? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FZXS1TCS%2FScreenshot-2021-03-10-at-20-20-57.png%2520%3D250x" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FZXS1TCS%2FScreenshot-2021-03-10-at-20-20-57.png%2520%3D250x" alt="Markdown rules about heading usage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I kept getting back and forth in between "code" and preview in order to make my markdown match the visual structure. Can we do the same with our webs?&lt;/p&gt;

&lt;p&gt;Remember: &lt;br&gt;
✨&lt;strong&gt;The more you do it, the less of the effort it takes&lt;/strong&gt;✨&lt;/p&gt;

&lt;p&gt;If you like this article and the information that I have put together for you this time, please, share it with your colleague and reach out to me on Twitter, whether you liked it or have suggestions 💚&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1363457207241740288-850" src="https://platform.twitter.com/embed/Tweet.html?id=1363457207241740288"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1363457207241740288-850');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1363457207241740288&amp;amp;theme=dark"
  }



 &lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>inclusive</category>
    </item>
    <item>
      <title>✨ Inclusive components: making modals accessible 🧑‍🦯</title>
      <dc:creator>Alena Nik</dc:creator>
      <pubDate>Tue, 19 Jan 2021 19:18:30 +0000</pubDate>
      <link>https://dev.to/alenanik/inclusive-components-making-modals-accessible-1hn9</link>
      <guid>https://dev.to/alenanik/inclusive-components-making-modals-accessible-1hn9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;In order for us to help create a more accessible, equal society for everyone, change needs to happen. But for those changes to happen, we need to have conversations.&lt;br&gt;
&lt;a href="https://twitter.com/lifeofablindgrl" rel="noopener noreferrer"&gt;Holly - Award-winning disability blogger and writer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;As Holly is saying, 2021 seems like a good year to start having a conversation about accessibility, if you haven't started yet.&lt;/p&gt;

&lt;p&gt;Working from home, shopping online, ordering food, doing anything online is often a challenge for someone who is blind or visually impaired and relies on a screen reader.&lt;/p&gt;

&lt;p&gt;What we can do as front-end developers? &lt;br&gt;
Make a small change, educate ourselves, have conversations, not to be afraid of sharing information. &lt;/p&gt;

&lt;p&gt;I've started my accessibility journey this year and I invite you to join me. Today I'm sharing my notes on modals.&lt;/p&gt;
&lt;h2&gt;
  
  
  Definition
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A modal dialog is a dialog that appears on top of the main content and moves the system into a special mode requiring user interaction.&lt;br&gt;
This dialog disables the main content until the user explicitly interacts with the modal dialog.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Should I avoid modals all together? 🤨
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Modals are evil and should be avoided&lt;/code&gt; it's a common misconception that existed for some time. The reasons might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modals eat up a lot of space&lt;/li&gt;
&lt;li&gt;If the content doesn't fit inside, the scrollbars might cause a problem on mobile screens&lt;/li&gt;
&lt;li&gt;Any other reason&lt;/li&gt;
&lt;li&gt;Often unaccessible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can definitely discuss all of them with your designer, but let's break down the last one together.&lt;/p&gt;

&lt;p&gt;Often, modals are a piece of UI that contains text or an image, or a form and buttons. Like alerts, modals disrupt the flow of what the user is doing, so we must help them to be able to open it, close and read through the content with the screen reader.&lt;/p&gt;
&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;If the user navigates with the keyboard through our website, and the modal pops up, the user can't interact with the content (sign-in, say yes or even close it) because the keyboard focus is behind the modal. Pressing TAB or ESC won't work either. Very frustrating. 😣 If the user can't navigate, they will need sighted assistance.&lt;/p&gt;
&lt;h2&gt;
  
  
  What do the specs say? 🤓
&lt;/h2&gt;

&lt;p&gt;First of all, "the rules" or "read the specs" sounds intimidating, I get that. No, really. But bear with me:&lt;/p&gt;

&lt;p&gt;WCAG stands for Web Content Accessibility Guidelines. It's useful to developers as a guideline to make websites more accessible for disabled people. Those standards exist for us to use them, as any other resource. &lt;br&gt;
Personally, I find myself reaching out to "Quick Reference": &lt;br&gt;
&lt;a href="https://www.w3.org/WAI/WCAG21/quickref/?versions=2.0" rel="noopener noreferrer"&gt;A customizable quick reference to Web Content Accessibility Guidelines (WCAG) 2 requirements&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is what it says about &lt;a href="https://www.w3.org/TR/wai-aria-practices-1.1/examples/dialog-modal/dialog.html" rel="noopener noreferrer"&gt;Modal Dialog&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial focus placement.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authors SHOULD provide a dialog label, which can be done with the &lt;code&gt;aria-label&lt;/code&gt; or &lt;code&gt;aria-labelledby&lt;/code&gt; attribute.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keyboard interaction&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;➡️ Tab 
Moves focus to next focusable element inside the dialog.
When focus is on the last focusable element in the dialog, moves focus to the first focusable element in the dialog.
➡️ Shift + Tab 
Moves focus to previous focusable element inside the dialog.
When focus is on the first focusable element in the dialog, moves focus to the last focusable element in the dialog.
↩️ Escape   
Closes the dialog.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Focus and accessible descriptions are set based on the content of each dialog, usage of &lt;code&gt;aria-describedby&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When closed ❎, the focus is set on another element that provides logical work flow.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What Can I do? 🙂
&lt;/h2&gt;

&lt;p&gt;There are many edge cases and it all depends on your particular modal dialog, but here are some quick-wins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  ...content of my page...
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onClick=&lt;/span&gt;&lt;span class="s"&gt;"openDialog"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Sign in&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"dialog"&lt;/span&gt; 
     &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"dialog"&lt;/span&gt;
     &lt;span class="na"&gt;aria-modal=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
     &lt;span class="na"&gt;aria-labelledby=&lt;/span&gt;&lt;span class="s"&gt;"modalTitle"&lt;/span&gt;
     &lt;span class="na"&gt;aria-describedby=&lt;/span&gt;&lt;span class="s"&gt;"modalDescription"&lt;/span&gt;
     &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"-1"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    
  &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;'modalTitle'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Registration Form&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onClick=&lt;/span&gt;&lt;span class="s"&gt;"closeDialog"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Close me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Labeling&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give the modal an ARIA &lt;code&gt;aria-describedby&lt;/code&gt; attribute which will be linked to the &lt;code&gt;id&lt;/code&gt; of some visually hidden text which describes the modal’s function, and how to exit it.&lt;/p&gt;

&lt;p&gt;The dialog has either:&lt;br&gt;
A value set for the &lt;code&gt;aria-labelledby&lt;/code&gt; property that refers to a visible dialog title.&lt;br&gt;
A label specified by aria-label.&lt;br&gt;
Optionally, the &lt;code&gt;aria-describedby&lt;/code&gt; property is set on the element with the dialog role to indicate which element or elements in the dialog contain content that describes the primary purpose or message of the dialog. &lt;br&gt;
&lt;a href="https://www.w3.org/TR/wai-aria-practices/" rel="noopener noreferrer"&gt;WAI-ARIA Roles, States, and Properties&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shift focus when the modal is open&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the content is large enough that focusing on the first interactive element could cause the beginning of content to scroll out of view, it is advisable to add tabindex=-1.&lt;/p&gt;

&lt;p&gt;Upon clicking the modal-activating button, all the main content should get an &lt;code&gt;aria-hidden='true'&lt;/code&gt; attribute so that a screen reader will no longer read any of the content. Additionally, the modal should get an &lt;code&gt;aria-hidden='false'&lt;/code&gt; and go from having &lt;code&gt;{display: none;}&lt;/code&gt; to &lt;code&gt;{display: block;}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When a user clicks the ‘Open modal’ button then, we need to actively set their focus to the modal with JavaScript, and if they ever tab outside the modal, we need to set the focus back on the modal.&lt;/p&gt;

&lt;p&gt;Tip: one of the tools that I use the most for focus debugging &lt;/p&gt;

&lt;p&gt;✨ What has focus?&lt;br&gt;
&lt;a href="https://codepen.io/svinkle/pen/WgYRxq" rel="noopener noreferrer"&gt;https://codepen.io/svinkle/pen/WgYRxq&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When the dialog is open, pressing the ESC key should close it&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What if the button is X?&lt;/strong&gt; ❎&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;It is strongly recommended that the tab sequence of all dialogs include a visible element with role button that closes the dialog, such as a close icon or cancel button.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the 'close' element is implemented as a button containing merely the letter 'x', you can do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"dialog"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Close&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;               
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Exactly, just use the word "close". 'x' is commonly known multiplication sign, we don't want to confuse our users. &lt;/p&gt;

&lt;p&gt;If you can't avoid it this is also another accessible option:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;X&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"visually-hidden&amp;gt;Close&amp;lt;/span&amp;gt;
&amp;lt;/button&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In case of the icon, you need to make sure to use the &lt;strong&gt;high contrast&lt;/strong&gt; close icon in the top corner for people people who have low vision:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button​​&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;​"​open-toggle"&lt;/span&gt; &lt;span class="err"&gt;​&lt;/span&gt;&lt;span class="na"&gt;a​ria-expanded​=&lt;/span&gt;&lt;span class="s"&gt;"​false"&lt;/span&gt;&lt;span class="err"&gt;​​&lt;/span&gt; &lt;span class="na"&gt;aria-controls​=&lt;/span&gt;&lt;span class="s"&gt;​"menu"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;​
&lt;span class="nt"&gt;&amp;lt;svg&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt; &lt;span class="na"&gt;focusable=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;​
&lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="err"&gt;​​&lt;/span&gt;&lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;​"visually-hidden"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;​Close&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;​/&lt;/span&gt;&lt;span class="na"&gt;span&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;“Hide” the svg with aria-hidden="true" focusable="false&lt;br&gt;
icon itself (an svg image) should become irrelevant to screen reader with aria-hidden.&lt;/p&gt;

&lt;p&gt;The svg also should have a focusable attribute set to false which prevents the icon itself from receiving focus in IE.&lt;/p&gt;

&lt;p&gt;If a real &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; is not used, then your &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tabindex="0" (to allow keyboard focus to move to it)&lt;/li&gt;
&lt;li&gt;a click handler (for mouse users)&lt;/li&gt;
&lt;li&gt;a keyboard handler (for keyboard users to use space and enter to select it)&lt;/li&gt;
&lt;li&gt;a role="button" so a screen reader announces the proper semantics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  💁🏼‍♀️ To recap:
&lt;/h3&gt;

&lt;p&gt;If we are dealing with a modal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We want to manage the focus for full-sized modal so it’s not trapped behind.&lt;/li&gt;
&lt;li&gt;Modal needs labeling role="dialog" aria-modal="true" to the modal window.&lt;/li&gt;
&lt;li&gt;Ideally, close button would work with esc key.&lt;/li&gt;
&lt;li&gt;We want to be able to close it and interact with the content.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Resources 📂
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Github 👩🏼‍💻
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/andrewvasilchuk" rel="noopener noreferrer"&gt;
        andrewvasilchuk
      &lt;/a&gt; / &lt;a href="https://github.com/andrewvasilchuk/vue-accessible-modal" rel="noopener noreferrer"&gt;
        vue-accessible-modal
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Vue.js component for accessible modals
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Chakra UI is one of my favorite references for accessibility in Vue components. They are doing an amazing job!&lt;br&gt;&lt;/p&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chakra-ui" rel="noopener noreferrer"&gt;
        chakra-ui
      &lt;/a&gt; / &lt;a href="https://github.com/chakra-ui/chakra-ui-vue" rel="noopener noreferrer"&gt;
        chakra-ui-vue
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚡️ Build scalable and accessible Vue.js applications with ease.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Articles 📋
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://bitsofco.de/accessible-modal-dialog/" rel="noopener noreferrer"&gt;Creating An Accessible Modal Dialog&lt;/a&gt;&lt;br&gt;
&lt;a href="http://web-accessibility.carnegiemuseums.org/code/dialogs/" rel="noopener noreferrer"&gt;Modals (Dialog Windows)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://inclusive-components.design/notifications/" rel="noopener noreferrer"&gt;Notifications&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Specs 🧷
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal" rel="noopener noreferrer"&gt;3.9 Dialog (Modal)&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion 💡
&lt;/h1&gt;

&lt;p&gt;Building accessible websites shows that you care about disabled people. It's a small change that makes difference.&lt;/p&gt;

&lt;p&gt;How often could you hear someone say &lt;code&gt;"I'm not sacrificing visuals for accessibility"&lt;/code&gt;? The good news is you don't have to. 😊 What we &lt;em&gt;can&lt;/em&gt; do is make sure that all of our users can have similar experiences: to be able to find a button, have a dialog with the interface, close a modal or add items to the card. &lt;/p&gt;

&lt;p&gt;I'm quoting Holly again and wish you good luck in making a small change for a better experience for all. Just give it a try tomorrow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The lack of accessibility leaves disabled people feeling frustrated, isolated, and forgotten. But when accessibility is considered, disabled people feel included and most importantly, we feel equal.&lt;/p&gt;

&lt;p&gt;Accessibility should be at the heart ❤️ of everything you do. Whether it personally makes a difference to your life or not, accessibility should always be considered and made a priority."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you like this article and the information that I have put together, please, share it with your colleague and reach out to me on Twitter, whether you liked it or have suggestions 💚&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1349473220089573378-812" src="https://platform.twitter.com/embed/Tweet.html?id=1349473220089573378"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1349473220089573378-812');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1349473220089573378&amp;amp;theme=dark"
  }



 &lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>inclusive</category>
    </item>
  </channel>
</rss>
