SlideShare a Scribd company logo
1 of 57
1




                How to Build an Accessible
                     Web Application

                              Presented by Dennis Lembrée

                                 #a11yBos | @a11y_bos
                                  September 15, 2012




@DennisL @WebAxe @EasyChirp
2




     Agenda
      • About @DennisL            •   ARIA
      • Foundations               •   Writing
      • HTML                      •   Tips
        ▫ Headings, images,       •   Results
          lists, forms, tables,   •   Other Resources
          title, more             •   Contact
      • CSS & Design              •   Questions
      • JavaScript
@DennisL @WebAxe @EasyChirp
3




     About @DennisL
      • Author of Easy Chirp.
      • Author of Web Axe.
      • Day job at PayPal.
      • Also worked for Ford, Google, Disney and a few
        start-ups.
      • Live in Cupertino, CA with wife and 2 boys.
      • I like drinking espresso, strumming guitar, and
        motorcycling to work.

@DennisL @WebAxe @EasyChirp
4




     Foundations
      1.    HTML
      2.    CSS & Design
      3.    JavaScript
      4.    ARIA
      5.    +CSS for JavaScript
           ▫ 5 Layers of Web Accessibility
             by Dirk Ginader



@DennisL @WebAxe @EasyChirp
5




     Foundations
      • Our example:
        Easy Chirp
          ▫ Web-accessible and standards-compliant Twitter
            web application.
          ▫ Recipient of the AFB 2011 Access Award.
          ▫ Recipient of the 2009 Access IT @web2.0 Award.
          ▫ RNIB featured website December 2011.




@DennisL @WebAxe @EasyChirp
6




     HTML
      •   Semantics           •   Lists
      •   Headings            •   Title
      •   Images              •   Unobtrusive
      •   Forms               •   HTML5
      •   Tables




@DennisL @WebAxe @EasyChirp
7




     HTML – Semantics
      • Semantics
          ▫   Accessibility
          ▫   Graceful degradation
          ▫   Future-proofing
          ▫   Easier to maintain (standard, consistency)
          ▫   SEO
      • Content Order = Source Order = Tab Order



@DennisL @WebAxe @EasyChirp
8




     HTML – Semantics cont.
      • POSH: Plain Ol’ Semantic HTML
      • KISS: Keep It Simple, Stupid




@DennisL @WebAxe @EasyChirp
9




     HTML – Semantics cont.
      • Validate.
          ▫ Important, but don’t go overboard.
          ▫ User experience is ultimate test.
          ▫ Tools
              W3C Markup Validation Service
              HTML Validator for Firefox




@DennisL @WebAxe @EasyChirp
10




     HTML – Semantics cont.
      • Test semantics, order.
          ▫   Turn off CSS.
          ▫   Check doc structure with toolbar.
          ▫   Check content order with toolbar.
          ▫   Text-only browser such as Lynx.
          ▫   Tab through.
          ▫   Run Fangs.



@DennisL @WebAxe @EasyChirp
11




     HTML – Semantics
      • “Naked” Easy Chirp




@DennisL @WebAxe @EasyChirp
12




     HTML – Headings
      •   One H1, for now.
      •   Brief, succinct text.
      •   Nicely nested.
      •   Ensure inclusion of all
          sections of content.
          ▫ Or balance with
            landmarks roles and
            aria-labels


@DennisL @WebAxe @EasyChirp
13




     HTML – Images
      • Provide alternative text for images.
      • If decorative, use alt=“” (but better to use CSS)
      • If content on page text, use alt=“”
      • If image linked, alt text should describe purpose
        of link.
      • Be accurate and succinct.
      • Don’t use phrases like “image of…”
      • Avoid text in images

@DennisL @WebAxe @EasyChirp
14




     HTML – Forms
      • Labels
          ▫ All form elements must have a label.
          ▫ Other methods such as title are not robust.

        <label for="firstname">First Name</label>
        <input name="firstname" id="firstname" type="text" />




@DennisL @WebAxe @EasyChirp
15




     HTML – Forms cont.
      • Fieldsets
          ▫ Great for long forms and radio/checkbox groups.
          ▫ Screen readers will announce Legend text before
            each label text.

        <fieldset>
           <legend>Name</legend>
           <label for="firstname">First Name</label>
           <input name="firstname" id="firstname" type="text" />
           <label for="lastname">Last Name</label>
           <input name="lastname" id="lastname" type="text" />
         </fieldset>
@DennisL @WebAxe @EasyChirp
16




     HTML – Forms cont.
      • Placeholder attribute is not an input label!
          ▫ May not be supported.
          ▫ Disappears when entering text.
          ▫ Placeholder is meant for hint/sample input; not
            an elements name/label.
          ▫ Must not be required information.
          ▫ This technique is trendy.
          ▫ More: Placeholder is not a label!


@DennisL @WebAxe @EasyChirp
17




@DennisL @WebAxe @EasyChirp
18




     HTML – Tables
      • Provide caption (title of table).
      • The summary attribute is no longer suggested.
          ▫ Original purpose of summary, define structure of
            table, no longer needed as AT does this.
          ▫ Obsolete in HTML5.
          ▫ Difficult to maintain.
          ▫ Instead use aria-describedby with P.



@DennisL @WebAxe @EasyChirp
19




     HTML – Tables
      • TH with scope for table header cells.
          ▫ Use for col and row.
      • Avoid complex data tables if possible.
          ▫ If necessary, use id and headers attributes.




@DennisL @WebAxe @EasyChirp
20




     HTML – Tables




@DennisL @WebAxe @EasyChirp
21




     HTML – Lists
      • Use list a element (ol/ul/dl) for lists.
      • Do:
          ▫ <ol>
              <li>First item here</li>
            </ol>
      • Do not:
          ▫ <div>1. &nbsp; First item here</div>



@DennisL @WebAxe @EasyChirp
22




     HTML – Title attribute
      •   No keyboard support (silly browser vendors!)
      •   No mouseover support on touch/mobile
      •   Supplementary information only
      •   Use sparingly
      •   DO NOT create redundant titles on links
      •   PS: Title is not a label either!



@DennisL @WebAxe @EasyChirp
23




