屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)?

2024-03-31

我听到建议.hidden类不作为

.hidden { display: none }

但将其宽度和高度设置为 1,并使用剪切等,使元素看起来仍然存在于屏幕上,但内容不可见。

但是,当我们使用 JavaScript 隐藏某些内容时,该元素的目的就已经完成,我们不希望它显示在屏幕上并且对屏幕阅读器不可见,这不是真的吗?

情况1:例如,如果是一个输入框,框内有一条灰色的文字“输入关键字”。当用户实际单击或按下键盘时(或使用input事件),现在我们有一个 JavaScript 处理程序来隐藏“输入关键字”文本,因为它只是输入框中的灰色提示。在这种情况下,文本不应该完全隐藏吗?实际上使用display: none,这样即使屏幕阅读器也无法读取它? (用户已经学会了足够的知识来开始打字,所以提示不应该仍然存在以供屏幕阅读器阅读,对吧?)

情况2:如果是弹出一个气泡,提示错误信息,或者有一个链接“输入您的邮箱进行我们的订阅”,就会弹出一个气泡,那么当气泡关闭时,气泡不应该是真的完全关闭了使用display: none?屏幕阅读器实际上不应该仍然能够读出已完成并关闭的气泡的这些内容。

情况 3:我能想到的唯一情况是屏幕阅读器应该可以使用“隐藏”的一小部分是:它是用于额外信息的气泡,例如产品评级(5 颗星中有多少颗星) ),或者当鼠标悬停在某些“?”上时会弹出额外的帮助信息。图标或链接。但即使在这种情况下,屏幕阅读器也不会真正读出“链接到更多信息”或“链接到显示评级”,即在alt or title标签的,并且在用户将其打开之前不读取弹出信息?

所以我的问题是:不应该有两种类型的隐藏吗?一是display: none键入屏幕阅读器不应该看到的内容(使其成为.hidden类),另一个是width: 1px; height; 1px屏幕阅读器可以看到(或将读出)(使其成为.a11y-hidden类),类型 2 的出现频率是否远低于类型 1?


大多数情况下,就是这样。

编辑2014:我切换到来自 Yahoo! 的 TJK 的剪辑方法 https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html(因为隐藏跨度到只有 我更喜欢position: relative; left: -5000px超过裁剪 1x1px,我知道 Yahoo!团队只使用后者,但目标是相同的。
我也将称之为.visually-hidden(来自 WordPress 和其他 CMS 和框架中的二十个主题)。.a11y-hidden则意味着相反:它只能由屏幕阅读器以纯 HTML 形式可见(可感知)。

选项卡内容、尚未发生的错误消息(您的案例 2)不应该被任何人察觉。屏幕阅读器用户必须像其他人一样单击选项卡才能显示其内容。
Note: display: none AND visibility: hidden屏幕阅读器将忽略元素。其中一些(特别是 OS X 上的 VoiceOver)会忽略带有以下内容的元素:height: 0, etc

相关文章:WebAIM 仅供屏幕阅读器用户使用的不可见内容 http://webaim.org/techniques/css/invisiblecontent/

情况 1:被读出的重要部分是与 关联的标签for/id到表单字段。
如果您使用键盘从一个字段导航到另一个字段,则当您将其聚焦时,该文本将会消失,并且缩放至 x00% 的用户将看不到它。 HTML5 引入了placeholder属性与此提示具有相同的作用(这不是标签的替代品,这是一个提示,但很少有人阅读 HTML5 文档之一),即使它在视觉上是隐藏的,仍然可以传递给屏幕阅读器。

情况 3:此信息应以可访问的方式在 HTML 中编码,因此您不需要在视口外或像素中直观地隐藏信息。
替代文本是首选方式(或者更好的是在其旁边有一些真实文本的视觉效果,同时避免太多混乱。我没有接受过人体工程学方面的培训,这通常会惹恼想要从页面中删除所有内容的网页设计师;)) 。
title属性只能用在链接上,并且您永远无法确定屏幕阅读器会选择阅读它们。这是个人问题并根据每个站点进行设置。他们可能会对某些网站感到非常恼火,以至于他们会在各处禁用这些标题...不过,如果由于某种原因您无法以其他方式添加信息,那么它仍然是添加信息的最佳技术之一。

