Slide 1
            
                
                
                    WEB ACCESSIBILITY:
MAKING WEBSITES
BETTER FOR EVERYONE
                 
             
                    Slide 2
            
                
                
                    WHAT IS WEB
ACCESSIBILITY?
                 
             
                    Slide 3
            
                
                
                    SCREEN READER
Page has fifty-eight headings and two
hundred seventy-one links BBC dash
Homepage Link Graphic BBC Heading level
two Heading level two BBC navigation List
of nine items bullet Link News bullet Link
Sport bullet Link Weather bullet Link
Capital bullet Link Future bullet Link Shop
bullet Link TV bullet Link Radio bullet Link
More… List end
                 
             
                    Slide 4
            
                    Slide 5
            
                    Slide 6
            
                    Slide 7
            
                    Slide 8
            
                    Slide 9
            
                    Slide 10
            
                    Slide 11
            
                    Slide 12
            
                    Slide 13
            
                    Slide 14
            
                    Slide 15
            
                    Slide 16
            
                    Slide 17
            
                    Slide 18
            
                    Slide 19
            
                    Slide 20
            
                    Slide 21
            
                
                
                    TRY IT YOURSELF
Settings > ? > Accessibility
NVDA / ChromeVox / VoiceOver
High Contrast Theme
Tu r n   o f f   y o u r   m o u s e
Mouse with your elbows
                 
             
                    Slide 22
            
                
                
                    YOU SHOULD CARE
ABOUT ACCESSIBILITY
                 
             
                    Slide 23
            
                
                
                    1: UX
Content
Information Architecture
Interface Design
                 
             
                    Slide 24
            
                    Slide 25
            
                    Slide 26
            
                
                
                    2: HTML
Semantic HTML
When the HTML markup reinforces
the meaning
(aka semantics)
of the
information on the page.
                 
             
                    Slide 27
            
                
                
                    
                    <button type="submit"> 
  Submit 
</button>
☺                
             
                    Slide 28
            
                
                
                    <a  
href="#" 
tabindex="0"  
aria-role="button"    
onclick="myForm.submit(); 
return false;">
Submit
</a>
☹
                 
             
                    Slide 29
            
                
                
                    
                    <button type="submit"> 
  Submit 
</button>
☺                
             
                    Slide 30
            
                
                
                    <a  
href="#" 
tabindex="0"  
aria-role="button"    
onclick="myForm.submit(); 
return false;">
Submit
</a>
☹
                 
             
                    Slide 31
            
                
                
                    2: HTML
WCAG 2.0
(Web Content Accessibility Guidelines)
wave.webaim.org
                 
             
                    Slide 32
            
                
                
                    Section 508
Rehabilitation Act
Americans with Disabilities Act
Nat’l Federation of the Deaf vs. Netflix Inc
ADA
Department of Justice
Advance Notice Of Proposed Rulemaking
Charter of Rights and Freedoms
Canadian Human Rights Act
Ontarians with Disabilities Act
Schedules I, I.I and II of the Financial Administration Act
Title III
                 
             
                    Slide 33
            
                
                
                    Section 508
Rehabilitation Act
Americans with Disabilities Act
Nat’l Federation of the Deaf vs. Netflix Inc
ADA
Department of Justice
Advance Notice Of Proposed Rulemaking
Charter of Rights and Freedoms
Canadian Human Rights Act
Ontarians with Disabilities Act
Schedules I, I.I and II of the Financial Administration Act
Title III
                 
             
                    Slide 34
            
                
                
                    Ontarians with Disabilities Act
For all public sector organizations, private organizations, and
non-profit organizations with 50 or more employees:
Since January 1, 2012 all new websites or redesigns of
existing sites, must conform to WCAG 2.0, Level A.
                 
             
                    Slide 35
            
                
                
                    Ontarians with Disabilities Act
