当前位置: 首页 > 知识库问答 >
问题:

可访问性和JavaScript:加载动态内容还是显示和隐藏?

杨凯旋
2023-03-14

我对前端代码中的可访问性标准比较陌生。

我的问题是:

  • 为了实现可访问性,首先加载所有HTML内容并通过“hidden”属性显示/隐藏它是否更好?
  • 或者我可以动态加载内容并用适当的属性填充它吗?
  • 如果是,您建议我向内容添加哪些属性以通知用户内容已更新和/或更改?

例如:
我有一个带有一些按钮/选项卡的navbar,这些按钮/选项卡可以加载适当的内容。我可以加载所有内容,然后显示/隐藏is,类似于下面:

 <nav>
  <div class="tabs" role="tablist">
    <button
      id="tab-1"
      role="tab"
      aria-controls="tab-content-1"
      aria-selected="true"
      <!-- onClick={show/hide associated content} -->
    >
      Tab-1
    </button>
    <button
      id="tab-2"
      role="tab"
      aria-controls="tab-content-2"
      aria-selected="false"
      <!-- onClick={show/hide associated content} -->
    >
      Tab-2
    </button>
  </nav>

  <div>
    <!-- Content for Tab/Button #1, preloaded and hidden/shown from button click -->
    <section
      id="tab-content-1"
      role="tab-content"
      aria-labelledby="tab-1"
      hidden
      >
      Tab Content-1
    </section>
    <!-- Content for Tab/Button #2, preloaded and hidden/shown from button click -->
    <section
      id="tab-content-2"
      role="tab-content"
      aria-labelledby="tab-2"
      hidden
    >
      Tab Content-2
    </section>
</div>

或者我可以通过tab/button点击动态加载内容

<nav>
  <div class="tabs" role="tablist">
    <button
      id="tab-1"
      role="tab"
      aria-controls="tab-content-1"
      aria-selected="true"
     <!-- onClick={load appropriate content and HTML } -->
    >
      Tab-1
    </button>
    <button
      id="tab-2"
      role="tab"
      aria-controls="tab-content-2"
      aria-selected="false"
      <!-- onClick={load appropriate content and HTML } -->
    >
      Tab-2
    </button>
  </nav>

  <div>
    <!-- Dynamically load the associated Tab Content via Javascript Here
    <section
      id="" => dynamically set 'id'
      role="" => dynamically set 'role'
      aria-labelledby="=" => dynamically set 'arria-labelledby'
      >
      // Dynamically set Content
    </section>
    -->
</div>

共有1个答案

谷梁俊楚
2023-03-14

首先,您应该使用CSS display:none而不是aria-hidden来隐藏内容。属性aria-hidden应该只在非常特定的情况下使用。我建议你在什么时候应该和不应该使用咏叹调隐藏,以及为什么会这样。许多问题已经很好地涵盖了这个话题。

回到您最初的问题,仅就可访问性而言,如果内容只是使其可见或加载,则不会有太大改变。

使用aria-live区域告诉内容正在加载,以防加载可能需要一段时间。但是,不要将aria-live用于更新的/新的内容本身,特别是如果它很长和/或包含可聚焦的元素

决定您应该显示/隐藏还是动态加载基本上不是一个可访问性的问题。它更多地取决于初始加载时间和后续加载时间,以及您期望的响应级别。

 类似资料:
  • 这几天来我一直在用我的头来对付它。我看了所有类似的问题,但它们不太符合我需要的。 我觉得很难相信没有人尝试过,或记录过,这之前,我想要一些想法,如何处理这一点。 要求 我正在为我的应用程序使用react引导程序,我想让用户在一组引导主题之间进行选择。为了保持简单,我目前只有一个光明和一个黑暗。这些样式是https://bootswatch.com/提供的scss,所以我不想尝试JS主题中的常见CS

  • 本文向大家介绍JQuery DIV 动态隐藏和显示的方法,包括了JQuery DIV 动态隐藏和显示的方法的使用技巧和注意事项,需要的朋友参考一下 1. 如果在载入是隐藏: 2. 动态隐藏和显示: 以上代码之前,可能还要加上这句话: 使用jquery真的很方便,比如要控制div的显示与隐藏,一句话就搞定了,请看下面使用说明。 $("#id").toggle()切换元素的可见状态。如果元素是可见的,

  • 我需要在小设备上的模态/全屏面板中显示某些内容,由按钮触发。在大型设备上,相同的内容总是显示出来,然后触发器被隐藏起来。 您如何处理这一问题以实现可访问性? 当前,我有此设置 最初,通过CSS隐藏在小型设备上(在以小型设备为目标的媒体查询中)。当触发器命中时,我将设置为true,并向面板本身添加一个类,它通过CSS显示全屏。在大型设备上,我隐藏该按钮,并始终通过CSS(在针对大型设备的媒体查询中)

  • 问题内容: 我一直在寻找一个很好的技巧,使隐藏/显示内容或仅具有CSS而没有javascript的列表。我已成功执行此操作: 并且它正在工作,但没有达到应有的效果。这是问题所在:显示内容时,您可以通过单击“页面上的任何位置”将其隐藏。如何禁用它?如何通过单击“隐藏”隐藏内容“仅”?先感谢您! 问题答案: 我不会使用复选框,而是使用您已经拥有的代码 CSS HTML 这样,仅在单击hide元素时隐藏

  • 问题内容: 我想简化我的jQuery Backbone.js Web应用程序中的内容。一种简化就是我的菜单和对话框小部件的行为。 以前,我是在开始时创建菜单的div框并使用来隐藏它们的。当我需要菜单时,我更改了样式,然后使用jQuery ui位置工具定位div框(由于无法定位具有的元素),完成后,最终将其样式更改为。 现在,我想用隐藏它们,然后在需要时使用position实用工具,然后将样式更改为

  • 本文向大家介绍Android 动态显示和隐藏状态栏详解及实例,包括了Android 动态显示和隐藏状态栏详解及实例的使用技巧和注意事项,需要的朋友参考一下 Android 动态显示和隐藏状态栏 View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。 setSystemUiV