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
 
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
 
Wp nhcc portfolio
Wp nhcc portfolioWp nhcc portfolio
Wp nhcc portfolio
gregorvios
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
Peter Kaizer
 
Intro to HTML5 & CSS3
Intro to HTML5 & CSS3Intro to HTML5 & CSS3
Intro to HTML5 & CSS3
tibbon
 

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

[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility
Christopher Schmitt
 
Introduction To Web Accessibility
Introduction To Web AccessibilityIntroduction To Web Accessibility
Introduction To Web Accessibility
Steven Swafford
 

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

網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
傳錡 蕭
 
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
canarymason
 

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

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

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

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