際際滷

際際滷Share a Scribd company logo
Keyboard  accessibility BASIC STEPS TOWARDS A MORE USABLE AND ACCESSIBLE SITE Patrick H. Lauke / Future of Web Design Tour / Glasgow / 14 September 2009
accessibility  = blind users + screenreaders?
difficult to test  need to install and learn  screenreader
many different forms of disability
keyboard or keyboard-like interfaces
easiest to testno special software required
油
油
by default users  TAB
油
using keyboard, move from one focusable element to the next
standard focusable elements: links ,  form elements ,  image map areas
油
油
油
油
油
dont forget the  fancy styling
油
a.action :hover  { background-color:#a82310; color:#fff !important; text-decoration:none; } #promo-dvd .content a :hover  img { background-color:#d5c7ae; }
a :focus , a :hover , a :active  {  }
dont suppress  outline !
油
keyboard accessible, but where am I?
/* =Reset Styles -  Thank you Eric Meyer  ( http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ ) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; } :focus  { outline: 0; }
/* remember to define focus styles! */
why do designers suppress outline?
油
 get your outline out of my design!  is there a  compromise ?
油
油
a {   overflow: hidden ;  }
油
 only suppress it on  :active
TAB  cycle  normally just  source order
tabindex  forces a certain  TAB  cycle
anything with  tabindex  takes precedence
油
<input type=&quot;text&quot; name=&quot;author&quot; tabindex=&quot;1&quot;  /> <input type=&quot;text&quot; name=&quot;email&quot; tabindex=&quot;2&quot;  /> <input type=&quot;text&quot; name=&quot;url&quot; tabindex=&quot;3&quot;  /> <textarea name=&quot;comment&quot; tabindex=&quot;4&quot; ></textarea>
easy enoughlets drop in some JavaScript
油
油
keyboard accessible, but  wheres the extra information ?
$('#whatever') .hover ( function() {}, function() {} );
$('#whatever') .hover ( function() {}, function() {} ); $('#whatever') .focus (function() {}); $('#whatever') .blur (function() {} );
aside:  mobile browsers  dont do hover  (well)
lightboxes we love e馨
油
close it again on  TAB dont invent new keyboard shortcuts
more complex solution:  manage focus
and now, the dangerous part
JavaScript attaches behaviour to  anything
$(' div ') .click (function() {} );
sexy tutorials out there doing it wrong
油
be lazy use libraries that solved this YUI, jQueryUI, etc
beware  3 rd  party solutions even the big boys can get it wrong
油
油
油
hijack generated markup to  accessify  it
in conclusion
if you style  :hover , also  :focus  and  :active
dont suppress  outline  completely (reintroduce  :focus  and suppress  :active )
leave  tabindex  alone  source order
JavaScript on  hover  (mouseover/mouseout) also on  focus / blur (if focusable element)
lightboxes  and their problems
only attach behaviour to  focusable elements
</ rant >
www.opera.com/developer [email_address]

More Related Content

Similar to keyboard accessibility (20)

Keyboard accessibility - basic steps towards a more usable and accessible sit...
Keyboard accessibility - basic steps towards a more usable and accessible sit...Keyboard accessibility - basic steps towards a more usable and accessible sit...
Keyboard accessibility - basic steps towards a more usable and accessible sit...
Patrick Lauke
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Patrick Lauke
The Pointerless Web
The Pointerless WebThe Pointerless Web
The Pointerless Web
Nicholas Zakas
Open and Accessible UI
Open and Accessible UIOpen and Accessible UI
Open and Accessible UI
Mark Meeker
Fringe Accessibility: London Web Standards
Fringe Accessibility: London Web StandardsFringe Accessibility: London Web Standards
Fringe Accessibility: London Web Standards
Adrian Roselli
Fringe Accessibility - Guelph Accessibility Conference
Fringe Accessibility - Guelph Accessibility ConferenceFringe Accessibility - Guelph Accessibility Conference
Fringe Accessibility - Guelph Accessibility Conference
Adrian Roselli
Fringe Accessibility: A11y Camp Toronto 2015
Fringe Accessibility: A11y Camp Toronto 2015Fringe Accessibility: A11y Camp Toronto 2015
Fringe Accessibility: A11y Camp Toronto 2015
Adrian Roselli
the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp II
Dirk Ginader
Fringe Accessibility: ID24 for GAAD
Fringe Accessibility: ID24 for GAADFringe Accessibility: ID24 for GAAD
Fringe Accessibility: ID24 for GAAD
Adrian Roselli
10 tips in 10 minutes - DevTO Sept 30, 2013
10 tips in 10 minutes - DevTO Sept 30, 201310 tips in 10 minutes - DevTO Sept 30, 2013
10 tips in 10 minutes - DevTO Sept 30, 2013
Billy Gregory
Abstractions: Fringe Accessibility
Abstractions: Fringe AccessibilityAbstractions: Fringe Accessibility
Abstractions: Fringe Accessibility
Adrian Roselli
a11yTO - Web Accessibility for Developers
a11yTO - Web Accessibility for Developersa11yTO - Web Accessibility for Developers
a11yTO - Web Accessibility for Developers
Monika Piotrowicz
Building An Accessible Site from the Ground Up
Building An Accessible Site from the Ground UpBuilding An Accessible Site from the Ground Up
Building An Accessible Site from the Ground Up
Russell Heimlich
The road to professional web development
The road to professional web developmentThe road to professional web development
The road to professional web development
Christian Heilmann
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and Accessibiity
Mark Meeker
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Jared Smith
Accessibility with Single Page Apps
Accessibility with Single Page AppsAccessibility with Single Page Apps
Accessibility with Single Page Apps
Ross Mullen
How Accessibility Made Me a Better Developer
How Accessibility Made Me a Better DeveloperHow Accessibility Made Me a Better Developer
How Accessibility Made Me a Better Developer
Billy Gregory
Web accessibility
Web accessibilityWeb accessibility
Web accessibility
Afif Alfiano
Fringe Accessibility Portland UX
Fringe Accessibility  Portland UXFringe Accessibility  Portland UX
Fringe Accessibility Portland UX
Adrian Roselli
Keyboard accessibility - basic steps towards a more usable and accessible sit...
Keyboard accessibility - basic steps towards a more usable and accessible sit...Keyboard accessibility - basic steps towards a more usable and accessible sit...
Keyboard accessibility - basic steps towards a more usable and accessible sit...
Patrick Lauke
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Keyboard accessibility - just because I don't use a mouse doesn't mean I'm se...
Patrick Lauke
The Pointerless Web
The Pointerless WebThe Pointerless Web
The Pointerless Web
Nicholas Zakas
Open and Accessible UI
Open and Accessible UIOpen and Accessible UI
Open and Accessible UI
Mark Meeker
Fringe Accessibility: London Web Standards
Fringe Accessibility: London Web StandardsFringe Accessibility: London Web Standards
Fringe Accessibility: London Web Standards
Adrian Roselli
Fringe Accessibility - Guelph Accessibility Conference
Fringe Accessibility - Guelph Accessibility ConferenceFringe Accessibility - Guelph Accessibility Conference
Fringe Accessibility - Guelph Accessibility Conference
Adrian Roselli
Fringe Accessibility: A11y Camp Toronto 2015
Fringe Accessibility: A11y Camp Toronto 2015Fringe Accessibility: A11y Camp Toronto 2015
Fringe Accessibility: A11y Camp Toronto 2015
Adrian Roselli
the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp II
Dirk Ginader
Fringe Accessibility: ID24 for GAAD
Fringe Accessibility: ID24 for GAADFringe Accessibility: ID24 for GAAD
Fringe Accessibility: ID24 for GAAD
Adrian Roselli
10 tips in 10 minutes - DevTO Sept 30, 2013
10 tips in 10 minutes - DevTO Sept 30, 201310 tips in 10 minutes - DevTO Sept 30, 2013
10 tips in 10 minutes - DevTO Sept 30, 2013
Billy Gregory
Abstractions: Fringe Accessibility
Abstractions: Fringe AccessibilityAbstractions: Fringe Accessibility
Abstractions: Fringe Accessibility
Adrian Roselli
a11yTO - Web Accessibility for Developers
a11yTO - Web Accessibility for Developersa11yTO - Web Accessibility for Developers
a11yTO - Web Accessibility for Developers
Monika Piotrowicz
Building An Accessible Site from the Ground Up
Building An Accessible Site from the Ground UpBuilding An Accessible Site from the Ground Up
Building An Accessible Site from the Ground Up
Russell Heimlich
The road to professional web development
The road to professional web developmentThe road to professional web development
The road to professional web development
Christian Heilmann
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and Accessibiity
Mark Meeker
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)Web Accessibility Gone Wild (Now Even MORE Wilder!)
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Jared Smith
Accessibility with Single Page Apps
Accessibility with Single Page AppsAccessibility with Single Page Apps
Accessibility with Single Page Apps
Ross Mullen
How Accessibility Made Me a Better Developer
How Accessibility Made Me a Better DeveloperHow Accessibility Made Me a Better Developer
How Accessibility Made Me a Better Developer
Billy Gregory
Web accessibility
Web accessibilityWeb accessibility
Web accessibility
Afif Alfiano
Fringe Accessibility Portland UX
Fringe Accessibility  Portland UXFringe Accessibility  Portland UX
Fringe Accessibility Portland UX
Adrian Roselli

