【问题标题】:How can I make Owl Carousel dot navigation buttons accessible?如何使 Owl Carousel 点导航按钮可访问?
【发布时间】:2020-01-07 20:05:42
【问题描述】:

我正在尝试解决 Google Chrome Lighthouse Audit 报告的所有问题。我进展缓慢,但“可访问按钮”有问题。

这些按钮是 Owl Carousel 2 库中的“点导航”,它们似乎无法真正访问。这是灯塔信息:

当按钮没有可访问的名称时,屏幕阅读器会将其宣布为“按钮”,从而使依赖屏幕阅读器的用户无法使用。

失败的元素

button.owl-dot.active
button.owl-dot

我无法真正操纵负责生成点导航栏的代码,我想知道,在这种情况下,最好的方法是什么。我需要添加 name 属性和我猜的“上一个”和“下一个”值,但我应该用 JS 添加该属性吗?小伙伴们有遇到过猫头鹰2这样的问题吗?如果是这样 - 请让我知道,因为也许还有另一种更好的方法来做到这一点。

最好的问候,

【问题讨论】:

  • 您的问题可能得到了反对票和关闭票,因为您似乎没有做出努力。有了这样的东西,查看the events in the API 可以让你走得很远,然后你可以询问你遇到的任何陷阱。

标签: javascript html owl-carousel-2


【解决方案1】:

由于它是一个 jQuery 插件,我只需要在 onInitializedonResized 回调中使用 jQuery 来为按钮添加屏幕外文本节点:

<style>
.offscreen {
     position: absolute;
     left: -999em;
}
</style>

<button><span></span><span class="offscreen">Go to slide 3</span></button>
<!-- the first span is there by default -->

这可能看起来像这样:

let owl = $('.owl-carousel').owlCarousel({
    // ...,
    onInitialized: addDotButtonText,
    onResized: addDotButtonText
});

function addDotButtonText() {

    // loop through each dot element
    $('.owl-dot').each(function() {
        // remove old text nodes
        $(this).find('.offscreen').remove();

        // grab its (zero-based) order in the series
        let idx = $(this).index() + 1;

        // append a span to the button containing descriptive text
        $(this).append('<span class="offscreen">Go to slide ' + idx + '</span>');
    });
}

Fiddle demo

如果您觉得这些点对屏幕阅读器用户没有用处,并且对他们只有上一个和下一个按钮(已经可以访问)进行导航感到满意,那么您可以有效地将点隐藏在回调并减少不必要的干扰:

$('.owl-dots').attr('aria-hidden', 'true');

这可能是一个值得商榷的策略,因为我们应该努力为所有用户提供相同级别的交互。但是,由于屏幕阅读器用户一开始可能不会使用滑块控件,因为所有幻灯片都应该始终可读,所以这可能根本不是问题。

【讨论】:

  • 我做了这样的事情: onInitialized: () => { let navDotButtons = document.querySelectorAll(".owl-dot"); navDotButtons[0].setAttribute("aria-label", "first-page"); navDotButtons[1].setAttribute("aria-label", "second-page");它实际上解决了我的问题。你怎么看?
  • 我认为这是很多重复(你怎么知道要容纳多少点?),但如果它适合你,那就太好了!提示:反引号 (`) 将在 cmets 中标记 code
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多