SlideShare uma empresa Scribd logo
1 de 48
Nothing Hard Baked
Designing the Inclusive Web




                               Colin Clark
                              fluidproject.org
Me, quickly
!"#$

Decapod
What is accessibility?
Rethinking Disability
Rethinking Disability
Rethinking Disability

   A mismatch between the
     user
   and the
     user interface
Disability is a usability issue
Disability is contextual
Designing for Context
Disability is environmental
Accessibility is...


      the ability of the system
to accommodate the needs of the user
Accessibility is...
Accessibility is...




Something we all benefit from.
Accessible
systems are...

  • Flexible
  • Separable
  • Modifiable
“I can’t even imagine what a better UI for
me would look like, because I’ve spent
the past 13 years of my life adapting to
the computer.”
          - Johnny Taylor, unboundedexistence.com
(assistive technology)
Opaque Markup
<!-- This is a Tabs widget.               -->
<!-- How would you know, looking only at the markup? -->

<ol>
  <li id="ch1Tab">
     <a href="#ch1Panel">Chapter 1</a>
  </li>
  <li id="ch2Tab">
     <a href="#ch2Panel">Chapter 2</a>
  </li>
  <li id="quizTab">
     <a href="#quizPanel">Quiz</a>
  </li>
</ol>
<div>
  <div id="ch1Panel">Chapter 1 Stuff</div>
  <div id=”ch2Panel”>Chapter 2 Stuff</div>
  <div id=”quizPanel”>Quiz Stuff</div>
</div>
Opaque Markup: Tabs
ARIA fills the gap
Roles, States, Properties

• Roles describe widgets not present in HTML 4
      slider, menubar, tab, dialog

• Properties describe characteristics:
      draggable, hasPopup, required

• States describe what’s happening:
      busy, disabled, selected, hidden
Using ARIA
<!-- Now *these* are Tabs! -->
<ol role=”tablist”>
 <li id=”ch1Tab” role=”tab”>
  <a href="#ch1Panel">Chapter 1</a>
 </li>
 <li id=”ch2Tab” role=”tab”>
  <a href="#ch2Panel">Chapter 2</a>
 </li>
 <li id=”quizTab” role=”tab”>
  <a href="#quizPanel">Quiz</a>
 </li>
</ol>
<div>
 <div id="ch1Panel" role=”tabpanel”
     aria-labelledby=”ch1Tab”>Chapter 1 Stuff</div>
 <div id=”ch2Panel” role=”tabpanel”
     aria-labelledby=”ch2Tab”>Chapter 2 Stuff</div>
 <div id=”quizPanel” role=”tabpanel”
     aria-labelledby=”quizTab”>Quiz Stuff</div>
</div>
Adding ARIA in code
// Identify the container as a list of tabs.
tabContainer.attr("role", "tablist");

// Give each tab the "tab" role.
tabs.attr("role", "tab");

// Give each panel the appropriate role,          panels.attr("role",
"tabpanel");
panels.each(function (idx, panel) {
   var tabForPanel = that.tabs.eq(idx);
   // Relate the panel to the tab that labels it.
   $(panel).attr("aria-labelledby", tabForPanel[0].id);
});
The Problem with Roles




Assistive technologies see the world like this...
The Problem with Roles




  ...or like this, if you’re so inclined
The Problem with Roles




... but the Web is driving new kinds of user interfaces
The Problem with Roles




... but the Web is driving new kinds of user interfaces
The Problem with Roles




     ... even on the desktop
The Problem with Roles
Inline Edit Roles


Button?
Inline Edit Roles


            Text Field?
Inline Edit Roles


Button?
               Text Field?
Inline Edit Behaviours
   Read-only




  Activatable        Editable




          Undoable
What about affordances?
Assistive technology
      is a hack
Accessible
systems are...

  • Flexible
  • Separable
  • Modifiable
Open Architecture:
      Unlock your markup
      Let developers and users in
      A widget isn’t just one thing
      Question the rules




No Black Boxes
Markup example: Dojo