@DennisL @WebAxe @EasyChirp
24




     HTML – Unobtrusive
      • Put CSS & JavaScript in external files as much as
        possible.
      • Load CSS at top; JavaScript at the bottom.
          ▫ Except libraries like Modernizr




@DennisL @WebAxe @EasyChirp
25




     HTML5
      • HTML5
          ▫   More native power
          ▫   Lighter code
          ▫   Good support on mobile
          ▫   Exciting
      • Currently browser and accessibility/AT issues
          ▫ http://html5accessibility.com/
      • Use carefully and with fallbacks.

@DennisL @WebAxe @EasyChirp
26




     HTML5
      • required and aria=required
      • alt optional with figure/figcaption
      • aria-describedby vs longdesc
          ▫ My 2-part article
            Longdesc & Other Long Image Description Solutions




@DennisL @WebAxe @EasyChirp
27




     CSS & Design
      •   Consistent layout & navigation
      •   Display account name/info
      •   Opportunity to logout
      •   Provide search




@DennisL @WebAxe @EasyChirp
28




     CSS & Design
      • Relative sizing
      • Flexible width
      • Adaptive layout
          ▫ For different screen resolutions
          ▫ For different devices
          ▫ Responsive Web Design (ALA)
              media query
      • Next slide: Easy Chirp at 1024 x 768, 200%

@DennisL @WebAxe @EasyChirp
29




@DennisL @WebAxe @EasyChirp
30




     CSS & Design
      • Sufficient text size.
          ▫ 16 PIXELS For Body Copy. Anything Less Is A
            Costly Mistake.
      • Make links focusable and visually clear.
          ▫ Use :focus with :hover
          ▫ Don’t remove the link underline in body copy.
          ▫ Never do a:focus { outline: 0; }
            outlinenone.com


@DennisL @WebAxe @EasyChirp
31




     CSS & Design
      • Easy Chirp’s links are keyboard accessible.
          ▫ And have clear visual focus.




@DennisL @WebAxe @EasyChirp
32




     CSS & Design
      • Colors
          ▫ Not for meaning alone.
              Also use shapes as well as textual content.
          ▫ Provide sufficient contrast.
              Contrast Rebellion




@DennisL @WebAxe @EasyChirp
33




@DennisL @WebAxe @EasyChirp
34




     CSS & Design
      • Hide content with discretion.
        ▫ Labeling a form element that has meaning conveyed
          visually (search input).
        ▫ Providing headings where related content has meaning
          conveyed visually, but not otherwise, such as a menu.
           Or balance with landmarks roles and aria-labels
                ​         
        ▫ “skip-to” links(should be focusable and viewable for sighted
          keyboard users)
        ▫ Instructions in special cases where interaction may be
          confusing to users of assistive technology.
        ▫ When and How to Visually Hide Content

@DennisL @WebAxe @EasyChirp
35




     JavaScript
      • Progressive Enhancement, Unobtrusive
      • Libraries
          ▫ YUI3
          ▫ jQuery, jQueryUI
              Still a work in progress.
              jQuery UI Accessibility Review by Everett Zufelt.
      • Hijax (Jeremy Keith, 2006).
          ▫ Develop server-side first.
          ▫ Then “hijack” and enhance behavior with JS.
@DennisL @WebAxe @EasyChirp
36




@DennisL @WebAxe @EasyChirp
37




     JavaScript
      • focus()
          ▫ Managing focus is essential for accessibility as
            well as usability.
      • tabindex
          ▫ tabindex=0 makes element tabbable
          ▫ tabindex=-1 makes element tabbable only with
            JavaScript
          ▫ Don’t use otherwise.


@DennisL @WebAxe @EasyChirp
38




     JavaScript




@DennisL @WebAxe @EasyChirp
39




     JavaScript




@DennisL @WebAxe @EasyChirp
40




     JavaScript
      • Device Independence
      • Handlers:
          ▫ If you use the onMouseOver and onMouseOut
            JavaScript handlers, you must also use onFocus
            and onBlur.
          ▫ Do not use the double-click handler onDblClick.




@DennisL @WebAxe @EasyChirp
41




     ARIA
      • Accessible Rich Internet Applications (WAI-
        ARIA) 1.0
        http://www.w3.org/TR/wai-aria/
          ▫ Landmark Roles
          ▫ States and Properties
          ▫ Live Regions
      • Attributes that define user interface elements to
        improve the accessibility and interoperability of
        web content and applications.
@DennisL @WebAxe @EasyChirp
42




     ARIA - Landmark Roles
      • ARIA role attribute (HTML5 element):
          ▫   banner (page header)
          ▫   complementary (aside)
          ▫   contentinfo (page footer)
          ▫   main (div)
          ▫   navigation (nav)
          ▫   search (div or form)
          ▫   form, application [rare]


@DennisL @WebAxe @EasyChirp
43




     ARIA - Landmark Roles
                                role=“banner”




      role=“navigation”        role=“main”         role=“complementary”


                                                       role=“search”



                              role=“contentinfo”

@DennisL @WebAxe @EasyChirp
44




     ARIA - States and Properties
      • aria-describedby (property)
          ▫ Like longdesc but on page.
      • aria-labelledby (property)
          ▫ Like form label.
      • aria-checked (state)
          ▫ Indicates the current "checked" state of
            checkboxes, radio buttons, and other widgets.
      • aria-required (property)
          ▫ Like HTML5 required.
@DennisL @WebAxe @EasyChirp
45




     ARIA - States and Properties
      • aria-expanded (state)
          ▫ Indicates whether the element, or another
            grouping element it controls, is currently
            expanded or collapsed (boolean).
      • aria-valuemax, aria-valuemin (properties)
          ▫ Defines the minimum and maximum values for a
            range widget.



@DennisL @WebAxe @EasyChirp
46




     ARIA – Live Regions
      • aria-live (property)
          ▫ off, polite, assertive
      • aria-busy (state)
      • aria-atomic (property)
      • aria-relevant (property)

      • Great for Ajax!


@DennisL @WebAxe @EasyChirp
47




     ARIA – Live Regions




@DennisL @WebAxe @EasyChirp
48




     ARIA – Live Regions
      • More Ajax tips:
          ▫ Show that something’s happening such as
            displaying a ‘spinner’.
          ▫ Show yellow flash for visual indication of change.
          ▫ JSON is easy and light.
          ▫ Returning HTML can save a step.
          ▫ Plan from beginning, implement at the end.