Recently uploaded (20)

Whats New in Web3 Development Trends to Watch in 2025.pptx
Whats New in Web3 Development Trends to Watch in 2025.pptxWhats New in Web3 Development Trends to Watch in 2025.pptx
Whats New in Web3 Development Trends to Watch in 2025.pptx
Lisa ward
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Lorenzo Miniero
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptxFrom Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
Mohammad Jomaa
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
Gihbli AI and Geo sitution |use/misuse of Ai Technology
Gihbli AI and Geo sitution |use/misuse of Ai TechnologyGihbli AI and Geo sitution |use/misuse of Ai Technology
Gihbli AI and Geo sitution |use/misuse of Ai Technology
zainkhurram1111
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AISAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
Peter Spielvogel
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
Introducing Ensemble Cloudlet vRouter
Introducing Ensemble  Cloudlet vRouterIntroducing Ensemble  Cloudlet vRouter
Introducing Ensemble Cloudlet vRouter
Adtran
Offshore IT Support: Balancing In-House and Offshore Help Desk Technicians
Offshore IT Support: Balancing In-House and Offshore Help Desk TechniciansOffshore IT Support: Balancing In-House and Offshore Help Desk Technicians
Offshore IT Support: Balancing In-House and Offshore Help Desk Technicians
john823664
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCPMCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
Sambhav Kothari
John Carmacks 際際滷s From His Upper Bound 2025 Talk
John Carmacks 際際滷s From His Upper Bound 2025 TalkJohn Carmacks 際際滷s From His Upper Bound 2025 Talk
John Carmacks 際際滷s From His Upper Bound 2025 Talk
Razin Mustafiz
European Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility TestingEuropean Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility Testing
Julia Undeutsch
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
Build your own NES Emulator... with Kotlin
Build your own NES Emulator... with KotlinBuild your own NES Emulator... with Kotlin
Build your own NES Emulator... with Kotlin
Artur Skowroski
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AIAI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
Buhake Sindi
John Carmacks Notes From His Upper Bound 2025 Talk
John Carmacks Notes From His Upper Bound 2025 TalkJohn Carmacks Notes From His Upper Bound 2025 Talk
John Carmacks Notes From His Upper Bound 2025 Talk
Razin Mustafiz
Whats New in Web3 Development Trends to Watch in 2025.pptx
Whats New in Web3 Development Trends to Watch in 2025.pptxWhats New in Web3 Development Trends to Watch in 2025.pptx
Whats New in Web3 Development Trends to Watch in 2025.pptx
Lisa ward
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
Lorenzo Miniero
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptxFrom Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
From Legacy to Cloud-Native: A Guide to AWS Modernization.pptx
Mohammad Jomaa
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
Gihbli AI and Geo sitution |use/misuse of Ai Technology
Gihbli AI and Geo sitution |use/misuse of Ai TechnologyGihbli AI and Geo sitution |use/misuse of Ai Technology
Gihbli AI and Geo sitution |use/misuse of Ai Technology
zainkhurram1111
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AISAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AI
Peter Spielvogel
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
Droidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing HealthcareDroidal: AI Agents Revolutionizing Healthcare
Droidal: AI Agents Revolutionizing Healthcare
Droidal LLC
cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
Introducing Ensemble Cloudlet vRouter
Introducing Ensemble  Cloudlet vRouterIntroducing Ensemble  Cloudlet vRouter
Introducing Ensemble Cloudlet vRouter
Adtran
Offshore IT Support: Balancing In-House and Offshore Help Desk Technicians
Offshore IT Support: Balancing In-House and Offshore Help Desk TechniciansOffshore IT Support: Balancing In-House and Offshore Help Desk Technicians
Offshore IT Support: Balancing In-House and Offshore Help Desk Technicians
john823664
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCPMCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
MCP Dev Summit - Pragmatic Scaling of Enterprise GenAI with MCP
Sambhav Kothari
John Carmacks 際際滷s From His Upper Bound 2025 Talk
John Carmacks 際際滷s From His Upper Bound 2025 TalkJohn Carmacks 際際滷s From His Upper Bound 2025 Talk
John Carmacks 際際滷s From His Upper Bound 2025 Talk
Razin Mustafiz
European Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility TestingEuropean Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility Testing
Julia Undeutsch
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
Build your own NES Emulator... with Kotlin
Build your own NES Emulator... with KotlinBuild your own NES Emulator... with Kotlin
Build your own NES Emulator... with Kotlin
Artur Skowroski
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AIAI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
Buhake Sindi
John Carmacks Notes From His Upper Bound 2025 Talk
John Carmacks Notes From His Upper Bound 2025 TalkJohn Carmacks Notes From His Upper Bound 2025 Talk
John Carmacks Notes From His Upper Bound 2025 Talk
Razin Mustafiz

