Accessibility Crash Course: Web A11y Basics Applied

Slides:



Advertisements
Similar presentations
Chapter 3 – Web Design Tables & Page Layout
Advertisements

HTML5 and CSS3 Illustrated Unit E: Inserting and Working with Links
WAHEP Website Check-up A Look at the Project Midway Website Evaluations.
IV. “Regular” Web Pages: HTML A Web Accessibility Primer: Usability for Everyone Office of Web Communications.
Working with Text and Cascading Style Sheets Adobe Dreamweaver Chapter 3.
Chapter 9 Collecting Data with Forms. A form on a web page consists of form objects such as text boxes or radio buttons into which users type information.
XHTML Introductory1 Forms Chapter 7. XHTML Introductory2 Objectives In this chapter, you will: Study elements Learn about input fields Use the element.
© Ms. Masihi.  The Dreamweaver Welcome Screen first opens when you start Dreamweaver.  This screen gives you quick access to previously opened files,
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
Publishing a Macromedia Flash Movie – Lesson 131 Publishing a Macromedia Flash Movie Lesson 13.
LEARN THE QUICK AND EASY WAY! VISUAL QUICKSTART GUIDE HTML and CSS 8th Edition Chapter 6: Links.
Accessible DOM scripting with ARIA Léonie Watson
 Whether using paper forms or forms on the web, forms are used for gathering information. User enter information into designated areas, or fields. Forms.
WEB ACCESSIBILITY. WHAT IS IT? Web accessibility means that people with disabilities can use the Web. Web accessibility encompasses all disabilities that.
Forms and Server Side Includes. What are Forms? Forms are used to get user input We’ve all used them before. For example, ever had to sign up for courses.
Chapter 8 © 2001 by Addison Wesley Longman, Inc. 1 Chapter 8 Sebesta: Programming the World Wide Web.
Use CSS to Implement a Reusable Design Selecting a Dreamweaver CSS Starter Layout is the easiest way to create a page with a CSS layout You can access.
© 2011 Delmar, Cengage Learning Chapter 3 Working with Text and Cascading Style Sheets.
4 HTML Basics Section 4.1 Format HTML tags Identify HTML guidelines Section 4.2 Organize Web site files and folder Use a text editor Use HTML tags and.
User Interface Design using jQuery Mobile CIS 136 Building Mobile Apps 1.
1 CSC160 Chapter 7: Events and Event Handlers. 2 Outline Event and event handlers onClick event handler onMouseOver event handler onMouseOut event handler.
WDMD 170 – UW Stevens Point 1 WDMD 170 Internet Languages eLesson: Variables, Functions and Events (NON-Audio version) © Dr. David C. Gibbs WDMD.
More HTML Images and Links. Links An anchor tag (a) is used to define a link, but you also need to add something to the anchor tag – the destination of.
XP New Perspectives on Macromedia Dreamweaver MX 2004 Tutorial 5 1 Adding Shared Site Elements.
HTML5 and CSS3 Illustrated Unit F: Inserting and Working with Images.
HTML5 and CSS3 Illustrated Unit E: Inserting and Working with Links.
Hide/Show Summit Holdings: Some Accessibility Lessons
MIS 3200 – C# (C Sharp)
Dive Into® Visual Basic 2010 Express
JavaScript, Sixth Edition
SVG Accessibility Basics
Section 4.1 Section 4.2 Format HTML tags Identify HTML guidelines
JavaScript and HTML Simple Event Handling 11-May-18.
Accessibility, Visual Design, and Front-End Development
Images, Hyperlinks, and Sound
How to Improve Your #A11y Testing
Section 508 At long last, two of the most looming accessibility questions in the United States have been answered.
Keyboard Accessibility
Inserting and Working with Images
Introduction to JavaScript Events
Intro to Dreamweaver Web Design Section 8-1
Microsoft® Office FrontPage® 2003 Training
Android 11: The Calculator Assignment
Using Cascading Style Sheets Module B: CSS Structure
Creating Accessible Web Forms
Accessibility with WordPress
JavaScript and HTML Simple Event Handling 19-Sep-18.
Content Best Practices
Web Accessibility Testing 101: A Checklist for Beginners
Accessibility Basics Series: Use of Color
Web Accessibility 101 UW GAAD 2018
What Designers Need to Know about Accessibility (A11y)
Context Is Everything Meaningful Alternative Text
Inserting and Working with Links
Web Accessibility Clinic – Common Issues
Events Comp 205 Fall 2017.
Tutorial 6 Creating Dynamic Pages
DREAMWEAVER MX 2004 Chapter 3 Working with Tables
Images, Hyperlinks, and Sound
Course Web Technology Guus Schreiber
Teaching slides Chapter 6.
Adobe Acrobat DC Accessibility Non-Text Elements
Web Programming and Design
Accessibility Evaluation
Web Programming and Design
JavaScript and HTML Simple Event Handling 26-Aug-19.
JavaScript and HTML Simple Event Handling 4-Oct-19.
Presentation transcript:

Accessibility Crash Course: Web A11y Basics Applied Presented By: Brian McNeilly and James Thompson #a11y is a widely used abbreviation for “accessibility”, and particularly accessibility of digital information, websites, apps, software and devices. CSUN 2018 Assistive Technology Conference March 22, 2018

levelaccess.com | (800) 899-9659 | info@levelaccess.com Overview A11y Crash Course Keyboard-Only Access Images CSS Reading Order Roles and ARIA levelaccess.com | (800) 899-9659 | info@levelaccess.com

I. Keyboard-only access

levelaccess.com | (800) 899-9659 | info@levelaccess.com Keyboard-Only Access A11y Crash Course Ensure elements that can activated using the mouse can also be navigated to and activated using the keyboard only. This is important, not only for users who cannot see the page but also for those who navigate the web using means other than their hands. levelaccess.com | (800) 899-9659 | info@levelaccess.com

levelaccess.com | (800) 899-9659 | info@levelaccess.com Keyboard-Only Access 2 A11y Crash Course Keyboard accessible means event handlers for the mouse also handle keyboard keys onMouseOver == onFocus OnMouseOut == onBlur OnClick == onKeyDown keys 13 and 32 This is only needed when working with elements that are not natively actionable. levelaccess.com | (800) 899-9659 | info@levelaccess.com

Ii. Images

levelaccess.com | (800) 899-9659 | info@levelaccess.com Image Testing A11y Crash Course All images that use the img element need an alt attribute. Null (empty) alt attributes. alt="" All CSS images need HTML equivalents.  Provide the alt attribute for img tags, whether they are informative or not. If the image is decorative or redundant the alt value should be empty or null. https://codepen.io/bpmcneilly/pen/KoWVRo levelaccess.com | (800) 899-9659 | info@levelaccess.com

levelaccess.com | (800) 899-9659 | info@levelaccess.com Other Images A11y Crash Course SVGs need to use appropriate elements: <title> <desc> ARIA (if necessary) Don't use images of text! SVGs that are inserted inline need to be treated differently than other images (including svg elements referenced by img elements) because they are "inline" and structural elements can be exposed in the DOM. The default elements within SVG that will provide information to assistive technology are the title and desc elements. Title, as someone might expect provides a name for the SVG icon, while the desc provides a supplemental description. ARIA (which we will discuss a little more later) can also be used as a means to label SVG elements! Images of text are sometimes very popular, especially in some finance & retail situations, but these images pose a number of problems for people with disabilities. Often alt attributes for images of text don't expose EVERYTHING in an image, and unlike explicit text, images of text will not scale when users magnify their screen, resulting in text that is harder to read. An example of this is illustrated in the magnified "bitmap" image at right.  Because we're talking about SVGs and images of text, it’s worth mentioning, the SVG "text" element is considered programmatic text and isn't the same as a classic "image of text". levelaccess.com | (800) 899-9659 | info@levelaccess.com

iII. CSS

levelaccess.com | (800) 899-9659 | info@levelaccess.com CSS & Color Contrast A11y Crash Course Color Contrast for text and keyboard focus https://www.levelaccess.com/compliance-resource/color-contrast-checker/ This is an example of poor contrast. It is not a great example as it cannot really be read. If you can read this One of the most popular things to do with CSS is adjust color contrast. If you came to our earlier presentation, some of you may recognize the image we have up on this slide. Low color contrast is something that is encountered a lot and can be fairly easily fixed (especially if accessibility is addressed early on) Sufficient color contrast, and noticeability is very important for keyboard focus indicators. Without these, sighted keyboard-only users will be unable to see where they have keyboard focus.  While browsers generally provide sufficient contrast, in some instances content creators must define focus indication themselves. This requires the use of the "outline" CSS property set when elements receive focus. levelaccess.com | (800) 899-9659 | info@levelaccess.com

CSS - Visible and Invisible Text A11y Crash Course The differences between:  display:none Not visible, nor heard. visibility:hidden  Not visible, but takes up space and MAY be heard. Off-screen text Not visible, but heard. The most used screen readers support both CSS properties, however older, less well-known screen readers may not support everything as consensus generally holds. levelaccess.com | (800) 899-9659 | info@levelaccess.com

IV. Reading Order