@DennisL @WebAxe @EasyChirp
49




     Writing
      •   Page title (unique)
      •   Headings
      •   Descriptive link text (meaningful on own)
      •   Abbreviations
          ▫ Best to spell out in full at least once per page.
          ▫ Use abbr element; acronym deprecated.




@DennisL @WebAxe @EasyChirp
50




     Writing cont.
      •   Alternative text
      •   Transcriptions, captions
      •   Legends and Labels (brief and succinct)
      •   Define language (page level and inline)




@DennisL @WebAxe @EasyChirp
51




     Tips
      • Plan accessibility from the very start.
      • Small file sizes (low-band, mobile).
      • NVDA is free.
      • Error handling is important.
      • Screen readers use JavaScript.
      • Warn user when linking to anything other than
        an HTML page.
      • Test often on different browsers and devices.

@DennisL @WebAxe @EasyChirp
52




     Results
      • Easy Chirp works with
        ▫ All operating systems
        ▫ All major browsers
        ▫ No JavaScript, no CSS
        ▫ Variety of mobile devices and tablets
        ▫ Screen readers
        ▫ Text-only (Lynx)
        ▫ Kindle
        ▫ Low-band connections


@DennisL @WebAxe @EasyChirp
53


                                   Konquerer (Linux)


     Results
      • Robust
          Kindle (first release)




                                   IE6




@DennisL @WebAxe @EasyChirp
54




     Results
      • More usable.
      • Better functionality with assistive technology
        such as screen readers & Braille output devices.
      • Keyboard accessibility opens gate for many other
        types of input devices.
      • Future proof with web standards.
      • Providing clear, consistent content and
        navigation benefits those with cognitive
        impairments (and is more usable in general).
      • Use with a mobile device is possible.
@DennisL @WebAxe @EasyChirp
55




     Other Resources
      • Companies:
          ▫ WebAIM, Yahoo, IBM, Adobe, Nomensa,
            Knowbility, Deque Systems, Paciello Group
      • People: too many to name, check Twitter!
          ▫ Hash tags such as #a11y
          ▫ Twitter lists
      • Not a tweep? Try: Facebook.com/WebAxe
      • 25 Ways To Make Your Site More Accessible
      • Attend events (like this one!)
@DennisL @WebAxe @EasyChirp
56




     Contact
      • Web Sites
        ▫ www.EasyChirp.com
        ▫ WebAxe.blogspot.com
        ▫ www.DennisLembree.com
      • Twitter Accounts
        ▫ @EasyChirp
        ▫ @WebAxe
        ▫ @DennisL
      • SlideShare
        ▫ www.slideshare.net/webaxe/presentations
@DennisL @WebAxe @EasyChirp
57




     Questions?




@DennisL @WebAxe @EasyChirp

More Related Content

What's hot

Code &amp; design your first website (3:16)
Code &amp; design your first website (3:16)Code &amp; design your first website (3:16)
Code &amp; design your first website (3:16)Thinkful
 
Flexible web publishing with Expression Engine
Flexible web publishing with Expression EngineFlexible web publishing with Expression Engine
Flexible web publishing with Expression EngineHarvard Web Working Group
 
Code & Design your first website 4/18
Code & Design your first website 4/18Code & Design your first website 4/18
Code & Design your first website 4/18TJ Stalcup
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Mediacurrent
 
Html:css crash course (4:5)
Html:css crash course (4:5)Html:css crash course (4:5)
Html:css crash course (4:5)Thinkful
 
Snapguide - Amazon Cloudsearch
Snapguide - Amazon CloudsearchSnapguide - Amazon Cloudsearch
Snapguide - Amazon CloudsearchMichael Bohlig
 
Thinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSSThinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSSTJ Stalcup
 
Modular HTML & CSS Turbo Workshop
Modular HTML & CSS Turbo WorkshopModular HTML & CSS Turbo Workshop
Modular HTML & CSS Turbo WorkshopShay Howe
 
Modular HTML & CSS Workshop
Modular HTML & CSS WorkshopModular HTML & CSS Workshop
Modular HTML & CSS WorkshopShay Howe
 
Wp nhcc portfolio
Wp nhcc portfolioWp nhcc portfolio
Wp nhcc portfoliogregorvios
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflowPeter Kaizer
 
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012Rigor
 
Introduction to web sites design
Introduction to  web sites designIntroduction to  web sites design
Introduction to web sites designMarwa Abdelgawad
 
Intro to HTML5 & CSS3
Intro to HTML5 & CSS3Intro to HTML5 & CSS3
Intro to HTML5 & CSS3tibbon
 
Tech 802: Web Design Part 2
Tech 802: Web Design Part 2Tech 802: Web Design Part 2
Tech 802: Web Design Part 2somisguided
 
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon Dublin
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon DublinCreating Layouts and Landing Pages for Drupal 8 - DrupalCon Dublin
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon DublinSuzanne Dergacheva
 
WordPress Blogs 101
WordPress Blogs 101WordPress Blogs 101
WordPress Blogs 101Tom McGee
 

What's hot (20)

Code &amp; design your first website (3:16)
Code &amp; design your first website (3:16)Code &amp; design your first website (3:16)
Code &amp; design your first website (3:16)
 
Flexible web publishing with Expression Engine
Flexible web publishing with Expression EngineFlexible web publishing with Expression Engine
Flexible web publishing with Expression Engine
 
Code & Design your first website 4/18
Code & Design your first website 4/18Code & Design your first website 4/18
Code & Design your first website 4/18
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG)
 
Html:css crash course (4:5)
Html:css crash course (4:5)Html:css crash course (4:5)
Html:css crash course (4:5)
 
Snapguide - Amazon Cloudsearch
Snapguide - Amazon CloudsearchSnapguide - Amazon Cloudsearch
Snapguide - Amazon Cloudsearch
 
Snapguide - CloudSearch
Snapguide - CloudSearchSnapguide - CloudSearch
Snapguide - CloudSearch
 
Thinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSSThinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSS
 