<div class="dijitDialog" tabindex="-1" waiRole="dialog" waiState="labelledby-
${id}_title">

    <div dojoAttachPoint="titleBar" class="dijitDialogTitleBar">

    <span dojoAttachPoint="titleNode" class="dijitDialogTitle" id="$
{id}_title"></span>

    <span dojoAttachPoint="closeButtonNode" class="dijitDialogCloseIcon"
dojoAttachEvent="onclick: onCancel, onmouseenter: _onCloseEnter,
onmouseleave: _onCloseLeave" title="${buttonCancel}">

    
    <span dojoAttachPoint="closeText" class="closeText" title="$
{buttonCancel}">x</span>

    </span>

    </div>

    
    <div dojoAttachPoint="containerNode"
class="dijitDialogPaneContent"></div>
</div>
Markup example: jQuery UI
Markup agnosticism: Infusion
                         fluid.defaults("fluid.fileQueueView", {
                           selectors: {
                            fileRows: ".flc-uploader-file",
                            fileName: ".flc-uploader-file-name",
                            fileSize: ".flc-uploader-file-size",
                            fileIconBtn: ".flc-uploader-file-action",
                            errorText: ".flc-uploader-file-error"
                         }




    <table summary="The list of files">
     <tbody>
      <tr class="flc-uploader-file">
       <td class="flc-uploader-file-name”>File Name</td>
       <td class="flc-uploader-file-size”>0 KB</td>
      </tr>
     </tbody>
    </table>
Markup agnosticism: Infusion
                         fluid.defaults("fluid.fileQueueView", {
                           selectors: {
                            fileRows: ".flc-uploader-file",
                            fileName: ".flc-uploader-file-name",
                            fileSize: ".flc-uploader-file-size",
                            fileIconBtn: ".flc-uploader-file-action",
                            errorText: ".flc-uploader-file-error"
                         }




    <table summary="The list of files">
     <tbody>
      <tr class="flc-uploader-file">
       <td class="flc-uploader-file-name”>File Name</td>
       <td class="flc-uploader-file-size”>0 KB</td>
      </tr>
     </tbody>
    </table>
Markup agnosticism: Infusion
                         fluid.defaults("fluid.fileQueueView", {
                           selectors: {
                            fileRows: ".flc-uploader-file",
                            fileName: ".flc-uploader-file-name",
                            fileSize: ".flc-uploader-file-size",
                            fileIconBtn: ".flc-uploader-file-action",
                            errorText: ".flc-uploader-file-error"
                         }




    <table summary="The list of files">
     <tbody>
      <tr class="flc-uploader-file">
       <td class="flc-uploader-file-name”>File Name</td>
       <td class="flc-uploader-file-size”>0 KB</td>
      </tr>
     </tbody>
    </table>
Markup agnosticism: Infusion




var jFileName = dom.locate(“fileName”);
Transparent
   Apps
• M is where it’s at
• Events inside and out
• Assistive technology
  inside the Web, not
  bolted on
Questions?




Colin Clark
@colinbdclark
fluidproject.org
Photo Credits
Curb cut, Great PA-NJ, http://www.flickr.com/photos/50393252@N02/4822063888/

Stethoscope, Han-Oh Chung, http://www.flickr.com/photos/chickenlump/2038512161/

Texting while walking, Mobile Monday Amsterdam, http://www.flickr.com/photos/momoams/2926622070/

MOMA WiFi, http://www.flickr.com/photos/89554035@N00/2445178036

Plasticine iPhone, Paula Ortiz López, http://www.flickr.com/photos/paulaortizlopez/5342740603/

Skateboarder, Amin Samsudin, http://www.flickr.com/photos/aminchoc/4108543387/

Hacksaw, Fen Oswin, http://www.flickr.com/photos/fenoswin/5100072944/

The Large Glass, William Cromar, http://www.flickr.com/photos/williamcromar/4599688803/

Plasticine Animal, panshipanshi, http://www.flickr.com/photos/panshipanshi/2123208719/

Mais conteúdo relacionado

Mais procurados

OOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon BostonOOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon Boston
John Hann
 
jQuery Learning
jQuery LearningjQuery Learning
jQuery Learning
Uzair Ali
 

Mais procurados (20)

jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009
 
JavaScript!
JavaScript!JavaScript!
JavaScript!
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
jQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingjQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and Bling
 
jQuery Introduction
jQuery IntroductionjQuery Introduction
jQuery Introduction
 
jQuery
jQueryjQuery
jQuery
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery Fundamentals
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do More
 
jQuery Essentials
jQuery EssentialsjQuery Essentials
jQuery Essentials
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');
 
A Rich Web experience with jQuery, Ajax and .NET
A Rich Web experience with jQuery, Ajax and .NETA Rich Web experience with jQuery, Ajax and .NET
A Rich Web experience with jQuery, Ajax and .NET
 
The jQuery Library
The  jQuery LibraryThe  jQuery Library
The jQuery Library
 
Getting started with jQuery
Getting started with jQueryGetting started with jQuery
Getting started with jQuery
 
D3.js and SVG
D3.js and SVGD3.js and SVG
D3.js and SVG
 
jQuery
jQueryjQuery
jQuery
 
jQuery Presentation
jQuery PresentationjQuery Presentation
jQuery Presentation
 
OOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon BostonOOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon Boston
 
A Rich Web Experience with jQuery, Ajax and .NET
A Rich Web Experience with jQuery, Ajax and .NETA Rich Web Experience with jQuery, Ajax and .NET
A Rich Web Experience with jQuery, Ajax and .NET
 
jQuery Learning
jQuery LearningjQuery Learning
jQuery Learning
 

Semelhante a Nothing Hard Baked: Designing the Inclusive Web

E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on lab
NAVER D2
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on lab
NAVER D2
 
MPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for PresentationMPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for Presentation
Shawn Day
 
Jquery presentation
Jquery presentationJquery presentation
Jquery presentation
guest5d87aa6
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web Framework
IndicThreads
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Framework
vhazrati
 

Semelhante a Nothing Hard Baked: Designing the Inclusive Web (20)

Jquery fundamentals
Jquery fundamentalsJquery fundamentals
Jquery fundamentals
 
E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on lab
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on lab
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
SharePointfest Denver - A jQuery Primer for SharePoint
SharePointfest Denver -  A jQuery Primer for SharePointSharePointfest Denver -  A jQuery Primer for SharePoint
SharePointfest Denver - A jQuery Primer for SharePoint
 
Jquery tutorial
Jquery tutorialJquery tutorial
Jquery tutorial
 
Diazo: Bridging Designers and Programmers
Diazo: Bridging Designers and ProgrammersDiazo: Bridging Designers and Programmers
Diazo: Bridging Designers and Programmers
 
jQuery in the [Aol.] Enterprise
jQuery in the [Aol.] EnterprisejQuery in the [Aol.] Enterprise
jQuery in the [Aol.] Enterprise
 
MPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for PresentationMPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for Presentation
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Overlays, Accordions & Tabs, Oh My
Overlays, Accordions & Tabs, Oh MyOverlays, Accordions & Tabs, Oh My
Overlays, Accordions & Tabs, Oh My
 
Jquery presentation
Jquery presentationJquery presentation
Jquery presentation
 
Overview Of Lift Framework
Overview Of Lift FrameworkOverview Of Lift Framework
Overview Of Lift Framework
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web Framework
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Framework
 
Introduction to JavaScript for APEX Developers - Module 3: Working with the D...
Introduction to JavaScript for APEX Developers - Module 3: Working with the D...Introduction to JavaScript for APEX Developers - Module 3: Working with the D...
Introduction to JavaScript for APEX Developers - Module 3: Working with the D...
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
bcgr3-jquery
bcgr3-jquerybcgr3-jquery
bcgr3-jquery
 
bcgr3-jquery
bcgr3-jquerybcgr3-jquery
bcgr3-jquery
 
Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...
 

Mais de colinbdclark

Mais de colinbdclark (9)

Flocking at the SuperCollider Symposium 2013
Flocking at the SuperCollider Symposium 2013Flocking at the SuperCollider Symposium 2013
Flocking at the SuperCollider Symposium 2013
 
Open Inclusive Design
Open Inclusive DesignOpen Inclusive Design
Open Inclusive Design
 
Mobile Development with uPortal and Infusion
Mobile Development with uPortal and InfusionMobile Development with uPortal and Infusion
Mobile Development with uPortal and Infusion
 
Web Accessibility and Design
Web Accessibility and DesignWeb Accessibility and Design
Web Accessibility and Design
 
Accessible UIs with jQuery and Infusion
Accessible UIs with jQuery and InfusionAccessible UIs with jQuery and Infusion
Accessible UIs with jQuery and Infusion
 
Making your jQuery Plugins More Accessible
Making your jQuery Plugins More AccessibleMaking your jQuery Plugins More Accessible
Making your jQuery Plugins More Accessible
 
Architectures for Inclusive Design
Architectures for Inclusive DesignArchitectures for Inclusive Design
Architectures for Inclusive Design
 
Infusion for the birds
Infusion for the birdsInfusion for the birds
Infusion for the birds
 
Thoughts on Open Accessibility
Thoughts on Open AccessibilityThoughts on Open Accessibility
Thoughts on Open Accessibility
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

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...
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Nothing Hard Baked: Designing the Inclusive Web

  • 1. Nothing Hard Baked Designing the Inclusive Web Colin Clark fluidproject.org
  • 7. Rethinking Disability A mismatch between the user and the user interface
  • 8. Disability is a usability issue
  • 12. Accessibility is... the ability of the system to accommodate the needs of the user
  • 14. Accessibility is... Something we all benefit from.
  • 15. Accessible systems are... • Flexible • Separable • Modifiable
  • 16. “I can’t even imagine what a better UI for me would look like, because I’ve spent the past 13 years of my life adapting to the computer.” - Johnny Taylor, unboundedexistence.com
  • 17.
  • 18.
  • 20. Opaque Markup <!-- This is a Tabs widget. --> <!-- How would you know, looking only at the markup? --> <ol> <li id="ch1Tab"> <a href="#ch1Panel">Chapter 1</a> </li> <li id="ch2Tab"> <a href="#ch2Panel">Chapter 2</a> </li> <li id="quizTab"> <a href="#quizPanel">Quiz</a> </li> </ol> <div> <div id="ch1Panel">Chapter 1 Stuff</div> <div id=”ch2Panel”>Chapter 2 Stuff</div> <div id=”quizPanel”>Quiz Stuff</div> </div>
  • 23. Roles, States, Properties • Roles describe widgets not present in HTML 4 slider, menubar, tab, dialog • Properties describe characteristics: draggable, hasPopup, required • States describe what’s happening: busy, disabled, selected, hidden
  • 24. Using ARIA <!-- Now *these* are Tabs! --> <ol role=”tablist”> <li id=”ch1Tab” role=”tab”> <a href="#ch1Panel">Chapter 1</a> </li> <li id=”ch2Tab” role=”tab”> <a href="#ch2Panel">Chapter 2</a> </li> <li id=”quizTab” role=”tab”> <a href="#quizPanel">Quiz</a> </li> </ol> <div> <div id="ch1Panel" role=”tabpanel” aria-labelledby=”ch1Tab”>Chapter 1 Stuff</div> <div id=”ch2Panel” role=”tabpanel” aria-labelledby=”ch2Tab”>Chapter 2 Stuff</div> <div id=”quizPanel” role=”tabpanel” aria-labelledby=”quizTab”>Quiz Stuff</div> </div>
  • 25. Adding ARIA in code // Identify the container as a list of tabs. tabContainer.attr("role", "tablist"); // Give each tab the "tab" role. tabs.attr("role", "tab"); // Give each panel the appropriate role, panels.attr("role", "tabpanel"); panels.each(function (idx, panel) { var tabForPanel = that.tabs.eq(idx); // Relate the panel to the tab that labels it. $(panel).attr("aria-labelledby", tabForPanel[0].id); });
  • 26. The Problem with Roles Assistive technologies see the world like this...
  • 27. The Problem with Roles ...or like this, if you’re so inclined
  • 28. The Problem with Roles ... but the Web is driving new kinds of user interfaces
  • 29. The Problem with Roles ... but the Web is driving new kinds of user interfaces
  • 30. The Problem with Roles ... even on the desktop
  • 33. Inline Edit Roles Text Field?
  • 35. Inline Edit Behaviours Read-only Activatable Editable Undoable
  • 37. Assistive technology is a hack
  • 38. Accessible systems are... • Flexible • Separable • Modifiable
  • 39. Open Architecture: Unlock your markup Let developers and users in A widget isn’t just one thing Question the rules No Black Boxes
  • 40. Markup example: Dojo <div class="dijitDialog" tabindex="-1" waiRole="dialog" waiState="labelledby- ${id}_title"> <div dojoAttachPoint="titleBar" class="dijitDialogTitleBar"> <span dojoAttachPoint="titleNode" class="dijitDialogTitle" id="$ {id}_title"></span> <span dojoAttachPoint="closeButtonNode" class="dijitDialogCloseIcon" dojoAttachEvent="onclick: onCancel, onmouseenter: _onCloseEnter, onmouseleave: _onCloseLeave" title="${buttonCancel}"> <span dojoAttachPoint="closeText" class="closeText" title="$ {buttonCancel}">x</span> </span> </div> <div dojoAttachPoint="containerNode" class="dijitDialogPaneContent"></div> </div>
  • 42. Markup agnosticism: Infusion fluid.defaults("fluid.fileQueueView", { selectors: { fileRows: ".flc-uploader-file", fileName: ".flc-uploader-file-name", fileSize: ".flc-uploader-file-size", fileIconBtn: ".flc-uploader-file-action", errorText: ".flc-uploader-file-error" } <table summary="The list of files"> <tbody> <tr class="flc-uploader-file"> <td class="flc-uploader-file-name”>File Name</td> <td class="flc-uploader-file-size”>0 KB</td> </tr> </tbody> </table>
  • 43. Markup agnosticism: Infusion fluid.defaults("fluid.fileQueueView", { selectors: { fileRows: ".flc-uploader-file", fileName: ".flc-uploader-file-name", fileSize: ".flc-uploader-file-size", fileIconBtn: ".flc-uploader-file-action", errorText: ".flc-uploader-file-error" } <table summary="The list of files"> <tbody> <tr class="flc-uploader-file"> <td class="flc-uploader-file-name”>File Name</td> <td class="flc-uploader-file-size”>0 KB</td> </tr> </tbody> </table>
  • 44. Markup agnosticism: Infusion fluid.defaults("fluid.fileQueueView", { selectors: { fileRows: ".flc-uploader-file", fileName: ".flc-uploader-file-name", fileSize: ".flc-uploader-file-size", fileIconBtn: ".flc-uploader-file-action", errorText: ".flc-uploader-file-error" } <table summary="The list of files"> <tbody> <tr class="flc-uploader-file"> <td class="flc-uploader-file-name”>File Name</td> <td class="flc-uploader-file-size”>0 KB</td> </tr> </tbody> </table>
  • 45. Markup agnosticism: Infusion var jFileName = dom.locate(“fileName”);
  • 46. Transparent Apps • M is where it’s at • Events inside and out • Assistive technology inside the Web, not bolted on
  • 48. Photo Credits Curb cut, Great PA-NJ, http://www.flickr.com/photos/50393252@N02/4822063888/ Stethoscope, Han-Oh Chung, http://www.flickr.com/photos/chickenlump/2038512161/ Texting while walking, Mobile Monday Amsterdam, http://www.flickr.com/photos/momoams/2926622070/ MOMA WiFi, http://www.flickr.com/photos/89554035@N00/2445178036 Plasticine iPhone, Paula Ortiz López, http://www.flickr.com/photos/paulaortizlopez/5342740603/ Skateboarder, Amin Samsudin, http://www.flickr.com/photos/aminchoc/4108543387/ Hacksaw, Fen Oswin, http://www.flickr.com/photos/fenoswin/5100072944/ The Large Glass, William Cromar, http://www.flickr.com/photos/williamcromar/4599688803/ Plasticine Animal, panshipanshi, http://www.flickr.com/photos/panshipanshi/2123208719/

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n