levelaccess.com | (800) 899-9659 | info@levelaccess.com Reading Order A11y Crash Course Ensure the reading order corresponds to the visual order of the page. Make sure that CSS is not used to move content visually. Especially when dealing with dialogs. levelaccess.com | (800) 899-9659 | info@levelaccess.com

Reading Order (cont’d) A11y Crash Course Ensure focus order follows the reading order of the page. Do not use positive tabindex values unless absolutely necessary, instead change the order the code. Move keyboard focus to opening modal dialogs Use tabindex=0, if positive values are used anywhere, they must be used everywhere and all values need to be updated whenever elements are moved or changed. The Cat Analogy Make sure focus moves appropriately within dialogs and modal dialogs. levelaccess.com | (800) 899-9659 | info@levelaccess.com

V. Roles & Aria

levelaccess.com | (800) 899-9659 | info@levelaccess.com Element Roles A11y Crash Course What is a role? Does everything have a role? How do I pick the right one? Interactive Roles & ATs Code Examples: <button>Click me!</button> <a id="sample">Learn about examples</a> <input type="text" /> A role is a way to understand what a component is, and what to do with it. Everything has a role, but lots of them are implicit – in web documents, standard text is expected to be in paragraph form, so this won't be announced Using standard HTML controls, roles will be assigned appropriately – if you use an HTML list, ATs will be exposed to a list, use a button, ATs will be exposed to a button Interactive roles are some of the most important to get correct as without them, AT users will not be able to effectively interact with items on a site. A couple of examples appear on the right, one of which will not supply an interactive role, anyone have any guesses?  It's the second item – this is included because it's something I've seen a number of times, if you include an "a" element without an "href" attribute the element will be exposed as text, and not exposed to ATs as a link! https://codepen.io/bpmcneilly/pen/BrWKwV levelaccess.com | (800) 899-9659 | info@levelaccess.com

levelaccess.com | (800) 899-9659 | info@levelaccess.com ARIA-* Attributes A11y Crash Course The Big Four: aria-label (string) aria-labelledby (space separated list of ids) aria-describedby (space separated list of ids) aria-hidden (true) Other handy attributes: aria-expanded (true or false) aria-live (off, polite, or assertive) aria-hidden *refresher* ARIA-* attributes will be helpful to provide additional context to items when you can't add this in other ways Aria-label will let you manually specify a label directly. This is in contrast to the next item, aria-labelledby which requires you to reference ID attributes of elements on a page (the real advantage here is when you want to label something with text already on a page) Aria-describedby works like aria-labelledby, but only provides additional explanatory text. This can be helpful when assigning supplemental text to explain an interactive element. Aria-hidden lets you hide content from ATs that is visually displayed. This is basically the inverse of off-screen text that we talked about earlier. If there's something on-screen that is extra & you want it hidden A few other aria-* attributes exist, and can be helpful here and there. Most notably, aria-expanded & aria-live. The latter will let you announce if content has a state, expanded or collapsed, and which state it is currently in. This comes in a lot of handy for dialogs and similar content. Aria-live will provide live updates to content contained within the "live region". These are helpful for status messages, and also content that you know will be updating and providing important information everyone should see. https://codepen.io/bpmcneilly/pen/pLeydB levelaccess.com | (800) 899-9659 | info@levelaccess.com

ARIA Roles & Visual ARIA A11y Crash Course ARIA Roles: With Great Power, Comes Great Responsibility Create complex widgets, unavailable within native HTML. When (and when not) to use ARIA. How do I know I've done it right? Instill some "Fear of God" about how much you can fuck up a page with ARIA "With great power comes great responsibility". How do I know I've done it right? Cue NEXT SLIDE levelaccess.com | (800) 899-9659 | info@levelaccess.com

levelaccess.com | (800) 899-9659 | info@levelaccess.com Visual ARIA Testing A11y Crash Course If your product uses ARIA: Use the Visual ARIA Bookmarklet. Can be found at: http://whatsock.com/training/matrices/visual-aria.htm Tab through all custom widgets, open menus, etc. VISUAL ARIA to the RESCUE Tools will definitively help you with respect to what content is coded correctly or not :) levelaccess.com | (800) 899-9659 | info@levelaccess.com

 Questions

levelaccess.com | (800) 899-9659 | info@levelaccess.com Thank You! A11y Crash Course Contact Us Follow Us Brian McNeilly Brian.McNeilly@LevelAccess.com @LevelAccessA11y Level-Access James Thompson James.Thompson@LevelAccess.com Level Access Level Access Blog Slide Deck Available for Download at: https://www.levelaccess.com/csun18/ levelaccess.com | (800) 899-9659 | info@levelaccess.com