All* internet and web content published after January 1, 2012
must conform to WCAG 2.0 Level AA by January 1, 2021.
*
Exceptions include captions on live videos and audio
descriptions for pre-recorded videos.
                 
             
                    Slide 36
            
                    Slide 37
            
                
                
                    DON’T SCREW UP YOUR HTML
Style the right element.
                 
             
                    Slide 38
            
                
                
                    DON’T SCREW UP YOUR HTML
Style the right element.
Don’t remove outlines.
                 
             
                    Slide 39
            
                    Slide 40
            
                
                
                    DON’T SCREW UP YOUR HTML
Style the right element.
Don’t remove outlines.
Don’t write in ALL CAPS.
                 
             
                    Slide 41
            
                
                
                    MAKE SMALL IMPROVEMENTS
Icon and colour hints.
Text fallbacks.
Larger hit areas.
                 
             
                    Slide 42
            
                    Slide 43
            
                
                
                    DON’T SCREW UP YOUR HTML
Respect focus()
                 
             
                    Slide 44
            
                    Slide 45
            
                
                
                    DON’T SCREW UP YOUR HTML
Respect focus()
Keep users in control.
                 
             
                    Slide 46
            
                
                
                    #DZY
(It’s like #NSFW for people with vestibular disorders)
                 
             
                    Slide 47
            
                    Slide 48
            
                
                
                    #SZR
(It’s like #NSFW for people with epilepsy)
                 
             
                    Slide 49
            
                
                
                    DON’T SCREW UP YOUR HTML
Respect focus()
Keep users in control.
                 
             
                    Slide 50
            
                
                
                    MAKE SMALL IMPROVEMENTS
ARIA Roles and Attributes
(Accessible Rich Internet Applications)
                 
             
                    Slide 51
            
                    Slide 52
            
                    Slide 53
            
                
                
                    
                    <div class="server">Blueberry  
  <span class="server_button"> 
    DETAILS ▸</span> 
</div> 
<div class="server_details"> 
  <div>Hostname: web02.onr.example.com</div> 
  <div>Service Tag: JCQFZK1</div> 
  <div>Datacentre: ONR</div> 
  <div>Rack Location: 104.6, Unit #24</div> 
</div>                
             
                    Slide 54
            
                
                
                    
                    <div class="server">Blueberry  
  <span class="server_button"> 
    DETAILS ▸</span> 
</div> 
<div class="server_details"> 
  <div>
Hostname: web02.onr.example.com
</div> 
  <div>
Service Tag: JCQFZK1
</div> 
  <div>
Datacentre: ONR
</div> 
</div>                
             
                    Slide 55
            
                
                
                    
                    <div class="server">Blueberry  
  <span class="server_button"> 
    DETAILS ▸</span> 
</div> 
<dl class="server_details"> 
  <dt>
Hostname:
</dt><dd>
web02.onr.example.com
</dd> 
  <dt>
Service Tag:
</dt><dd>
JCQFZK1
</dd> 
  <dt>
Datacentre:
</dt><dd>
ONR
</dd> 
</dl>                
             
                    Slide 56
            
                
                
                    
                    <div class="server">Blueberry  
<span class="server_button"> 
    DETAILS ▸</span> 
</div> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 57
            
                
                
                    
                    <h3 class="server">Blueberry  
 <span class="server_button"> 
    DETAILS ▸</span> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 58
            
                
                
                    
                    <h3 class="server">Blueberry  
  <span class="server_button"> 
      DETAILS ▸ 
  </span> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com< 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 59
            
                
                
                    $('.server_button').on(
'click'
,
function() {
$(this)
.parent().next()
.toggleClass('hide');
});
                 
             
                    Slide 60
            
                
                
                    .server_button
:hover
{
background-color: #000;
color: #fff;
}
                 
             
                    Slide 61
            
                
                
                    
                    <h3 class="server">Blueberry  
  <span class="server_button"> 
    DETAILS ▸ 
  </span> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com< 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 62
            
                
                
                    
                    <h3 class="server">Blueberry   
  <button class="server_button"> 
    DETAILS ▸ 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 63
            
                
                
                    
                    <h3 class="server">Blueberry   
  <button class="server_button" 
    type="button"> 
    DETAILS ▸ 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 64
            
                
                
                    $('.server_button').on(
'click'
,
function() {
$(this)
.parent()
.next()
.toggle();
});
                 
             
                    Slide 65
            
                
                
                    .server_button
:hover
{
background-color: #000;
color: #fff;
}
                 
             
                    Slide 66
            
                
                
                    .server_button
:hover,
.server_button:focus
{
background-color: #000;
color: #fff;
}
                 
             
                    Slide 67
            
                
                
                    .server_button:hover,
.server_button:focus {
background-color: #000;
color: #fff;
text-decoration: underline;
}
                 
             
                    Slide 68
            
                
                
                    
                    <h3 class="server">Blueberry   
  <button class="server_button" 
    type="button"> 
    DETAILS ▸ 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 69
            
                
                
                    
                    <h3 class="server">Blueberry   
  <button class="server_button" 
    type="button"> 
    Details ▸ 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 70
            
                
                
                    
                    <h3 class="server">Blueberry   
  <button class="server_button" 
    type="button"> 
    Details ▸ 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 71
            
                
                
                    
                    <h3 class="server">   
  <button class="server_button" 
    type="button"> 
    Blueberry 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</ 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 72
            
                    Slide 73
            
                
                
                    
                    <h3 class="server">   
  <button class="server_button" 
    type="button"> 
    Blueberry 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</ 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 74
            
                
                
                    
                    <h3>   
  <button class="server" 
    type="button"> 
    Blueberry 
  </button> 
</h3> 
<dl class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 75
            
                    Slide 76
            
                
                
                    .server_button
.server:after {
content: 'Details \25B8’;
text-transform: uppercase;
speak: none;
background-color: #fff;
border-radius: 4px;
border: 0px none;
box-shadow: 0px -2px
rgba(0,0,0, 0.5) inset;
color: #4D4E53;
                 
             
                    Slide 77
            
                
                
                    .server_button:hover,
.server_button:focus
.server:hover:after,
.server:focus:after {
/* same styles as before */
}
                 
             
                    Slide 78
            
                    Slide 79
            
                    Slide 80
            
                
                
                    “…the time required to rapidly
move to a target area is a
function of the ratio between
the distance to the target and
the width of the target”
FITTS’ LAW
                 
             
                    Slide 81
            
                    Slide 82
            
                
                
                    <span aria-hidden="true"  
class="icon_check"></span>
<span class="offscreen">
This server is up:
</span>
                 
             
                    Slide 83
            
                
                
                    <span
aria-hidden="true"
  class="icon_check"></span> 
<span class="offscreen"> 
     This server is up: 
</span>                
 
             
                    Slide 84
            
                
                
                    .icon_check:before {
content: '\π3';
speak: none; }
.icon_times:before {
content: '\π5';
speak: none; }
                 
             
                    Slide 85
            
                
                
                    <span aria-hidden="true" 
class="icon_check"></span>
<span class="offscreen">
This server is up:
</span>
                 
             
                    Slide 86
            
                    Slide 87
            
                
                
                    <span aria-hidden="true" 
class="icon_check"></span>
<span
class="offscreen"
 This server is up: 
</span>                
 
             
                    Slide 88
            
                
                
                    .offscreen {
position: absolute;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px);
clip: rect(1px, 1px, 1px, 1px);
}
                 
             
                    Slide 89
            
                    Slide 90
            
                    Slide 91
            
                    Slide 92
            
                    Slide 93
            
                
                
                    WHAT JUST HAPPENED?
- choose the right element
- use descriptive calls to action
 
             
                    Slide 94
            
                
                
                    WHAT JUST HAPPENED?
- choose the right element
- use descriptive calls to action
- make hit areas bigger
 
             
                    Slide 95
            
                
                
                    WHAT JUST HAPPENED?
- choose the right element
- use descriptive calls to action
- make hit areas bigger
- add visual cues in the CSS
 
             
                    Slide 96
            
                
                
                    WHAT JUST HAPPENED?
- choose the right element
- use descriptive calls to action
- make hit areas bigger
- add visual cues in the CSS
- don’t just add visual cues
 
             
                    Slide 97
            
                
                
                    ARIA
aria-controls
aria-expanded
                 
             
                    Slide 98
            
                
                
                    
                    <h3>  
<button 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl 
class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 99
            
                
                
                    
                    <h3>  
<button aria-controls="raspberry" 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl id="raspberry"
 class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 100
            
                
                
                    
                    <h3>  
<button aria-controls="raspberry" 
aria-expanded="false" 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl id="raspberry" 
class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 101
            
                
                
                    
                    <h3>  
<button aria-controls="raspberry" 
aria-expanded="false" 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl id="raspberry" class="hidden 
server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 102
            
                
                
                    $('[aria-expanded]')
.on('click', function(){
var id = $(this).attr('aria-contols');
$(this).ariaToggle('aria-controls');
$('#' + id).toggle();
});
                 
             
                    Slide 103
            
                
                
                    $.fn.ariaToggle = function(attr) {
var $this = $(this);
var currentValue = $this.attr(attr);
if(currentValue === 'true'){
$this.attr(attr, false);
} else {
$this.attr(attr, true);
}
// make it so we can chain this function
return this;
};
                 
             
                    Slide 104
            
                
                
                    
                    <h3>  
<button aria-controls="raspberry" 
aria-expanded="false" 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl id="raspberry" class="hidden 
server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 105
            
                
                
                    
                    <h3>  
<button aria-controls="raspberry" 
aria-expanded="true" 
class="server" type="button">
<span aria-hidden="true" class="icon_check" ></span>
<span class="offscreen">This server is up: </span>
Blueberry
</button>
</h3> 
<dl id="raspberry" style="display:block;" 
class="server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
 
             
                    Slide 106
            
                
                
                    .server[aria-expanded=false]:after{
content: 'Details \25B8';
}
.server[aria-expanded=true]:after{
content: 'Details \25BE';
}
                 
             
                    Slide 107
            
                    Slide 108
            
                    Slide 109
            
                
                
                    
                    <h3>  
  <button aria-controls="raspberry" 
          aria-expanded="false" class="server" type="button"> 
    <span aria-hidden="true" class="icon_check" ></span> 
    <span class="offscreen">This server is up: </span> 
    Blueberry 
  </button> 
</h3> 
<dl id="raspberry" class="hidden server_details"> 
  <dt>Hostname:</dt><dd> web02.onr.example.com</dd> 
  <dt>Service Tag:</dt><dd> JCQFZK1</dd> 
  <dt>Datacentre:</dt><dd> ONR</dd> 
</dl>                
             
                    Slide 110
            
                    Slide 111
            
                
                
                    BETTER FOR EVERYONE
https://www.microsoft.com/design/practice#toolkit via @dstorey
                 
             
                    Slide 112
            
                    Slide 113
            
                
                
                    I LIKE TO MAKE WEBSITES
EVERYONE CAN USE
@stephaniehobson
stephaniehobson.ca
                 
             
                    Slide 114
            
                
                
                    RESOURCES
- webaim.org
- wave.webaim.org
- alistapart.com/article/the-accessibility-of-wai-aria
- 24ways.org/2009/dont-lose-your-focus/
- alistapart.com/article/designing-safer-web-animation-for-motion-
sensitivity
- filamentgroup.com/lab/bulletproof_icon_fonts.html
- snook.ca/archives/html_and_css/hiding-content-for-accessibility
- www.youtube.com/watch?v=GQKEE9nI1lk