Jeremey 对 Sara 的推文 进行了回应,该推文介绍了在您应用的样式直接与 ARIA 状态相关时,使用 [aria-*]
选择器代替类。
… 这是我首选的连接 CSS 和 JavaScript 交互的方式。这里有一个 旧的 CodePen,您可以看到它在行动
这是一场经典对决
[aria-hidden='true'] {
display: none;
}
还有更多机会。以标签设计组件为例
由于这些标签(使用 Reach UI)已经为活动标签等内容应用了正确的 ARIA 状态,它们甚至不使用类名操作。要为活动状态设置样式,您可以选择带有数据属性和 ARIA 状态的 <button>
,例如
[data-reach-tab][aria-selected="true"] {
background: white;
}
包含内容的面板?它们具有 ARIA 角色,因此以这种方式设置样式
[role="tabpanel"] {
background: white;
}
ARIA 有时也与变体相匹配,例如…
[aria-orientation="vertical"] {
flex-direction: column;
}
如果您想问,什么是 ARIA?Heydon 的新节目 _Webbed Briefs_ 有 一个有趣的 ARIA 简介 作为试播集。
嗨,这太棒了。
一个问题,关于这个建议
这会不会有点太多了——例如,如果您想让某些内容对屏幕用户可见,但对辅助技术不可见?
我想起一个例子,Font Awesome 4 图标通常使用诸如
<i class="fa fa-something" aria-hidden="true"></i>
的语法,尽管我赞赏使用较新版本的 SVG 等,现在这个问题已经不那么严重了?诚然,我突然想到的大多数例子都是装饰性的,所以您理想情况下会更喜欢 CSS 来实现!(并且扫描了一些大型项目,我们目前仍在使用旧版本的 Font Awesome,这是我们唯一使用 aria-hidden 的例子!)
想知道您是否可以根据 aria-label 内容选择元素。例如,在 Twitter 上,趋势标签侧边栏有
aria-label=”时间线:趋势标签”
它没有 ID,并且与其他许多元素共享类。但是,我只想在 CSS 中选择该趋势标签侧边栏,并在使用 Twitter 时使其消失。
我想它应该是这样的
SOMESELECTOR {display:none;}
但不确定这在 CSS 中是否可行,以及 aria-label 会有怎样的支持。
想知道您是否遇到过这种情况?
—— Chris