【发布时间】:2017-06-23 13:57:07
【问题描述】:
更新:感谢 Crowes 和 Boltclock 下面的解释,我现在对 CSS 伪类明确地静态有了更清晰的理解(即描述元素的状态)当下)。
虽然 javascript 事件存在时间维度,但 CSS 伪类则相反,当前为真或假。
因此,与表面上类似的 javascript 事件不同,CSS 伪类不会(也不能)引用用户之前与该元素的交互。
这使我的问题在很大程度上是多余的。
在 2017 年,令人惊讶的是,尽管 CSS 已经拥有 :hover 几十年了,但它仍然缺乏伪类最明显的补充 - :click。
我搜索了 Stackoverflow,并在 2012 年 11 月的这个问题中:
Can I have an onclick effect in CSS?
评分最高的答案:
使用
:active
不是onclick 的一个很好的替代品——如果有的话:active 实际上是onmousedown 的替代品。
评分第二高的答案 -
使用复选框技巧
不是语义化的(而且......随着黑客的发展,感觉很hacky)。
所以。 javascript 的onclick 是否有最小的纯 CSS 替换?
【问题讨论】:
-
1) :hover 是一个伪类,正如您正确标记的那样。 “伪元素”和“伪类”不可互换 2) :click 甚至如何工作?如果它代表一个被点击的元素,那么它会瞬间发生,以至于您将永远无法看到您在包含该伪类的规则中应用的样式。这样的伪类不存在一点也不奇怪,因为它根本没有意义。
-
感谢@BoltClock 强调我的错字。是的,我的意思是伪类。已更正。
-
在阅读了您在上面链接的问题中的“动态伪类表示状态”解释后,我可以更好地理解您的问题“如何
:click还能工作吗?” 我的回答是:click代表:has-been-clicked而不是:is-being-clicked(如果我没记错的话,是 毕竟:active代表什么)。但我知道:has-been-clicked与状态:is-being-hovered-over不同。 -
这确实更有意义。尽管它没有语义,但复选框 hack 已尽可能接近。它在 2017 年仍然具有相关性是有原因的。即使我已经屈尊使用它,但我不确定我是否对此感到高兴。
标签: javascript css css-selectors pseudo-class