CSS:
a:focus { opacity: .75 }
a:active { transform: translateY(4px) }
意图:
键盘用户标签指向链接,使用:focus
样式作为视觉提示
他们点击enter
来激活链接; :active
样式提供了可视按键反馈
问题:
:active
样式可以在鼠标单击时正确触发,但不能触发按键。我可以用CSS解决这个问题吗?
答案 0 :(得分:6)
好问题!
是的,你不能再这样做了。很久以前,MSIE对:active
:focus
进行了处理,因此有一种方法可以通过超链接实现这一目标(这是在千兆互联网速度和浏览器没有做好之前除了愚蠢的挥动旗帜之外,显示正在进行中的工作的工作。)
运行以下代码段以查看操作中的行为:
input type='button'
或ENTER
激活SPACE
SPACE
将显示:active
样式(FireFox除外;这看起来像FF错误,因为它适用于mousedown)ENTER
按钮会在每次键盘发送角色时反复触发onclick
。SPACE
键被释放且仍然专注于按钮时,按住onclick
按钮才会触发SPACE
。 (例如,您可以通过以下方式模拟鼠标单击:选项卡到按钮,按住空格,然后再次单击选项卡并释放它以取消单击。)ENTER
激活超链接。:active
样式,使用ENTER
(或触摸)则不会。
document.getElementById('t1').focus(); // set focus for easier demo

:active
{
color: Red;
}

<input type='text' id='t1' value='Set focus and hit tab'/>
<a href='javascript:;' onclick='console.log("Hyperlink")'>Hyperlink</a>
<input type='button' value='Button' onclick='console.log("Button")'/>
&#13;
因此,您不得不使用JavaScript或Flash / Silverlight这样的插件。
答案 1 :(得分:1)
你绝对可以让:focus
使用键盘,但是有效则会有点困难。
:focus
。例如,当用户通过鼠标单击输入字段或通过选项卡选择输入字段时。这是一个展示焦点如何工作的例子;使用制表符和鼠标。 W3School Focus了解更多信息MDN :focus
然而:active
有点不同。它会在用户单击鼠标按钮并释放它之间的时间轴中应用。使用键盘很难实现。因为输入键没有按住。用户按下回车键的那一刻,链接就会打开。在这里,您可以看到有关:active
如何工作的示例。 W3School Active了解更多信息MDN :active
如果您要将伪类用于链接,那么我建议使用:focus
,它将为鼠标和制表键提供技巧。