SlideShare a Scribd company logo
1 of 78
FUD-free Accessibility
       for Web Developers
        Also, cake.




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
about me


                          I write books

                          I build things

                          I teach people




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
What is
                    Accessibility?




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
We often think of

               Blind people

               Low vision or colorblind people

               Deaf people

               Physically impaired people

               Cognitively impaired people


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
We often think of

               Blind people

               Low vision or colorblind people

               Deaf people

               Physically impaired people

               Cognitively impaired people


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
But that's too
                        narrow
               People on small screens

               People without Flash

               People without JavaScript

               People on slow connections

               People on limited connections


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Making things
                    available to




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Accessibility isn’t
              expensive...




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
as long as you plan
             from the start.




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
We need to understand
        people's accessibility
                 issues


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Don't underestimate
           people's abilities




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Empathize, not
                      sympathize



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Blindness




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Screen Readers
   http://webanywhere.cs.washington.edu/
                    beta/




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
They rely on annotated
         videos or alternative
                content


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting Blind
                         People
               Ensure you have no spelling errors

               Ensure your popup windows don't
               result in dead-ends for screenreaders

               Remove dependencies on JavaScript

               Provide keyboard navigation


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Low Vision



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Screen magnification




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
High contrast mode




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting Low
                        Vision
               Be aware of issues with contrast

               Don't use fonts that are terribly
               small

               Place important information close to
               main content as possible

               Ensure spelling is correct and
               elements have enough space to be
               clicked
Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Colorblindness




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Protanopia




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Deuteranopia




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Tritanopia




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting
                    Colorblindness

               Don't use color as the only method to
               draw attention to elements

               Be aware of contrast issues

               Don't instruct users to identify
               things by color


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Hearing Impairments



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Videos need good
                      transcripts




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting the
                    Hearing Impaired
               Provide useful accurate transcripts
               for audio content

               Ensure that audio tracks are
               normalized or have appropriate volume

               "Duck" background music or background
               sounds during voiceovers.


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
People with physical
                 impairments



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Brian P. Hogan
twitter: @bphogan
www.bphogan.com
They navigate with
        head wands and tubes




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
They need to easily
               identify and click
               interface elements


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Just like someone on
                  a tablet!




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting the
           Physically Impaired

               Ensure click targets are large enough
               to be easily accessed

               Ensure click targets are easily
               identified.



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Cognitive Impairments
              and Learning
              Disabilities


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Dyslexia




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Supporting Cognitive
            Impairments

               Avoid font confusion ( 0 vs O, I vs l

               Target a 6th grade reading level

               Keep copy short - say more with less

               Ensure proper spelling and grammar



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Coding For
               Accessibility is
             Coding For Usability


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Progressive
                    Enhancement



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Cake




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
You should
          progressively enhance



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Your applications
                     should degrade
                        gracefully


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Crafting Accessible
                      Forms



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Use labels
             Especially for radio
                   buttons




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Wrap with label, or
                  use the “for”
                    attribute!
    <label>
      <input type="radio" value="smal"> Small
    </label>​



    <label for="name">Name</label>
    <input id="name">




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Avoid Tabindex unless
          absolutely necessary




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
AJAX Forms



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Accessible
        JavaScript solutions
               Build your app without JS first

                    Use your own API!

               Don't add content with JavaScript

                    use JS to show and hide it

               Separate Behavior from content


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Apply jQuery to forms
              unobtrusively
         $(function(){
           $("form[data-remote=true]").submit(function(e){
             e.preventDefault(); // prevent normal submit
             $.ajax({
               type: "POST",
               url: ($(this).attr("action") + ".js"),
               dataType: 'json',
               data: $(this).serialize(),
               success: function(data){
                 $('#results').html(data["render"]);
               }
             });
           });
         });



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Apply jQuery to forms
              unobtrusively
         $(function(){
           $("form[data-remote=true]").submit(function(e){
             e.preventDefault(); // prevent normal submit
             $.ajax({
               type: "POST",
               url: ($(this).attr("action") + ".js"),
               dataType: 'json',
               data: $(this).serialize(),
               success: function(data){
                 $('#results').html(data["render"]);
               }
             });
           });
         });



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Tables



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Good tables


               Have table headers defined

               Have captions that explain their
               purpose




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Use <th> tags.



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Use header attributes
           when it's ambiguous



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Tables can be OK for
                    forms



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Popups and Overlays



Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Make them regular
                      links
     <a href="http://google.com/" class="popup"
        data-height="400" data-width="400">Search Google</a>​​




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Add behavior with
                    JavaScript
    $(".popup").click(function(e){
          e.preventDefault();
       var url = $(this).attr("href");
       var title = $(this).html();
       var w = $(this).attr("data-width");
       var h = $(this).attr("data-height");
       window.open(url, title, "width="+ + w + ",height=" + h);
    });​​




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Add JS-only behavior
              with JS!
      var closer = $("<button>Close</button>");

      closer.click(function(e){
        mywindow.dialog("close");
      });

      $("#window").append(closer);

      var mywindow = $("#window").dialog();




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
ARIA
   Accessible Rich Internet Applications




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
ARIA-Live
               <h3>Tasks</h3>
               <form id="task_form">
                 <label>Task
                    <input type="text" id="task" name="task" value="">
                 </label>
                 <input type="submit" value="Add">
               </form>

               <ul aria-live="polite" id="tasks">

               </ul>




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
ARIA-Roles
                    banner
                    navigation
                    main
                    document
                    application
                    complementary
                    contentinfo
                    search
                    ... lots more
Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Use display:none with
                  care!


Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Static Content




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Avoiding Flash of
                    Unstyled Content
        <script>
          document.write('
            <style type="text/css" media="screen">
            .hiddenWhileLoading {display:none;}
            </style>
            ');
          document.documentElement.className = 'hiddenWhileLoading';
        </script>




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Avoiding Flash of
                    Unstyled Content
        <script>
          document.write('
            <style type="text/css" media="screen">
            .hiddenWhileLoading {display:none;}
            </style>
            ');
          document.documentElement.className = 'hiddenWhileLoading';
        </script>




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Avoiding Flash of
                    Unstyled Content
      <!-- load jquery from CDN or whatever -->
      <script src=”jquery.js”></script>
      <script>
        $(function(){}
          // your stuff

            $(document.documentElement)
             .removeClass("hiddenWhileLoading");
        );
      </script>




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Testing
                    Accessibility




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
First, does it
                      validate?




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
WCAG 2.0
                    http://www.w3.org/TR/WCAG/




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
wave.webaim.org




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Manual testing
               Jaws http://
               www.freedomscientific.com/products/
               fs/jaws-product-page.asp

               WindowEyes http://www.gwmicro.com/
               Window-Eyes/

               NVDA http://www.nvda-project.org/

               OSX VoiceOver (built-in)
Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Color Oracle
         http://colororacle.cartography.ch/




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Content will be easy to read

               Things will be easy to see

               Elements will be easier to interact
               with on portable devices

               Transcripts for promotional material
               can be read where the video can’t be
               played




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Perfect is the
                    Enemy of Good.
                              - Commonly attributed to Voltaire




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
The world will be a
              better place.




Brian P. Hogan
twitter: @bphogan
www.bphogan.com
Thank you!


                    http://spkr8.com/t/14841




Brian P. Hogan
twitter: @bphogan
www.bphogan.com

More Related Content

Viewers also liked

Web Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexWeb Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexBrian Hogan
 
Learning To Walk In Shoes
Learning To Walk In ShoesLearning To Walk In Shoes
Learning To Walk In ShoesBrian Hogan
 
Stop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard LibraryStop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard LibraryBrian Hogan
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into WordsBrian Hogan
 
Intro To Advanced Ruby
Intro To Advanced RubyIntro To Advanced Ruby
Intro To Advanced RubyBrian Hogan
 
Rails and Legacy Databases - RailsConf 2009
Rails and Legacy Databases - RailsConf 2009Rails and Legacy Databases - RailsConf 2009
Rails and Legacy Databases - RailsConf 2009Brian Hogan
 
HTML5 and CSS3 Today
HTML5 and CSS3 TodayHTML5 and CSS3 Today
HTML5 and CSS3 TodayBrian Hogan
 

Viewers also liked (7)

Web Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexWeb Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To Complex
 
Learning To Walk In Shoes
Learning To Walk In ShoesLearning To Walk In Shoes
Learning To Walk In Shoes
 
Stop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard LibraryStop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard Library
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into Words
 
Intro To Advanced Ruby
Intro To Advanced RubyIntro To Advanced Ruby
Intro To Advanced Ruby
 
Rails and Legacy Databases - RailsConf 2009
Rails and Legacy Databases - RailsConf 2009Rails and Legacy Databases - RailsConf 2009
Rails and Legacy Databases - RailsConf 2009
 
HTML5 and CSS3 Today
HTML5 and CSS3 TodayHTML5 and CSS3 Today
HTML5 and CSS3 Today
 

More from Brian Hogan

Creating and Deploying Static Sites with Hugo
Creating and Deploying Static Sites with HugoCreating and Deploying Static Sites with Hugo
Creating and Deploying Static Sites with HugoBrian Hogan
 
Automating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleAutomating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleBrian Hogan
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantBrian Hogan
 
Getting Started Contributing To Open Source
Getting Started Contributing To Open SourceGetting Started Contributing To Open Source
Getting Started Contributing To Open SourceBrian Hogan
 
Rethink Frontend Development With Elm
Rethink Frontend Development With ElmRethink Frontend Development With Elm
Rethink Frontend Development With ElmBrian Hogan
 
Testing Client-side Code with Jasmine and CoffeeScript
Testing Client-side Code with Jasmine and CoffeeScriptTesting Client-side Code with Jasmine and CoffeeScript
Testing Client-side Code with Jasmine and CoffeeScriptBrian Hogan
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web DesignBrian Hogan
 
Web Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassWeb Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassBrian Hogan
 
Building A Gem From Scratch
Building A Gem From ScratchBuilding A Gem From Scratch
Building A Gem From ScratchBrian Hogan
 
Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7Brian Hogan
 
Make GUI Apps with Shoes
Make GUI Apps with ShoesMake GUI Apps with Shoes
Make GUI Apps with ShoesBrian Hogan
 
Story-driven Testing
Story-driven TestingStory-driven Testing
Story-driven TestingBrian Hogan
 

More from Brian Hogan (15)

Creating and Deploying Static Sites with Hugo
Creating and Deploying Static Sites with HugoCreating and Deploying Static Sites with Hugo
Creating and Deploying Static Sites with Hugo
 
Automating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and AnsibleAutomating the Cloud with Terraform, and Ansible
Automating the Cloud with Terraform, and Ansible
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
 
Docker
DockerDocker
Docker
 
Getting Started Contributing To Open Source
Getting Started Contributing To Open SourceGetting Started Contributing To Open Source
Getting Started Contributing To Open Source
 
Rethink Frontend Development With Elm
Rethink Frontend Development With ElmRethink Frontend Development With Elm
Rethink Frontend Development With Elm
 
Testing Client-side Code with Jasmine and CoffeeScript
Testing Client-side Code with Jasmine and CoffeeScriptTesting Client-side Code with Jasmine and CoffeeScript
Testing Client-side Code with Jasmine and CoffeeScript
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Web Development with CoffeeScript and Sass
Web Development with CoffeeScript and SassWeb Development with CoffeeScript and Sass
Web Development with CoffeeScript and Sass
 
Building A Gem From Scratch
Building A Gem From ScratchBuilding A Gem From Scratch
Building A Gem From Scratch
 
Intro to Ruby
Intro to RubyIntro to Ruby
Intro to Ruby
 
Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7
 
Make GUI Apps with Shoes
Make GUI Apps with ShoesMake GUI Apps with Shoes
Make GUI Apps with Shoes
 
The Why Of Ruby
The Why Of RubyThe Why Of Ruby
The Why Of Ruby
 
Story-driven Testing
Story-driven TestingStory-driven Testing
Story-driven Testing
 

Recently uploaded

Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxAbhayThakur200703
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Intro to BCG's Carbon Emissions Benchmark_vF.pdf
Intro to BCG's Carbon Emissions Benchmark_vF.pdfIntro to BCG's Carbon Emissions Benchmark_vF.pdf
Intro to BCG's Carbon Emissions Benchmark_vF.pdfpollardmorgan
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation SlidesKeppelCorporation
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMRavindra Nath Shukla
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...lizamodels9
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...lizamodels9
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Servicediscovermytutordmt
 
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service DewasVip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewasmakika9823
 
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts ServiceVip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Serviceankitnayak356677
 

Recently uploaded (20)

Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptx
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
 
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
 
Intro to BCG's Carbon Emissions Benchmark_vF.pdf
Intro to BCG's Carbon Emissions Benchmark_vF.pdfIntro to BCG's Carbon Emissions Benchmark_vF.pdf
Intro to BCG's Carbon Emissions Benchmark_vF.pdf
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
 
Forklift Operations: Safety through Cartoons
Forklift Operations: Safety through CartoonsForklift Operations: Safety through Cartoons
Forklift Operations: Safety through Cartoons
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSM
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...
Lowrate Call Girls In Laxmi Nagar Delhi ❤️8860477959 Escorts 100% Genuine Ser...
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Service
 
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service DewasVip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
 
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts ServiceVip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
 

FUD-Free Accessibility for Web Developers - Also, Cake.

  • 1. FUD-free Accessibility for Web Developers Also, cake. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 2. about me I write books I build things I teach people Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 3. What is Accessibility? Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 4. We often think of Blind people Low vision or colorblind people Deaf people Physically impaired people Cognitively impaired people Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 5. We often think of Blind people Low vision or colorblind people Deaf people Physically impaired people Cognitively impaired people Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 6. But that's too narrow People on small screens People without Flash People without JavaScript People on slow connections People on limited connections Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 7. Making things available to Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 8. Accessibility isn’t expensive... Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 9. as long as you plan from the start. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 10. We need to understand people's accessibility issues Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 11. Don't underestimate people's abilities Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 12. Empathize, not sympathize Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 13. Blindness Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 14. Screen Readers http://webanywhere.cs.washington.edu/ beta/ Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 15. They rely on annotated videos or alternative content Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 16. Supporting Blind People Ensure you have no spelling errors Ensure your popup windows don't result in dead-ends for screenreaders Remove dependencies on JavaScript Provide keyboard navigation Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 17. Low Vision Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 18. Screen magnification Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 19. High contrast mode Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 20. Supporting Low Vision Be aware of issues with contrast Don't use fonts that are terribly small Place important information close to main content as possible Ensure spelling is correct and elements have enough space to be clicked Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 21. Colorblindness Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 22. Protanopia Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 23. Deuteranopia Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 24. Tritanopia Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 25. Supporting Colorblindness Don't use color as the only method to draw attention to elements Be aware of contrast issues Don't instruct users to identify things by color Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 26. Hearing Impairments Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 27. Videos need good transcripts Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 28. Supporting the Hearing Impaired Provide useful accurate transcripts for audio content Ensure that audio tracks are normalized or have appropriate volume "Duck" background music or background sounds during voiceovers. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 29. People with physical impairments Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 30. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 31. They navigate with head wands and tubes Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 32. They need to easily identify and click interface elements Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 33. Just like someone on a tablet! Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 34. Supporting the Physically Impaired Ensure click targets are large enough to be easily accessed Ensure click targets are easily identified. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 35. Cognitive Impairments and Learning Disabilities Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 36. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 37. Dyslexia Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 38. Supporting Cognitive Impairments Avoid font confusion ( 0 vs O, I vs l Target a 6th grade reading level Keep copy short - say more with less Ensure proper spelling and grammar Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 39. Coding For Accessibility is Coding For Usability Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 40. Progressive Enhancement Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 41. Cake Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 42. You should progressively enhance Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 43. Your applications should degrade gracefully Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 44. Crafting Accessible Forms Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 45. Use labels Especially for radio buttons Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 46. Wrap with label, or use the “for” attribute! <label> <input type="radio" value="smal"> Small </label>​ <label for="name">Name</label> <input id="name"> Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 47. Avoid Tabindex unless absolutely necessary Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 48. AJAX Forms Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 49. Accessible JavaScript solutions Build your app without JS first Use your own API! Don't add content with JavaScript use JS to show and hide it Separate Behavior from content Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 50. Apply jQuery to forms unobtrusively $(function(){ $("form[data-remote=true]").submit(function(e){ e.preventDefault(); // prevent normal submit $.ajax({ type: "POST", url: ($(this).attr("action") + ".js"), dataType: 'json', data: $(this).serialize(), success: function(data){ $('#results').html(data["render"]); } }); }); }); Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 51. Apply jQuery to forms unobtrusively $(function(){ $("form[data-remote=true]").submit(function(e){ e.preventDefault(); // prevent normal submit $.ajax({ type: "POST", url: ($(this).attr("action") + ".js"), dataType: 'json', data: $(this).serialize(), success: function(data){ $('#results').html(data["render"]); } }); }); }); Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 52. Tables Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 53. Good tables Have table headers defined Have captions that explain their purpose Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 54. Use <th> tags. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 55. Use header attributes when it's ambiguous Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 56. Tables can be OK for forms Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 57. Popups and Overlays Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 58. Make them regular links <a href="http://google.com/" class="popup" data-height="400" data-width="400">Search Google</a>​​ Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 59. Add behavior with JavaScript $(".popup").click(function(e){ e.preventDefault(); var url = $(this).attr("href"); var title = $(this).html(); var w = $(this).attr("data-width"); var h = $(this).attr("data-height"); window.open(url, title, "width="+ + w + ",height=" + h); });​​ Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 60. Add JS-only behavior with JS! var closer = $("<button>Close</button>"); closer.click(function(e){ mywindow.dialog("close"); }); $("#window").append(closer); var mywindow = $("#window").dialog(); Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 61. ARIA Accessible Rich Internet Applications Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 62. ARIA-Live <h3>Tasks</h3> <form id="task_form"> <label>Task <input type="text" id="task" name="task" value=""> </label> <input type="submit" value="Add"> </form> <ul aria-live="polite" id="tasks"> </ul> Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 63. ARIA-Roles banner navigation main document application complementary contentinfo search ... lots more Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 64. Use display:none with care! Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 65. Static Content Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 66. Avoiding Flash of Unstyled Content <script> document.write(' <style type="text/css" media="screen"> .hiddenWhileLoading {display:none;} </style> '); document.documentElement.className = 'hiddenWhileLoading'; </script> Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 67. Avoiding Flash of Unstyled Content <script> document.write(' <style type="text/css" media="screen"> .hiddenWhileLoading {display:none;} </style> '); document.documentElement.className = 'hiddenWhileLoading'; </script> Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 68. Avoiding Flash of Unstyled Content <!-- load jquery from CDN or whatever --> <script src=”jquery.js”></script> <script> $(function(){} // your stuff $(document.documentElement) .removeClass("hiddenWhileLoading"); ); </script> Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 69. Testing Accessibility Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 70. First, does it validate? Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 71. WCAG 2.0 http://www.w3.org/TR/WCAG/ Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 72. wave.webaim.org Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 73. Manual testing Jaws http:// www.freedomscientific.com/products/ fs/jaws-product-page.asp WindowEyes http://www.gwmicro.com/ Window-Eyes/ NVDA http://www.nvda-project.org/ OSX VoiceOver (built-in) Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 74. Color Oracle http://colororacle.cartography.ch/ Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 75. Content will be easy to read Things will be easy to see Elements will be easier to interact with on portable devices Transcripts for promotional material can be read where the video can’t be played Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 76. Perfect is the Enemy of Good. - Commonly attributed to Voltaire Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 77. The world will be a better place. Brian P. Hogan twitter: @bphogan www.bphogan.com
  • 78. Thank you! http://spkr8.com/t/14841 Brian P. Hogan twitter: @bphogan www.bphogan.com

Editor's Notes

  1. \n
  2. I&apos;m a web developer, author, book editor, and I teach programming at Chippewa Valley Technical College. I&apos;ve written a few books on web development and I&apos;m very passionate about accessibility. I was actually born with bilateral cataracts and as a result, I have low vision.\n
  3. What does accessibility mean to you?\n
  4. When the topic of accessibility comes up, we usually think of disabilities. Specifically, these kind. Blind and low vision users are the ones who are obviously affected, and the hearing impaired have trouble with videos without captions. The physically impaired may have trouble working mice, and cognitive impairments can be anything from reading comprehension to dyslexia, which means you need to make wise choices about your fonts and spacing.\n
  5. I want to point out here that these are not &amp;#x201C;users&amp;#x201D; or &amp;#x201C;customers&amp;#x201D;. These are people, and I think it&amp;#x2019;s really important that we keep that in the back of our minds.\n
  6. But here&amp;#x2019;s another group of people to think about. Accessibility isn&amp;#x2019;t just about disabled users. \n
  7. It&apos;s about making our products, services, and information available to anyone who wants it.\n
  8. I hear people telling me all the time that they can&amp;#x2019;t afford to make their solutions accessible because it&amp;#x2019;s too expensive. I&amp;#x2019;ve heard product owners flat out tell me &amp;#x201C;we&amp;#x2019;re not concerned about the disabled users.&amp;#x201D; The thing is, accessibility isn&amp;#x2019;t that expensive to implement...\n
  9. as long as you build it in from the beginning.\n
  10. In order to plan ahead, you need to think about people&apos;s needs. You already do that with your target audience anyway.\n
  11. I often hear the argument &quot;We don&apos;t have to worry about making our mobile site accessible - a blind person won&apos;t use an iPad or an iPhone&quot; The iPad has some great accessibility features, and so do Android phones. And there are kits that make it perfectly possible to use both of these devices. Plus I know blind people who program.\n
  12. Once you understand the accessibility issues your customers face, you can start planning how you&apos;ll support them. So let&amp;#x2019;s talk about how people with traditional disabilities use computers.\n
  13. Blind users typically use either a Braille display or a screen reader.\n
  14. Screen readers read the text on the page, including alternate text and captions.\n
  15. Captions are useful for the blind in cases where they don&apos;t have the ability to load the video.\n
  16. \n
  17. Low vision users present another challenge. These uses also use screenreading software, but use other technologies as well\n
  18. OSX and Compiz offer amazing full screen zooming. Windows is very far behind so people use third-party products like ZoomText instead. Unfortunately this creates &quot;tunnel vision&quot; - a zoomed in user might miss something outside.\n
  19. www.paciellogroup.com&amp;#x2014;google-chrome-accessibility &lt;http://www.paciellogroup.com/blog/2008/09/google-chrome-accessibility/&gt;\n
  20. \n
  21. \n
  22. a difficulty in distinguishing differences between red, yellow, and green, as they can often appear all to be yellow or brow\n
  23. Difficulty in distinguishing differences between red and green.\n
  24. \n
  25. \n
  26. We all-too-often forget about the hearing-impaired users because we view the web as a visual medium\n
  27. Especially if there&apos;s a lot of audio. If you&apos;re putting videos of a talk or presentation online, having a transcript is very helpful.\n
  28. \n
  29. These people may not have enough motor skills to operate a keyboard or mouse and will use other input devices.\n
  30. What if that was you? Have you taken good care of your hands, those tools you use to build the things you build? How would you write code if you couldn&amp;#x2019;t use your hands?\n
  31. Head wands let them touch a screen with a wand that extends from the forehead or jaw. Sip and blow tubes can control a mouse pointer with pressure/ Both are very difficult to operate.\n
  32. We need to be mindful of these users and how they navigate when we place interface elements\n
  33. \n
  34. This will also help users of touchscreen devices.\n
  35. A lot of this comes down to reading comprehension.\n
  36. With any kind of writing, we want to say more with less.\n
  37. Dyslexic users often have trouble interpreting words, and you can help that by using fonts that are easier for them to read.\n
  38. \n
  39. By addressing the issues these groups have, we can make our sites better for all our users. If we use good colors and icon placement, and we keep our text simple and easy to follow, we&apos;ll gain some points there. But let&apos;s take it farther.\n
  40. We want to make it work first, then make it better.\n
  41. Web apps without js are still cake. They may not be as awesome as cake without frosting, but they can still be quite tasty if done right\n
  42. \n
  43. \n
  44. Forms are pretty much everywhere. We want to make forms easy to use.\n
  45. Labels help screen reading software associate form fields with the text that identifies them. In the case of radio buttons, they do even more.\n
  46. Especially important for helping screen readers find fields, but it also lets people click the label to activate the checkbox or the radio button.\n\n
  47. A browser will, by default, will let you tab through the forms. If you structure the form in a linear fashion and use CSS to style it, you can avoid tabindex most of the time.\n
  48. Today&apos;s applications need to use AJAX to provide decent user interfaces. When you build on a good foundation, this isn&apos;t a problem\n
  49. \n
  50. Build solid forms that work with regular posts. Use jQuery to unobtrusively submit the form. Look for a data attribute and then intercept the submit.\n
  51. Then change the URL - maybe append a .js on it and handle it on the server side.\n
  52. Use tables where they make sense\n
  53. \n
  54. \n
  55. That&amp;#x2019;s pretty much all there is to it. Modern browsers and screen reading software have figured this out.\n
  56. If the forms are actually tabular, and the table is properly structured.\n
  57. In the past, popups and overlays were dangerous. And they still can be if we don&amp;#x2019;t implement them properly.\n
  58. We can use custom data attributes to embed properties. No need to override the rel attribute. We also don&amp;#x2019;t include the onclick on the element.\n
  59. We can grab everything we need from the markup to make the popup work, and this can be global. When no JavaScript is enabled, the popup is displayed on a new page.\n
  60. When the content doesn&apos;t load in a popup, you don&apos;t want to show that control. Instead, add it with JavaScript. \n
  61. It&amp;#x2019;s not enough to have static pages anymore. We need to interact with users, and that makes it harder or us to be accessible. ARIA gives us a hand.\n
  62. Screenreaders see the polite region and know that not only does it update, but that updates shouldn&amp;#x2019;t interrupt the reader when it&amp;#x2019;s reading other areas.\n
  63. Really handy way to help screenreader users find elements. &amp;#x201C;Documents&amp;#x201D; are static documents we read. Screenreaders have shortcut keys for navigating. &amp;#x201C;Application&amp;#x201D; role tells screenreaders to turn off the shortcut keys so that the apps can use those shortcut keys instead.\n
  64. Use JavaScript to hide the content. This way if JS is disabled, but CSS is enabled, the content can still be read by the screenreader.\n
  65. There are lots of cases where you want to improve the user experience by loading content with JavaScript. However, if that content is simply static content, loading with JS, we need to figure out of that&amp;#x2019;s really the best solution.\n
  66. We&amp;#x2019;ll create a &amp;#x201C;hiddenWhileLoading&amp;#x201D; selector in CSS that hides the element with display:block.\n
  67. Then we&amp;#x2019;ll apply this to the main element on our page, the HTML tag. This will hide everything on the page.\n
  68. Then we&amp;#x2019;ll load jQuery. Then in Document Ready we&amp;#x2019;ll kick off our code. At the end of it all we&amp;#x2019;ll remove the class from the page and everything shows up.\n
  69. \n
  70. You want valid markup. Invalid markup can cause all sorts of trouble.\n
  71. \n
  72. \n
  73. Automated testing can only go so far. We have to test things manually, and thankfully there are many free options.\n
  74. Color Oracle is a free cross-platform app that will let you see your screen as a person with various types of colorblindness.\n
  75. \n
  76. One huge mistake people make when talking about accessibility is assuming that it has to be an all-or-nothing approach. THe tiniest little things help, and just by going out and taking one thing from this talk and incorporating it into what you do, you&amp;#x2019;ll already do more good.\n
  77. When you do it right, people won&amp;#x2019;t think you&amp;#x2019;ve done anything at all.\n
  78. \n