我该如何使用这个.visually-hidden class?

  • quick access links (to content, navigation and search input) when they don't appear in the mockup. When focused, they'll be brought to screen as in http://www.nanomatrix.fr/ http://www.nanomatrix.fr/ (press Ctrl-L or Cmd-L, tab half a dozen times on Windows and enable tabbing through links in Safari and/or OS X. See on upper left the 3 links)
  • 在标签上,由于某些(坏的)原因,它们不在我收到的模型中。最好有一个修复(这是一个很好的修复),而不是在事先没有想到的情况下不采取任何措施来提高可访问性......
  • 表格的标题,因为大多数时候显示它们是来自客户、外部网页设计师等的拒绝
  • 当它以性能方式编码但不太易于访问时,在字体图标旁边包含信息的跨度上。使用字体图标的方法有很多种,我只讲几个用例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)? 的相关文章

  • UIBarButtonItem 如何禁用辅助功能 (iOS)

    SO 我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性 虽然我可以为没有标题的按钮禁用它 但我似乎无法为有
  • 如何将语音焦点转移到我的模式?

    我使用的是 iPhone 6 并且打开了语音 辅助功能 选项 我在链接单击时打开了退出模式 并将键盘焦点设置在模式上 使用 js 这一切都很好 但是 焦点旁白并未切换到我的模式 它仍然位于触发链接上 如何将语音焦点转移到模式上 这是模态代码
  • 如何从 NSView 或 NSWindow 创建 AXUIElementRef?

    关于 macOS Accessibility API 是否可以创建对应于 NSView 或 NSWindow 的 AXUIElementRef 在 Carbon 时代 似乎有一种方法可以使用 AXUIElementCreateWithHIO
  • CSS 不透明度如何影响可访问性?

    在浏览了一些谷歌和其他 SO 文章后 我决定简单地提出我的问题 希望得到一个简单 直接的答案 为讨论添加进一步的步骤opacity 0 与visibility hidden 的效果完全相同吗 https stackoverflow com
  • 如何提供一种易于使用的高对比度替代柔和的配色方案?

    如何确保网站的颜色主题提供符合以下要求的高对比度替代方案WCAG 2 最低对比度要求 https webaim org articles contrast sc143除非用户想要或需要更高的对比度 否则更喜欢柔和的低对比度主题 我尝试定义一
  • Safari 忽略 tabindex

    我在一个文本框旁边有 2 个按钮 在这两个按钮后面有另一个文本框 第一个文本框的 tabindex 为 1000 第一个按钮为 1001 第二个按钮为 1002 第二个文本框的 tabindex 为 1003 当我按 Tab 时 tabin
  • 以编程方式移动辅助功能焦点

    按下按钮时是否可以将辅助功能焦点 iOS 的 VoiceOver 和 Android 的 Talkback 移动到定义的小部件 我尝试过在语义包 https api flutter dev flutter semantics semanti
  • UIAccessibility 更改 UITableView 配音公告(第 # 行)

    启用 VoiceOver 后 用户可以使用 3 指滑动手势来滚动 TableView VoiceOver 向用户口头宣布一个短语 指示他们在桌面视图上的位置 即可见的行 例如 第 1 行到第 4 行 共 5 行 我想覆盖此口头提示并通过画外
  • 没有单位的行高的缺点?

    在没有单位的情况下指定行高是否有任何缺点 浏览器 设备不一致 Example body line height 1 5 在大多数情况下 使用无单位行高实际上更好 请参阅 http meyerweb com eric thoughts 200
  • 在 UITableView 标头中包含的 UIImageView 上设置accessibilityLabel

    我有一个UITableView我内置的loadView 我在做的事情之一loadView是创建一个UIView充当表头并填充UIImageView进去 图像视图包含作为风格化标题的图像 因此我想为 VoiceOver 用户添加辅助功能标签
  • 以编程方式在 UIBarButtonItem 上设置辅助功能标识符

    可访问性标识符是开发人员为 GUI 对象生成的 ID 可用于自动化测试 A UIBarButtonItem不执行UIAccessibilityIdentification 但是 我是否可以分配一个辅助功能标识符 你可以子类化UIBarBut
  • VoiceOver 的 UISlider 可访问性特征?

    使 UISlider 在启用 VoiceOver 的情况下可用所需的正确 UIAccessibility 特征和处理程序是什么 是否有关于用户如何使用启用 VoiceOver 的 UISlider 的描述 以下是我最终添加到 UISlide
  • 自定义绘制的 UITableViewCell 中的可访问性

    当您进行自定义绘图时 UITableViewCells 滚动速度会显着提高 但是辅助功能会中断 应该如何向这样的单元添加辅助功能支持 老问题了 但 iOS 已经内置了对这种辅助功能的支持 看看UIAccessibilityContainer
  • 是否可以将整个“卡片”包装在 标记中?

    在我的网站中 我有 卡片 每张卡片都包含许多元素 图像 文本 日期等 这有点像 Twitter 中的推文卡 我希望整个卡片都是可点击的 应该是到另一个页面的链接 目前 我有顶级元素作为 a 标记和使用aria label and aria
  • 将 HTML 'label' 标签与单选按钮一起使用

    是否label标签与单选按钮一起使用吗 如果是这样 你如何使用它 我有一个显示如下的表单 First Name text field Hair Color color drop down Description text area Salu
  • 优雅降级 - 何时考虑

    在为使用 AJAX 的应用程序设计和构建 UI 时 您何时考虑优雅降级 对于禁用 JavaScript 或正在使用屏幕阅读器的用户 最后 网站的 AJAX 版本完全完成后 在每个发展阶段 I don t 还有别的事 这些日子 渐进增强 ht
  • 当聚焦非 UILabel titleView 时,VoiceOver 会读取辅助功能标签两次

    我在使用 VoiceOver 时遇到了一个奇怪的问题 Goals Set a UIStackView含有多个UILabel就如我的navigationItem titleView 将堆栈视图标记为辅助功能元素并设置其accessibilit
  • API 24 AccessibilityService.dispatchGesture() 方法如何工作?

    通过 API 24 我们有了一种向设备发送手势的方法 但是目前还没有可靠的文档或示例 我正在尝试让它工作 但目前手势每次都会点击 onCancelled 回调 这是我调用该方法的代码 TargetApi 24 private void pr
  • 当使用 XHTML 严格且无 JavaScript 时,替代 target="_blank"!

    我需要严格使用 XHTML 我需要确保我的网站无需使用 JavaScript 即可运行 我需要从我自己的应用程序打开一个新的帮助窗口 当然 当没有检测到 javascript 时 我想使用 target blank 但这不是 XHTML 严
  • xhtml 文档 - Lang 选项问题

    下面显示的两行有什么区别 如果我没有meta标签 会有什么后果 元版本是否会影响屏幕阅读器而顶部版本则不会 我对他们到底做什么有点困惑 预先感谢您的任何帮助 此致 Skip 深入研究辅助功能识别您的语言页面 http diveintoacc

随机推荐

  • 指定形状宽度会生成错误:指定的尺寸对于当前图表类型无效

    我正在尝试将 Excel 图表另存为图像 通过整个代码 我调用了几个工作簿 查找所有工作表并保存所有图表 以下代码适用于 Excel 2007 和 2010 但由于 4 有可见的水平线和垂直线 如果我改变Round shp Width 4
  • Groupby pandas dataframe 具有相同值的两列

    我想要groupby A 和 B 中具有相同值的两列并制作cumsum基于该值所在的列 值的分组数据框示例 A B ValueA ValueB 0 b a 1 3 1 c a 2 2 2 a b 2 4 现在 如果该值位于 A 列中 则考虑
  • 从 Iron Python 生成 .NET 程序集

    我有一个 Iron Python 脚本 我想运行它 然后让 ipy 解释器输出一个可以在其他计算机上运行的程序集 我怎么做 是否有一个开关可以传递给 ipy exe 使用SharpDevelop 一种方法是使用夏普开发 http www i
  • 通过读取初始 .DBF 字节可以采用哪种标头格式?

    关于 DBF文件的第一个字节以及如何检测所使用的xbase版本 即文件其余部分的格式 我可以编译的最全面的列表是 Byte 0 x xxx x 001 0x 1 not used 0 000 0 010 0x02 FoxBASE 0 000
  • Ember.js - jQuery-masonry + 无限滚动

    我正在尝试在我的 ember 项目中实现无限滚动和砌体工作 砖石 砖块 是带有文字和图像的柱子 目前 我可以在页面初始加载时显示第一页并应用砌体 不过 我仍然需要执行 setTimeout 试图找出如何摆脱它 我还有基本的无限滚动代码 现在
  • 使用 Web 部署发布 ASP.NET MVC2 站点

    我目前使用 Web 部署 http learn iis net page aspx 346 web deploy http learn iis net page aspx 346 web deploy 发布我的 MVC2 应用程序 它曾经工
  • file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

    以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html include simple html dom php context stream context create array http gt array m
  • 在SAX解析期间确定根元素

    我正在使用 SAX 来解析 XML 文件 假设我希望我的应用程序only处理带有根元素 animalList 的 XML 文件 如果根节点是其他节点 SAX 解析器应该终止解析 使用 DOM 你可以这样做 Element rootEleme
  • 在 Flutter 中使用 After Effects 文件

    我知道如何导出Rive在 Flutter 应用程序中使用的 Flare 文件 但我怎样才能import Adobe 后遗症文件到 Rive 我知道可以这样做Lottie但我无法弄清楚如何准确地做到这一点 您可以轻松导入 bodymovin
  • 如何使用 Jest 和 vue/test-utils 测试输入文件

    我想使用 Jest 和 vue test utils 测试文件上传器组件 我有这个 describe show progress bar of uploading file gt const wrapper mount FileUpload
  • 如何在 lldb 中创建和使用临时 NSRange?

    NSRange 只是一个 C 结构体 我想在 Xcode 的 lldb 中的断点处创建一个临时的 专门用于 NSArray 方法objectAtIndex inRange 这是行不通的 lldb expr NSRange tmpRange
  • 高效更新 Bokeh 中的图像图以实现交互式可视化

    我正在尝试使用 Bokeh 创建多维数组的不同切片的平滑交互式可视化 切片中的数据根据 用户交互而变化 因此每秒必须更新几次 我编写了一个 Bokeh 应用程序 其中包含几个小图像图 64x64 值 来显示切片的内容 以及在用户与应用程序交
  • 根据年份合并 data.frames 并填写缺失值

    我有两个 data frames 我想将它们合并在一起 第一个是 datess lt seq as Date 2005 01 01 as Date 2009 12 31 days sample lt data frame matrix nc
  • JavaFX:如何在不关注主窗口的情况下关闭子窗口

    我试图在一定时间后以编程方式关闭子窗口 这个子窗口的initOwner是与主舞台一起设置的 但是关闭这个子窗口后 主窗口就会获得焦点 有什么方法可以在不关注主窗口的情况下关闭子窗口 以编程方式 下面是我的问题的快速演示 我尝试了所有可能的方
  • OSX 上“没有名为 _scproxy 的模块”

    我使用的是预装 python 2 6 的 OSX 10 6 并且想通过 easy install 或 setup py 在下载的包中 安装 python 包 就我而言 我正在尝试安装 MySQLdb 在这两种情况下 我都会得到一个堆栈跟踪
  • 在处理其他事情时如何将一堆未提交的更改放在一边

    如果我有一堆未提交的更改 并且想在处理其他事情时将其放在一边 然后稍后 例如几天后 返回并继续工作 完成此任务最简单的工作流程是什么 到目前为止我只体验过 Mercurial 的基本功能 我通常的方法是使用克隆创建一个新分支 但可能有更好的
  • 自动布局问题 Xcode 8 [_SwiftValue nsli_superitem]

    将我的代码转换为 Swift 3 我发现了一个奇怪的问题 现在 2016 年 9 月 15 日 Xcode 8 公共版本 已经发布 转换代码后 我的应用程序崩溃了 没有明显的原因 自动布局有问题 日志显示如下 SwiftValue nsli
  • Android,在库项目中提供应用程序特定常量的最佳方式?

    我正在为许多 Android 应用程序创建一个库项目 这些应用程序都具有一些我希望包含在库项目中的通用功能 但库项目功能需要使用特定于应用程序的常量 所以我正在寻找一种方法来为库函数提供常量名称并允许每个应用程序定义它们 特定应用程序常量的
  • data.table 中的 Between 与 inrange

    In R s data table 什么时候应该选择 between and inrange 用于子集化操作 我已阅读帮助页面 between我仍然对这些差异感到摸不着头脑 library data table X data table a
  • 屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)?

    我听到建议 hidden类不作为 hidden display none 但将其宽度和高度设置为 1 并使用剪切等 使元素看起来仍然存在于屏幕上 但内容不可见 但是 当我们使用 JavaScript 隐藏某些内容时 该元素的目的就已经完成