Modular HTML & CSS Turbo Workshop
Modular HTML & CSS Turbo WorkshopModular HTML & CSS Turbo Workshop
Modular HTML & CSS Turbo Workshop
 
Modular HTML & CSS Workshop
Modular HTML & CSS WorkshopModular HTML & CSS Workshop
Modular HTML & CSS Workshop
 
Wp nhcc portfolio
Wp nhcc portfolioWp nhcc portfolio
Wp nhcc portfolio
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
 
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012
The Need For Speed - Rigor's slides from ShopVisible Client Connect 2012
 
Introduction to web sites design
Introduction to  web sites designIntroduction to  web sites design
Introduction to web sites design
 
Intro to HTML5 & CSS3
Intro to HTML5 & CSS3Intro to HTML5 & CSS3
Intro to HTML5 & CSS3
 
Seocheck
SeocheckSeocheck
Seocheck
 
Tech 802: Web Design Part 2
Tech 802: Web Design Part 2Tech 802: Web Design Part 2
Tech 802: Web Design Part 2
 
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon Dublin
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon DublinCreating Layouts and Landing Pages for Drupal 8 - DrupalCon Dublin
Creating Layouts and Landing Pages for Drupal 8 - DrupalCon Dublin
 
WordPress Blogs 101
WordPress Blogs 101WordPress Blogs 101
WordPress Blogs 101
 
Addictomatic
AddictomaticAddictomatic
Addictomatic
 

Viewers also liked

Getting Things Done for Technical Communicators at TCUK14
Getting Things Done for Technical Communicators at TCUK14Getting Things Done for Technical Communicators at TCUK14
Getting Things Done for Technical Communicators at TCUK14Karen Mardahl
 
HTML5's ARIA and a Web-Accessible Dropdown Widget
HTML5's ARIA and a Web-Accessible Dropdown WidgetHTML5's ARIA and a Web-Accessible Dropdown Widget
HTML5's ARIA and a Web-Accessible Dropdown WidgetDennis Lembree
 
Anatomy of an accessible carousel: everyone's responsible!
Anatomy of an accessible carousel: everyone's responsible!Anatomy of an accessible carousel: everyone's responsible!
Anatomy of an accessible carousel: everyone's responsible!Access iQ
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript AccessibleDennis Lembree
 
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.Dylan Wilbanks
 
Strategic Approach to IT Accessibility
Strategic Approach to IT AccessibilityStrategic Approach to IT Accessibility
Strategic Approach to IT AccessibilityInnoTech
 