keyboard accessibility

Editor's Notes

  • #8: If youre using OS X, make sure you enable full keyboard access for all controls in your system preferences under Keyboard &amp; Mouse settings.
  • #9: In Safari (both in OS X and Windows) you need to also explicitly set Press Tab to highlight each item on a webpage) in your Advanced preferences.
  • #11: Opera has a slightly different keyboard control scheme instead of using TAB, you use CTRL + cursor arrows up/down to move to the previous/next link. There is also a different mode, Spatial Navigation, which behaves very differently and is beyond the scope of this presentation (mainly as it actually behaves more like a mouse, thus removing all requirements outlined in this presentationbut we dont advocate designing just for Opera, of course).
  • #14: IEs link outline is the classic dotted line. The colour of this line seems to depend on the background colour(s) used.
  • #15: Firefox uses the dotted outline the colour matches the link colour set for the focused link.
  • #16: Safari uses a large blue box around the link.
  • #17: Google Chrome uses an orange-ish box around links to highlight them.
  • #18: Opera uses both a blue box and highlights the text of the link with its default selection colour.
  • #20: Andys for a beautiful web site is nicely keyboard accessible. A few details mainly eye candy only appear when using a mouse, however: the sign up buttons change colour and the DVD boxes get a lighter outline on hover.
  • #24: Pauls boagworld suppresses any outline completely, making it impossible to know where a keyboard user is within the page. The problem is exacerbated in browsers that either dont have a status bar (such as Google Chrome) or which for some reason dont show the link target when using the keyboard (Safari).
  • #27: Many people using Erics reset.css seem to overlook (or simply ignore) this little warning in the original code
  • #29: Carsonified.com is beautifully art-directed and designed, with lots of image replacement. Again, because of Eric Meyers reset.css, outlines and :focus styles are completely suppressed though.
  • #31: Carsonified makes extensive use of image replacement. Forcing the focus outline to be visible shows that, in one instance the Follow us on Twitter button the outline betrays the off-left CSS image replacement that was used, by going off to the left of the windowan ugly effect that designers just wont stand for!
  • #32: An intial quick fix to Carsonified would be to add overflow:hidden to the twitter button. Now, at least, the outline remains contained around the image-replaced link and doesnt go off to the left of the page.
  • #34: Being a boring pedant, I tried all sorts of variations (removing outline altogether, reintroducing it on focus, removing it again on active, etc) to try and find an acceptable solution that lets keyboard users still see the outline, but that doesnt trigger the outline when users click on image-replaced links.
  • #39: The default Wordpress themes comment form has tabindices on all fields. No matter how many links there are on the page or in the actual blog post, a keyboard user coming to the page and hitting TAB for the first time is bounced straight to the comment formnot very useful if they havent even read the blog post yet!
  • #42: jQuerys homepage has three links in its central section, which all have informative fancy tooltips springing up on mouse hover. These tooltips give information not immediately available on the page. Sadly, they dont come up for keyboard users.
  • #43: Pauls boagworld againthis time, we look at the latest shows section on the right. Moving the mouse over each show expand boagworlds magic hover accordion thing to present the shows synopsis. This makes people seasick, including myselfbut it only triggers on mouseover. Why not make keyboard users just as sick and give them the same information immediately?
  • #49: Lokesh Dhakars Lightbox JS is one of the first lightbox scripts I remember coming across many years ago. It works fine via keyboard TAB to the thumbnail, activate it, and the lightbox appears. Now, TAB againthe lightbox remains on screen, and youre tabbing behind the dimmed background layer. The lightbox does say press X to close, but this isnt immediately helpful. If its already listening out for X why not also listen out for TAB?
  • #51: Particularly important if youre using a thickbox, i.e. a lightbox that contains more than just an image and some text. Use JavaScript to place the focus inside the box, so keyboard users can get to the thickboxs content (links etc). When they close the box, programmatically focus them back on the link/thumbnail that activated the box in the first place (closures?)
  • #56: WebDesignerWalls jQuery tutorials for designers are really great. The whole site sports a beautiful design, so Im not slagging it. However, the examples it shows are of the worst kind: buttons, accordions, etc all feature &lt;div&gt; elements and such with onclick behaviourscompletely keyboard inaccessible.
  • #60: A look under the hood of the markup that Google Maps spits out shows that the controls are nothing more than one big image with invisible &lt;div&gt; elements placed over it, all with onclick behaviours to face actual buttons. Why does Google not simply generate &lt;button&gt; elements, as would be semantically appropriate and keyboard accessible?
  • #61: My Dev.Opera article shows how in a kludged way the Google Maps markup can be hijacked and the &lt;div&gt; elements replaced with actual &lt;button&gt; elements. Note that since the article was published, Google seem to have further modified their markup, breaking one aspect of my interim solutionone more reason why we should really lobby Google to actually fix the problem at source.