Carousels have a number of known accessibility & usability challenges with them.

To help mitigate some of the accessibility challenges it would be good to:

  • Add aria-labelledby to the tabpanels which point to the id of the associated control/tab.
  • To each control/tab, add aria-controls (which points to the id of the associated tabpanel) and aria-selected (boolean) attributes.

http://www.marcozehe.de/2013/02/02/advanced-aria-tip-1-tabs-in-web-apps/
http://www.accessiq.org/create/content/anatomy-of-an-accessible-carousel

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

gillisig’s picture

Issue summary: View changes

I think this is pretty important so I am bumping this issue up!

NickDickinsonWilde’s picture

Assigned: Unassigned » NickDickinsonWilde
Status: Active » Needs work
Issue tags: +a11y
NickDickinsonWilde’s picture

Assigned: NickDickinsonWilde » Unassigned
Status: Needs work » Fixed

Only fixed in 7.x (which is 90% of active installs anyways). Postponing for 8x as I'm thinking of a significant amount of adjustments there.

  • NickWilde committed 14632f3 on 7.x-3.x
    Issue #2092283 by NickWilde: Add ARIA for accessibility
    

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

andrewmacpherson’s picture

Issue tags: -a11y

Tag clean up: "accessibility" is the preferred one. The "a11y" tag doesn't have many issues so I'm moving them all to "accessibility". This issue was already closed, and is in contrib, but this is so the core accessibility maintainers don't have to monitor two tags.

adixon’s picture

I believe this causes accessibility issues if you don't include a pager.

Specifically, in such a case, it adds an aria-labelledby with a non-existent id.

The patch would be:

diff --git a/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc b/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.the
index 0609d29..cd750df 100644
--- a/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc
+++ b/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc
@@ -137,7 +137,7 @@ function template_preprocess_views_slideshow_cycle_main_frame(&$vars) {
   if (isset($options['top']['views_slideshow_pager']['enabled']) && $options['top']['views_slideshow_pager']['enabled']) {
     $aria = "aria-labelledby='views_slideshow_pager_field_item_top_${vss_id}_";
   }
-  else {
+  elseif (isset($options['bottom']['views_slideshow_pager']['enabled']) && $options['bottom']['views_slideshow_pager']['enabled']) {
     $aria = "aria-labelledby='views_slideshow_pager_field_item_bottom_${vss_id}_";
   }
 
@@ -282,4 +282,4 @@ function _views_slideshow_cycle_preprocess_views_slideshow_cycle_main_frame_row(
  */
 function _views_slideshow_cycle_preprocess_views_slideshow_cycle_main_frame_row_item(&$vars) {
   template_preprocess_views_slideshow_cycle_main_frame_row_item($vars);
jackfoust’s picture

Patch in #7 fixed my issues with WAVE.

jackfoust’s picture

While the patch in #7 fixed my accessibility errors, it did cause HTML validation errors for me. Patched to fix bad HTML when not using pager.