【发布时间】:2020-06-02 16:36:52
【问题描述】:
我正在尝试使我的网站上的一些可折叠手风琴容器可访问,但我遇到了问题。
手风琴由页面上的链接元素控制 - 这样,只有键盘的用户可以通过 Tab 键访问它们并访问它们。我遇到的第一个问题是,如果用户切换到其中一个链接,页面不会总是向上滚动以显示他们切换到哪个链接。我使用以下代码修复了设置焦点的问题,该代码将链接滚动到视口顶部:
$(".accordion .accordion-item .accordion-heading a").focus(
function()
{
$('html:not(:animated), body:not(:animated)').animate({
scrollTop: $(this).offset().top
}, 250);
}
);
我现在遇到的问题是,当鼠标用户单击链接时,它会跳转到页面顶部并且不会打开容器,除非鼠标用户再次单击该链接。
有没有办法可以将上面的焦点代码设置为仅在链接已被选项卡到时触发?或者,是否有更好的方法来处理焦点问题,使其适用于仅键盘用户和鼠标用户?
谢谢!
【问题讨论】:
-
尚不完全清楚您的问题到底是什么。你能添加一个显示问题的sn-p吗? “我遇到的第一个问题是,如果用户选择了其中一个链接,页面不会总是向上滚动以显示他们选择了哪个链接。” > 滚动到焦点元素(是否使用 tab 键)是 AFAIK 浏览器的默认功能。
-
正如 Laurent 所说,不清楚是什么导致了您的问题或您试图描述的确切行为,您能否提供一个演示问题的小提琴或指向有问题的页面的链接.听起来您在手风琴上使用的任何功能都无法正常工作。此外,手风琴不应该是链接,它们应该是正确语义的按钮(除非您在单独的页面上仅提供指向手风琴内文本的链接)。
-
另外,如果您正在拦截滚动,请不要对其进行动画处理,这会影响患有焦虑症/运动障碍的人(或确保它可以被禁用,或者您使用
prefers-reduce-motion媒体查询) -
@LaurentS。 - 这是页面测试版本的链接:williamwoods.edu/test/gallery-index.html 如果您向下滚动到以前举办的活动并单击“2019-2020”,您会注意到页面向上滚动,将该链接设置在顶部页。然后,您必须再次单击它才能打开它。谢谢!
-
请不要链接到页面,请在您的问题中添加minimal, reproducable example。链接变得过时了,尤其是当您解决了问题时,链接将不再与您的问题相关,并且 SO 的目标是您的问题将来可以帮助其他人,过时不是一件好事。
标签: javascript jquery html accessibility keyboard-events