- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
图标的最佳解决方案-6ren"> 图标的最佳解决方案-我需要一个每个州都有不同图标的切换按钮。图标按钮如下所示: ... Disabled 如果我想更改图标 ( ),从辅助功能的 Angular 来看,什么是更好的解决方案? 有一个-6ren">
我需要一个每个州都有不同图标的切换按钮。图标按钮如下所示:
<button type="button" role="button" aria-pressed="false">
<svg class="icon">...</svg>
<span>Disabled</span>
</button>
如果我想更改图标 ( <svg>
),从辅助功能的 Angular 来看,什么是更好的解决方案?
有一个带有两个 svg 图标的按钮,而一个是显示的:无,具体取决于 aria-pressed
状态
有一个带有一个 svg 图标的按钮,该图标在点击时被替换
其他东西
最佳答案
最简单的解决方案是从可访问性的 Angular 来看根本不依赖 SVG。
因此,对于它们两个,您都可以使用 aria-hidden="true"
和role="presentation"
(因为旧屏幕阅读器对每个版本的支持可能不稳定)。
正如您可能知道的那样,我建议使用两个图标并将它们替换为 display:none
在其中一个或另一个上,或者更好的是为什么不花哨并在状态之间进行转换。
请注意,从辅助功能的 Angular 来看(因为我们将它们隐藏在屏幕阅读器中)并不重要,无论您使用两个图像还是使用一个图像并用 JavaScript 交换它们,如果图标位于DOM,而不是在 JavaScript 中使用丑陋的 SVG 标记。
按钮中已经有一些文字显示“已禁用”,我假设它会根据按钮状态更改为“已启用”。
在此阶段,您需要做的就是添加一些视觉上隐藏的文本(请参阅下面的 CSS 以在视觉上隐藏某些内容,但仍允许屏幕阅读器访问它)解释按钮功能。
因此,如果此按钮要启用深色主题,您将添加一些视觉上隐藏的文本来解释该按钮的用途。
将所有这些放在一起,您会得到以下内容:-
<button type="button" role="button" aria-pressed="false">
<svg class="icon active" aria-hidden="true" role="presentation" focusable="false">...</svg>
<svg class="icon hidden" aria-hidden="true" role="presentation" focusable="false">...</svg>
<span class="visually-hidden">Dark Theme </span><span class="state-toggle">Disabled</span>
</button>
视觉上隐藏的 CSS
.visually-hidden {
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
white-space: nowrap; /* added line */
}
你会看到我向 <span>
添加了一个“state-toggle”类您将从“禁用”切换到“启用”只是为了清楚地表明,“视觉隐藏”文本永远不应该改变。另请注意“深色主题”后面的空格,以确保正确读取。
我还在两个 SVG 中添加了“事件”和“隐藏”类,显然您最好只拥有“事件”或“隐藏”类并默认为某种状态,但这是出于演示目的。
另请注意我添加了 focusable="false"
到 SVG,否则 Internet Explorer 可能会由于错误而使 SVG 可聚焦。
最后一个考虑因素是aria-pressed
也有片状支持,您似乎正在创建一个“切换”(尽管使用不同的图标而不是开关)。
您正在做的事情完全有效并且应该有效,但您可以考虑使用复选框。
阅读此内容 in-depth article on different ways to implement toggles由 Hayden Pickering 编写,因为它提供了有关屏幕阅读器行为的大量见解以及 WAI-ARIA 支持问题/WAI-ARIA 后备的解决方法。
关于javascript - 辅助功能:当图标为子级时更改 <button Roles ="button"aria-pressed ="true"> 图标的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60707956/
我是 ARIA 角色的新手。如果我有工具提示类型功能,即如果有人单击问号按钮,会显示更多文本详细说明如何填写表单字段,我应该使用 aria-expanded 属性、aria-hidden 属性还是两者
我正在查看一些代码,其中一个标签具有属性 aria-owns 和 aria-expanded。我用谷歌搜索了它们,但没有找到足够的细节来完全理解它们的作用。 有人可以解释一下这些特定属性的用途吗?我对
当我通过 W3C 验证器运行它时,几天前使用无错误通过的 HTML 5 代码现在显示错误。错误看起来像这样: 元素 li 缺少以下一个或多个属性:aria-checked、aria-expanded、
有人可以详细说明aria-live="assertive"之间的区别吗?和 aria-live="polite" ? 据我了解 aria-live="assertive"将获得更高的优先级并清除队列,
我只是注意到,虽然 aria-label , aria-labelledby和 aria-describedby据说属性适用于每个元素(参见 https://www.w3.org/WAI/PF/ari
在我的网站上,用户可以单击“实时聊天”按钮,然后会出现一个聊天窗口。我正在寻找一些文本来读出(对于使用屏幕阅读器的辅助用户) 当聊天窗口出现时,焦点将转到输入文本框 - 用户可以在其中输入文本与顾问聊
W3C 将 WAI-ARIA 角色分为四组: 抽象角色 小部件角色 文档结构角色 标志性角色 有人可以解释一下抽象角色类别吗? 最佳答案 规范中确实提到: Abstract roles are the
W3C 将 WAI-ARIA 角色分为四组: 抽象角色 微件角色 文档结构角色 里程碑式的角色 有人可以解释抽象角色类别吗? 最佳答案 它确实在规范中说: Abstract roles are the
我试图让 voiceover 只读取 aria-describedby,但它是这样读取的(“我是一个按钮”未被读取) : 而如果有一个定义了 id aria-describedby="modal-la
人们问过 aria-controls 和 aria-owns 之间的区别。 aria-controls 是基于层次结构的父子关系,而 aria-owns 不是。 我想变得非常具体。 aria-cont
我已经四处搜索,如果可以将 aria-label 组合起来,我没有找到任何信息。和 aria-describedby对于一个元素,它是否会导致使用屏幕阅读器的人感到困惑? 我有一个包含许多项目的列表,
我有一个页面,我应该可以在没有太多更改的情况下访问该页面。 页面中的一个组合框被编码,以便在单击输入框时,div 的内容被复制到同一页面中的 iframe 元素中,并且该 iframe 在输入框下方可
使用时对元素的真正影响是什么 aria-owns="id" 和(!) aria-controls="id" 当使用这两个属性时,浏览器如何通知屏幕阅读器? 最佳答案 两个aria-controls和
使用 Bootstrap 模式,我经常看到这些 aria 属性,但我从来不知道如何使用它们。 有谁知道什么情况下使用这些属性?我用谷歌搜索——只是没有找到任何直接的答案。 最佳答案 HTML5 ARI
我想确定当用户单击其后代时可以自动隐藏一个元素(使用 JavaScript 来实现)。 例如: A Link 这是正确的方法吗? 最佳答案 虽然您可以创建自定义
使用 jQuery 在 #div1 中添加角色警报,读取 #div2 内容,即使它对于 JAWS 来说是隐藏的。 some content some con
我正在尝试将 aria-label 添加到网站上没有的所有链接。我想使用链接文本作为 aria-label。 $(document).ready(function () { $("a").each
我在互联网和 Angular Aria 文档上进行了搜索——它没有提到 aria-expanded 或 aria-selected? 有没有办法实现这个? 这将使: 谢谢。 最佳答案 我使用 ng
我发现了两种使用 aria- 属性标记区域的方法。 第一个: Blah-blah 第二个: Search results Blah-blah JAWS 读取它们完全相同。那
我有一个工具栏与各种按钮的列表。在某些情况下,按钮有一个标签,在其他情况下,它使用图像。。两者都被生成为具有到包含div的aria-Labelledby,该div具有标题属性。屏幕阅读器(NVDA,叙
我是一名优秀的程序员,十分优秀!