[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & AccessibilityChristopher Schmitt
 
Accessible Video in The Enterprise
Accessible Video in The Enterprise Accessible Video in The Enterprise
Accessible Video in The Enterprise John Foliot
 
HTML5 Accessibility - Is it ready yet?
HTML5 Accessibility - Is it ready yet?HTML5 Accessibility - Is it ready yet?
HTML5 Accessibility - Is it ready yet?Steven Faulkner
 
Getting Things Done for Technical Communicators
Getting Things Done for Technical CommunicatorsGetting Things Done for Technical Communicators
Getting Things Done for Technical CommunicatorsKaren Mardahl
 
How To Build An Accessible Web Application
How To Build An Accessible Web ApplicationHow To Build An Accessible Web Application
How To Build An Accessible Web ApplicationDennis Lembree
 
Designing with Empathy [Reasons to be Creative 2013]
Designing with Empathy [Reasons to be Creative 2013]Designing with Empathy [Reasons to be Creative 2013]
Designing with Empathy [Reasons to be Creative 2013]Aaron Gustafson
 
Responsible Design: Accountable Accessibility
Responsible Design: Accountable AccessibilityResponsible Design: Accountable Accessibility
Responsible Design: Accountable AccessibilityBilly Gregory
 
Teach your Browser new tricks
Teach your Browser new tricksTeach your Browser new tricks
Teach your Browser new tricksDirk Ginader
 
Create Accessible Infographics
Create Accessible Infographics Create Accessible Infographics
Create Accessible Infographics Ted Drake
 
Introduction To Web Accessibility
Introduction To Web AccessibilityIntroduction To Web Accessibility
Introduction To Web AccessibilitySteven Swafford
 
A Web for Everyone: Accessibility as a design challenge
A Web for Everyone: Accessibility as a design challengeA Web for Everyone: Accessibility as a design challenge
A Web for Everyone: Accessibility as a design challengeWhitney Quesenbery
 
The 5 Layers of Web Accessibility
The 5 Layers of Web AccessibilityThe 5 Layers of Web Accessibility
The 5 Layers of Web AccessibilityDirk Ginader
 

Viewers also liked (20)

Getting Things Done for Technical Communicators at TCUK14
Getting Things Done for Technical Communicators at TCUK14Getting Things Done for Technical Communicators at TCUK14
Getting Things Done for Technical Communicators at TCUK14
 
HTML5's ARIA and a Web-Accessible Dropdown Widget
HTML5's ARIA and a Web-Accessible Dropdown WidgetHTML5's ARIA and a Web-Accessible Dropdown Widget
HTML5's ARIA and a Web-Accessible Dropdown Widget
 
Anatomy of an accessible carousel: everyone's responsible!
Anatomy of an accessible carousel: everyone's responsible!Anatomy of an accessible carousel: everyone's responsible!
Anatomy of an accessible carousel: everyone's responsible!
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript Accessible
 
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.
Open Web Camp 2014: On Fireproof, Future-Proof, Failure-Proof Things.
 
Strategic Approach to IT Accessibility
Strategic Approach to IT AccessibilityStrategic Approach to IT Accessibility
Strategic Approach to IT Accessibility
 
[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility
 
Accessible Video in The Enterprise
Accessible Video in The Enterprise Accessible Video in The Enterprise
Accessible Video in The Enterprise
 
Usability meets accessibility
Usability meets accessibilityUsability meets accessibility
Usability meets accessibility
 
HTML5 Accessibility - Is it ready yet?
HTML5 Accessibility - Is it ready yet?HTML5 Accessibility - Is it ready yet?
HTML5 Accessibility - Is it ready yet?
 
Getting Things Done for Technical Communicators
Getting Things Done for Technical CommunicatorsGetting Things Done for Technical Communicators
Getting Things Done for Technical Communicators
 
How To Build An Accessible Web Application
How To Build An Accessible Web ApplicationHow To Build An Accessible Web Application
How To Build An Accessible Web Application
 
Designing with Empathy [Reasons to be Creative 2013]
Designing with Empathy [Reasons to be Creative 2013]Designing with Empathy [Reasons to be Creative 2013]
Designing with Empathy [Reasons to be Creative 2013]
 
Responsible Design: Accountable Accessibility
Responsible Design: Accountable AccessibilityResponsible Design: Accountable Accessibility
Responsible Design: Accountable Accessibility
 
Teach your Browser new tricks
Teach your Browser new tricksTeach your Browser new tricks
Teach your Browser new tricks
 
AccessU 2011 Keynote
AccessU 2011 KeynoteAccessU 2011 Keynote
AccessU 2011 Keynote
 
Create Accessible Infographics
Create Accessible Infographics Create Accessible Infographics
Create Accessible Infographics
 
Introduction To Web Accessibility
Introduction To Web AccessibilityIntroduction To Web Accessibility
Introduction To Web Accessibility
 
A Web for Everyone: Accessibility as a design challenge
A Web for Everyone: Accessibility as a design challengeA Web for Everyone: Accessibility as a design challenge
A Web for Everyone: Accessibility as a design challenge
 
The 5 Layers of Web Accessibility
The 5 Layers of Web AccessibilityThe 5 Layers of Web Accessibility
The 5 Layers of Web Accessibility
 

Similar to How To Build An Accessible Web Application - a11yBos

Front end-design and best practices
Front end-design and best practicesFront end-design and best practices
Front end-design and best practicesMario Hernandez
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計傳錡 蕭
 
Creating Fixed-Layout EPUBs
Creating Fixed-Layout EPUBsCreating Fixed-Layout EPUBs
Creating Fixed-Layout EPUBsLaura Brady
 
What's a web page made of?
What's a web page made of?What's a web page made of?
What's a web page made of?Charlie Allen
 
WordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress WebappsWordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress Webappstjasko
 
The Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital CampThe Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital Campcanarymason
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform AppsFITC
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...eZ Systems
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish DatabaseGaetano Giunta
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewDiacode
 

Similar to How To Build An Accessible Web Application - a11yBos (20)

Html
HtmlHtml
Html
 
Html
HtmlHtml
Html
 
Front end-design and best practices
Front end-design and best practicesFront end-design and best practices
Front end-design and best practices
 
Color Me Flexible
Color Me FlexibleColor Me Flexible
Color Me Flexible
 
Efficient theming in Drupal
Efficient theming in DrupalEfficient theming in Drupal
Efficient theming in Drupal
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
 
Creating Fixed-Layout EPUBs
Creating Fixed-Layout EPUBsCreating Fixed-Layout EPUBs
Creating Fixed-Layout EPUBs
 
Cities: HTML5 Meetup 13 August 2013
Cities: HTML5 Meetup 13 August 2013Cities: HTML5 Meetup 13 August 2013
Cities: HTML5 Meetup 13 August 2013
 
Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3
 
What's a web page made of?
What's a web page made of?What's a web page made of?
What's a web page made of?
 
Dhtml ppt (2)
Dhtml ppt (2)Dhtml ppt (2)
Dhtml ppt (2)
 
WordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress WebappsWordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress Webapps
 
Cities: WordCamp Montreal 2013
Cities: WordCamp Montreal 2013Cities: WordCamp Montreal 2013
Cities: WordCamp Montreal 2013
 
Nanocon Taiwan
Nanocon TaiwanNanocon Taiwan
Nanocon Taiwan
 
The Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital CampThe Coding Designer's Survival Kit - Capital Camp
The Coding Designer's Survival Kit - Capital Camp
 
Drupal - Introduction to Drupal Template Design
Drupal - Introduction to Drupal Template DesignDrupal - Introduction to Drupal Template Design
Drupal - Introduction to Drupal Template Design
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform Apps
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish Database
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 

More from Dennis Lembree

SVG Icons and Screen Reader Accessibility
SVG Icons and Screen Reader AccessibilitySVG Icons and Screen Reader Accessibility
SVG Icons and Screen Reader AccessibilityDennis Lembree
 
Networking with Twitter, Part 2
Networking with Twitter, Part 2Networking with Twitter, Part 2
Networking with Twitter, Part 2Dennis Lembree
 
Networking with Twitter, Part 1
Networking with Twitter, Part 1Networking with Twitter, Part 1
Networking with Twitter, Part 1Dennis Lembree
 
Twitter and Web Accessibility (EASI Webinar)
Twitter and Web Accessibility (EASI Webinar)Twitter and Web Accessibility (EASI Webinar)
Twitter and Web Accessibility (EASI Webinar)Dennis Lembree
 
Accessible Twitter Update at CSUN11 Tweetup
Accessible Twitter Update at CSUN11 TweetupAccessible Twitter Update at CSUN11 Tweetup
Accessible Twitter Update at CSUN11 TweetupDennis Lembree
 
"Twitter and Web Accessibility" INDATA Conference 2010
"Twitter and Web Accessibility" INDATA Conference 2010"Twitter and Web Accessibility" INDATA Conference 2010
"Twitter and Web Accessibility" INDATA Conference 2010Dennis Lembree
 
Accessible Twitter CSUN Tweetup 2010
Accessible Twitter CSUN Tweetup 2010Accessible Twitter CSUN Tweetup 2010
Accessible Twitter CSUN Tweetup 2010Dennis Lembree
 
EASI Webinar: Twitter And Web Accessibility
EASI Webinar: Twitter And Web AccessibilityEASI Webinar: Twitter And Web Accessibility
EASI Webinar: Twitter And Web AccessibilityDennis Lembree
 
Twitter and Web Accessibility AHG 2009 Nov12
Twitter and Web Accessibility AHG 2009 Nov12Twitter and Web Accessibility AHG 2009 Nov12
Twitter and Web Accessibility AHG 2009 Nov12Dennis Lembree
 
Accessible Twitter at Open Web Camp
Accessible Twitter at Open Web CampAccessible Twitter at Open Web Camp
Accessible Twitter at Open Web CampDennis Lembree
 
Accessible Twitter : ACCESS-IT@Web 2.0
Accessible Twitter : ACCESS-IT@Web 2.0Accessible Twitter : ACCESS-IT@Web 2.0
Accessible Twitter : ACCESS-IT@Web 2.0Dennis Lembree
 

More from Dennis Lembree (11)

SVG Icons and Screen Reader Accessibility
SVG Icons and Screen Reader AccessibilitySVG Icons and Screen Reader Accessibility
SVG Icons and Screen Reader Accessibility
 
Networking with Twitter, Part 2
Networking with Twitter, Part 2Networking with Twitter, Part 2
Networking with Twitter, Part 2
 
Networking with Twitter, Part 1
Networking with Twitter, Part 1Networking with Twitter, Part 1
Networking with Twitter, Part 1
 
Twitter and Web Accessibility (EASI Webinar)
Twitter and Web Accessibility (EASI Webinar)Twitter and Web Accessibility (EASI Webinar)
Twitter and Web Accessibility (EASI Webinar)
 
Accessible Twitter Update at CSUN11 Tweetup
Accessible Twitter Update at CSUN11 TweetupAccessible Twitter Update at CSUN11 Tweetup
Accessible Twitter Update at CSUN11 Tweetup
 
"Twitter and Web Accessibility" INDATA Conference 2010
"Twitter and Web Accessibility" INDATA Conference 2010"Twitter and Web Accessibility" INDATA Conference 2010
"Twitter and Web Accessibility" INDATA Conference 2010
 
Accessible Twitter CSUN Tweetup 2010
Accessible Twitter CSUN Tweetup 2010Accessible Twitter CSUN Tweetup 2010
Accessible Twitter CSUN Tweetup 2010
 
EASI Webinar: Twitter And Web Accessibility
EASI Webinar: Twitter And Web AccessibilityEASI Webinar: Twitter And Web Accessibility
EASI Webinar: Twitter And Web Accessibility
 
Twitter and Web Accessibility AHG 2009 Nov12
Twitter and Web Accessibility AHG 2009 Nov12Twitter and Web Accessibility AHG 2009 Nov12
Twitter and Web Accessibility AHG 2009 Nov12
 
Accessible Twitter at Open Web Camp
Accessible Twitter at Open Web CampAccessible Twitter at Open Web Camp
Accessible Twitter at Open Web Camp
 
Accessible Twitter : ACCESS-IT@Web 2.0
Accessible Twitter : ACCESS-IT@Web 2.0Accessible Twitter : ACCESS-IT@Web 2.0
Accessible Twitter : ACCESS-IT@Web 2.0
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

How To Build An Accessible Web Application - a11yBos

  • 1. 1 How to Build an Accessible Web Application Presented by Dennis Lembrée #a11yBos | @a11y_bos September 15, 2012 @DennisL @WebAxe @EasyChirp
  • 2. 2 Agenda • About @DennisL • ARIA • Foundations • Writing • HTML • Tips ▫ Headings, images, • Results lists, forms, tables, • Other Resources title, more • Contact • CSS & Design • Questions • JavaScript @DennisL @WebAxe @EasyChirp
  • 3. 3 About @DennisL • Author of Easy Chirp. • Author of Web Axe. • Day job at PayPal. • Also worked for Ford, Google, Disney and a few start-ups. • Live in Cupertino, CA with wife and 2 boys. • I like drinking espresso, strumming guitar, and motorcycling to work. @DennisL @WebAxe @EasyChirp
  • 4. 4 Foundations 1. HTML 2. CSS & Design 3. JavaScript 4. ARIA 5. +CSS for JavaScript ▫ 5 Layers of Web Accessibility by Dirk Ginader @DennisL @WebAxe @EasyChirp
  • 5. 5 Foundations • Our example: Easy Chirp ▫ Web-accessible and standards-compliant Twitter web application. ▫ Recipient of the AFB 2011 Access Award. ▫ Recipient of the 2009 Access IT @web2.0 Award. ▫ RNIB featured website December 2011. @DennisL @WebAxe @EasyChirp
  • 6. 6 HTML • Semantics • Lists • Headings • Title • Images • Unobtrusive • Forms • HTML5 • Tables @DennisL @WebAxe @EasyChirp
  • 7. 7 HTML – Semantics • Semantics ▫ Accessibility ▫ Graceful degradation ▫ Future-proofing ▫ Easier to maintain (standard, consistency) ▫ SEO • Content Order = Source Order = Tab Order @DennisL @WebAxe @EasyChirp
  • 8. 8 HTML – Semantics cont. • POSH: Plain Ol’ Semantic HTML • KISS: Keep It Simple, Stupid @DennisL @WebAxe @EasyChirp
  • 9. 9 HTML – Semantics cont. • Validate. ▫ Important, but don’t go overboard. ▫ User experience is ultimate test. ▫ Tools  W3C Markup Validation Service  HTML Validator for Firefox @DennisL @WebAxe @EasyChirp
  • 10. 10 HTML – Semantics cont. • Test semantics, order. ▫ Turn off CSS. ▫ Check doc structure with toolbar. ▫ Check content order with toolbar. ▫ Text-only browser such as Lynx. ▫ Tab through. ▫ Run Fangs. @DennisL @WebAxe @EasyChirp
  • 11. 11 HTML – Semantics • “Naked” Easy Chirp @DennisL @WebAxe @EasyChirp
  • 12. 12 HTML – Headings • One H1, for now. • Brief, succinct text. • Nicely nested. • Ensure inclusion of all sections of content. ▫ Or balance with landmarks roles and aria-labels @DennisL @WebAxe @EasyChirp
  • 13. 13 HTML – Images • Provide alternative text for images. • If decorative, use alt=“” (but better to use CSS) • If content on page text, use alt=“” • If image linked, alt text should describe purpose of link. • Be accurate and succinct. • Don’t use phrases like “image of…” • Avoid text in images @DennisL @WebAxe @EasyChirp
  • 14. 14 HTML – Forms • Labels ▫ All form elements must have a label. ▫ Other methods such as title are not robust. <label for="firstname">First Name</label> <input name="firstname" id="firstname" type="text" /> @DennisL @WebAxe @EasyChirp
  • 15. 15 HTML – Forms cont. • Fieldsets ▫ Great for long forms and radio/checkbox groups. ▫ Screen readers will announce Legend text before each label text. <fieldset> <legend>Name</legend> <label for="firstname">First Name</label> <input name="firstname" id="firstname" type="text" /> <label for="lastname">Last Name</label> <input name="lastname" id="lastname" type="text" /> </fieldset> @DennisL @WebAxe @EasyChirp
  • 16. 16 HTML – Forms cont. • Placeholder attribute is not an input label! ▫ May not be supported. ▫ Disappears when entering text. ▫ Placeholder is meant for hint/sample input; not an elements name/label. ▫ Must not be required information. ▫ This technique is trendy. ▫ More: Placeholder is not a label! @DennisL @WebAxe @EasyChirp
  • 18. 18 HTML – Tables • Provide caption (title of table). • The summary attribute is no longer suggested. ▫ Original purpose of summary, define structure of table, no longer needed as AT does this. ▫ Obsolete in HTML5. ▫ Difficult to maintain. ▫ Instead use aria-describedby with P. @DennisL @WebAxe @EasyChirp
  • 19. 19 HTML – Tables • TH with scope for table header cells. ▫ Use for col and row. • Avoid complex data tables if possible. ▫ If necessary, use id and headers attributes. @DennisL @WebAxe @EasyChirp
  • 20. 20 HTML – Tables @DennisL @WebAxe @EasyChirp
  • 21. 21 HTML – Lists • Use list a element (ol/ul/dl) for lists. • Do: ▫ <ol> <li>First item here</li> </ol> • Do not: ▫ <div>1. &nbsp; First item here</div> @DennisL @WebAxe @EasyChirp
  • 22. 22 HTML – Title attribute • No keyboard support (silly browser vendors!) • No mouseover support on touch/mobile • Supplementary information only • Use sparingly • DO NOT create redundant titles on links • PS: Title is not a label either! @DennisL @WebAxe @EasyChirp
  • 24. 24 HTML – Unobtrusive • Put CSS & JavaScript in external files as much as possible. • Load CSS at top; JavaScript at the bottom. ▫ Except libraries like Modernizr @DennisL @WebAxe @EasyChirp
  • 25. 25 HTML5 • HTML5 ▫ More native power ▫ Lighter code ▫ Good support on mobile ▫ Exciting • Currently browser and accessibility/AT issues ▫ http://html5accessibility.com/ • Use carefully and with fallbacks. @DennisL @WebAxe @EasyChirp
  • 26. 26 HTML5 • required and aria=required • alt optional with figure/figcaption • aria-describedby vs longdesc ▫ My 2-part article Longdesc & Other Long Image Description Solutions @DennisL @WebAxe @EasyChirp
  • 27. 27 CSS & Design • Consistent layout & navigation • Display account name/info • Opportunity to logout • Provide search @DennisL @WebAxe @EasyChirp
  • 28. 28 CSS & Design • Relative sizing • Flexible width • Adaptive layout ▫ For different screen resolutions ▫ For different devices ▫ Responsive Web Design (ALA)  media query • Next slide: Easy Chirp at 1024 x 768, 200% @DennisL @WebAxe @EasyChirp
  • 30. 30 CSS & Design • Sufficient text size. ▫ 16 PIXELS For Body Copy. Anything Less Is A Costly Mistake. • Make links focusable and visually clear. ▫ Use :focus with :hover ▫ Don’t remove the link underline in body copy. ▫ Never do a:focus { outline: 0; } outlinenone.com @DennisL @WebAxe @EasyChirp
  • 31. 31 CSS & Design • Easy Chirp’s links are keyboard accessible. ▫ And have clear visual focus. @DennisL @WebAxe @EasyChirp
  • 32. 32 CSS & Design • Colors ▫ Not for meaning alone.  Also use shapes as well as textual content. ▫ Provide sufficient contrast.  Contrast Rebellion @DennisL @WebAxe @EasyChirp
  • 34. 34 CSS & Design • Hide content with discretion. ▫ Labeling a form element that has meaning conveyed visually (search input). ▫ Providing headings where related content has meaning conveyed visually, but not otherwise, such as a menu.  Or balance with landmarks roles and aria-labels ​   ▫ “skip-to” links(should be focusable and viewable for sighted keyboard users) ▫ Instructions in special cases where interaction may be confusing to users of assistive technology. ▫ When and How to Visually Hide Content @DennisL @WebAxe @EasyChirp
  • 35. 35 JavaScript • Progressive Enhancement, Unobtrusive • Libraries ▫ YUI3 ▫ jQuery, jQueryUI  Still a work in progress.  jQuery UI Accessibility Review by Everett Zufelt. • Hijax (Jeremy Keith, 2006). ▫ Develop server-side first. ▫ Then “hijack” and enhance behavior with JS. @DennisL @WebAxe @EasyChirp
  • 37. 37 JavaScript • focus() ▫ Managing focus is essential for accessibility as well as usability. • tabindex ▫ tabindex=0 makes element tabbable ▫ tabindex=-1 makes element tabbable only with JavaScript ▫ Don’t use otherwise. @DennisL @WebAxe @EasyChirp
  • 38. 38 JavaScript @DennisL @WebAxe @EasyChirp
  • 39. 39 JavaScript @DennisL @WebAxe @EasyChirp
  • 40. 40 JavaScript • Device Independence • Handlers: ▫ If you use the onMouseOver and onMouseOut JavaScript handlers, you must also use onFocus and onBlur. ▫ Do not use the double-click handler onDblClick. @DennisL @WebAxe @EasyChirp
  • 41. 41 ARIA • Accessible Rich Internet Applications (WAI- ARIA) 1.0 http://www.w3.org/TR/wai-aria/ ▫ Landmark Roles ▫ States and Properties ▫ Live Regions • Attributes that define user interface elements to improve the accessibility and interoperability of web content and applications. @DennisL @WebAxe @EasyChirp
  • 42. 42 ARIA - Landmark Roles • ARIA role attribute (HTML5 element): ▫ banner (page header) ▫ complementary (aside) ▫ contentinfo (page footer) ▫ main (div) ▫ navigation (nav) ▫ search (div or form) ▫ form, application [rare] @DennisL @WebAxe @EasyChirp
  • 43. 43 ARIA - Landmark Roles role=“banner” role=“navigation” role=“main” role=“complementary” role=“search” role=“contentinfo” @DennisL @WebAxe @EasyChirp
  • 44. 44 ARIA - States and Properties • aria-describedby (property) ▫ Like longdesc but on page. • aria-labelledby (property) ▫ Like form label. • aria-checked (state) ▫ Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. • aria-required (property) ▫ Like HTML5 required. @DennisL @WebAxe @EasyChirp
  • 45. 45 ARIA - States and Properties • aria-expanded (state) ▫ Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed (boolean). • aria-valuemax, aria-valuemin (properties) ▫ Defines the minimum and maximum values for a range widget. @DennisL @WebAxe @EasyChirp
  • 46. 46 ARIA – Live Regions • aria-live (property) ▫ off, polite, assertive • aria-busy (state) • aria-atomic (property) • aria-relevant (property) • Great for Ajax! @DennisL @WebAxe @EasyChirp
  • 47. 47 ARIA – Live Regions @DennisL @WebAxe @EasyChirp
  • 48. 48 ARIA – Live Regions • More Ajax tips: ▫ Show that something’s happening such as displaying a ‘spinner’. ▫ Show yellow flash for visual indication of change. ▫ JSON is easy and light. ▫ Returning HTML can save a step. ▫ Plan from beginning, implement at the end. @DennisL @WebAxe @EasyChirp
  • 49. 49 Writing • Page title (unique) • Headings • Descriptive link text (meaningful on own) • Abbreviations ▫ Best to spell out in full at least once per page. ▫ Use abbr element; acronym deprecated. @DennisL @WebAxe @EasyChirp
  • 50. 50 Writing cont. • Alternative text • Transcriptions, captions • Legends and Labels (brief and succinct) • Define language (page level and inline) @DennisL @WebAxe @EasyChirp
  • 51. 51 Tips • Plan accessibility from the very start. • Small file sizes (low-band, mobile). • NVDA is free. • Error handling is important. • Screen readers use JavaScript. • Warn user when linking to anything other than an HTML page. • Test often on different browsers and devices. @DennisL @WebAxe @EasyChirp
  • 52. 52 Results • Easy Chirp works with ▫ All operating systems ▫ All major browsers ▫ No JavaScript, no CSS ▫ Variety of mobile devices and tablets ▫ Screen readers ▫ Text-only (Lynx) ▫ Kindle ▫ Low-band connections @DennisL @WebAxe @EasyChirp
  • 53. 53 Konquerer (Linux) Results • Robust Kindle (first release) IE6 @DennisL @WebAxe @EasyChirp
  • 54. 54 Results • More usable. • Better functionality with assistive technology such as screen readers & Braille output devices. • Keyboard accessibility opens gate for many other types of input devices. • Future proof with web standards. • Providing clear, consistent content and navigation benefits those with cognitive impairments (and is more usable in general). • Use with a mobile device is possible. @DennisL @WebAxe @EasyChirp
  • 55. 55 Other Resources • Companies: ▫ WebAIM, Yahoo, IBM, Adobe, Nomensa, Knowbility, Deque Systems, Paciello Group • People: too many to name, check Twitter! ▫ Hash tags such as #a11y ▫ Twitter lists • Not a tweep? Try: Facebook.com/WebAxe • 25 Ways To Make Your Site More Accessible • Attend events (like this one!) @DennisL @WebAxe @EasyChirp
  • 56. 56 Contact • Web Sites ▫ www.EasyChirp.com ▫ WebAxe.blogspot.com ▫ www.DennisLembree.com • Twitter Accounts ▫ @EasyChirp ▫ @WebAxe ▫ @DennisL • SlideShare ▫ www.slideshare.net/webaxe/presentations @DennisL @WebAxe @EasyChirp
  • 57. 57 Questions? @DennisL @WebAxe @EasyChirp

Editor's Notes

  1. http://a11y-bos.org/
  2. http://www.slideshare.net/ginader/the-5-layers-of-web-accessibility
  3. http://validator.w3.org/ https://addons.mozilla.org/en-US/firefox/addon/html-validator/
  4. http://validator.w3.org/ https://addons.mozilla.org/en-US/firefox/addon/html-validator/
  5. For long fieldsets: &lt;p id=&quot;question&quot;&gt;Fieldset legends may not...&lt;/p&gt; &lt;div role=&quot;radiogroup&quot; aria-labelledby=&quot;question&quot;&gt; &lt;input…&gt;&lt;label…&gt; &lt;/div&gt;
  6. http://webaxe.blogspot.com/2012/06/placeholder-attribute-is-not-label.html
  7. http://html5accessibility.com/
  8. http://dev.w3.org/html5/alt-techniques/#m6 http://designfestival.com/longdesc-and-other-long-image-description-solutions-part-1-the-issues/
  9. http://browsershots.org/ http://www.alistapart.com/articles/responsive-web-design/
  10. http://www.smashingmagazine.com/2011/10/07/16-pixels-body-copy-anything-less-costly-mistake/ http://outlinenone.com/
  11. Text links remain. And sufficient text size.
  12. http://contrastrebellion.com/
  13. http://designfestival.com/when-and-how-to-visually-hide-content/
  14. http://yuilibrary.com/ http://zufelt.ca/blog/jquery-ui-accessibility-review-wrapup http://domscripting.com/presentations/xtech2006/
  15. Focus() is your friend!
  16. http://www.w3.org/TR/wai-aria/
  17. http://www.html5accessibility.com/tests/landmarks.html
  18. You can add aria-label to differentiate multiple landmarks of the same type: &lt;div role=&quot;navigation&quot; aria-label=&quot;Main navigation&quot;&gt;
  19. http://www.w3.org/TR/wai-aria/states_and_properties#aria-live
  20. Any browser-based user-agent!
  21. http://sarahebourne.posterous.com/accessible-twitter-on-the-kindle
  22. https://twitter.com/i/#!/search/%23a11y https://twitter.com/webaxe/web-accessibility-3 http://www.webhostingsearch.com/articles/25-ways-to-make-your-site-more-accessible.php