【问题标题】:zurb-foundation top-bar dropdown not accessible from keyboardzurb-foundation 顶部栏下拉菜单无法从键盘访问
【发布时间】:2013-10-22 18:36:06
【问题描述】:

我正在使网站与基于 Foundation 的 WCAG 2.0 兼容,但我遇到了 topbar 问题。

它只是不能用键盘操作,我只是在谈论'tab'键。

我的父项设置为“#”:

项目 1 (#)

--> 项目 2(链接)

--> 第三条(链接)

使用“tab”键选择第 1 项后没有任何反应,按 Enter 将无济于事。

将菜单更改为可单击不是一个选项,因为单击另一个项目后项目不会折叠。

移动菜单很好,因此在 Foundation 文档中有示例。

这里是示例:http://dwietrzecie.zz.mu/bobrowice/

感谢您的帮助!

【问题讨论】:

  • 我在这里回答了一个非常相似的问题:stackoverflow.com/questions/19186192/… 源代码不同,但问题是一样的。
  • 这不是很有帮助。我在询问 ZURB-Foundation 的解决方案,而不是制作全新的菜单。我认为这是关于对 zurb 的 js 进行更改。
  • 我明白这一点,但根据另一个答案:这不是一个好的起点。不幸的是,您几乎必须重新开始,彻底检查源 HTML 并进行大量键盘控制操作。
  • 也许我应该指定我正在使用基于 wordpress 基础的遐想主题。我已经尝试了一些基于引导程序(例如 openstrap)的主题,并且下拉菜单也不能使用键盘操作,但是在使用名为“Keyboard Accessible Dropdown Menus”的插件之后就可以了。但是,即使经过修改,它也无法与遐想一起使用。我已将 [role="navigation"] 更改为 [class="top-bar"] 和 [.top-bar] 以及更多。在我的情况下,通过“tab”键使用菜单就可以了。

标签: drop-down-menu accessibility zurb-foundation nav


【解决方案1】:

这不是一个及时的答案,但由于我在谷歌上搜索同样的问题并想出了自己的解决方案,所以我想我会发布它:

1) 将 tabindex=0 添加到导航中的所有链接

2) css 中的所有悬停都需要具有等效的焦点选择器。您还需要添加一个悬停类,以便您可以使用 javascript 告诉它何时弹出。我在我的 css 中添加了这个以显示菜单(您还应该为样式输入其他等效代码——任何悬停样式都需要焦点样式,但我的是自定义的,所以我不想发布我的样式):

.top-bar-section .has-dropdown.hover > .dropdown,
.top-bar-section .has-dropdown.not-click:focus > .dropdown,
.no-js .top-bar-section .has-dropdown:focus > .dropdown,
.dropdown.hover
  {
      display: block; }

3) 添加了 javascript,它采用我使用 css 创建的“悬停”类,并在焦点更改时添加和删除它。我用这个网站作为参考http://uablogs.missouri.edu/interface/2011/08/keyboard-accessible/

$(document).ready(function(){
    $.fn.accessibleDropDown = function ()
    {
        var el = $(this);
        /* Make dropdown menus keyboard accessible */

        $("a", el).focus(function() {
            if($(this).parent().hasClass('has-dropdown')){
                $(this).parent().find('.dropdown').addClass('hover');
            }
            else if(($(this).parent().parent().hasClass('dropdown') === false)){
                $(document).find('.dropdown').removeClass('hover');
            }
        }).keydown(function(e){
            //if tab is pressed but not shift
            if(e.keyCode == 9 && !e.shiftKey){
                //and element is the last child in menu
                if($(this).parent().is(':last-child')){
                    $(this).parent().parent().removeClass('hover');
                }
            }
        });
    }

    //adds keyboard control to navigation
    $('nav').accessibleDropDown();

    $(document).click(function(){
        //if someone uses keyboard and switches to mouse close menu if mouse click isn't focused on a navigation element 
        if($('nav a').is(':focus') === false){
            $('.dropdown').removeClass('hover');
        }
    });
});

现在可以通过 tab 和 shift tab 键访问它。它可以使用添加跳过导航 IMO。

【讨论】:

  • 为此制作了一个 jsbin --- 并包含了自我上次处理此问题以来似乎已添加的一个更新(您还需要在 css jsbin.com/cacan/5 中添加“位置:静态!重要”跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多