【发布时间】:2013-10-31 16:19:29
【问题描述】:
WCAG 2.0 建议在链接元素上使用:hover 以支持键盘导航时也使用:focus。这适用于链接元素,但两者之间存在一些差异。
- 任何元素都可以具有
:hover状态,而只有极少数元素可以被聚焦 - 当悬停在一个元素上时,您也悬停在其所有父元素上。这不是焦点的情况
这个问题完全是关于 css 的。有没有办法模拟:hover(如上所述)的行为以进行键盘导航?或者有什么强烈的理由不希望这样做?
为了更清楚,这里举个例子:
html:
<div id="box">
foo bar
<a href="#">click me</a>
</div>
css:
#box {
opacity: 0.3;
}
#box:hover {
opacity: 1;
}
#box a:focus {
opacity: 1;
}
使用鼠标时,我会先将鼠标悬停在链接元素上,然后再使用它。由于:hover 状态向上传播,#box 将完全不透明。
当使用键盘时,我会在使用前聚焦链接元素。由于:focus 状态不向上传播#box 将不完全不透明。
【问题讨论】:
-
非常有趣.. 但我很确定
opacity只是不适用于:focus,而不是相反。根据我所知道的,您只能更改事件的一些属性,例如:active/:focus/:visited.. 我可能是错的.. 见jsfiddle.net/8G4bY ...编辑...看来好像opacity在某些情况下确实有效.. jsfiddle.net/GcxMk -
angular-deep-blur 有点相关。它检查焦点元素是否在指定的子树中,并针对该子树中的每个模糊事件集中执行代码。
标签: css hover accessibility