【问题标题】:css ":active" with right click, inconsistencies with browser implementation右键单击css“:active”,与浏览器实现不一致
【发布时间】:2013-04-10 20:07:05
【问题描述】:

我刚刚注意到浏览器处理 css 的方式之间存在不一致:右键单击元素时的活动状态(上下文菜单单击)

  • Firefox: :active 未触发
  • Chrome: :active 被暂时触发,直到 mouseup 发生
  • Safari 5 & IE 10: :active 被触发并且元素保持 :active 直到上下文菜单关闭

这里有一个快速的 jsfiddle 来复制这个 http://jsfiddle.net/annam/tqBqV/

div { background: red; }
div:active { background: green; }

有人知道正确的行为吗?估计没办法标准化吧?

【问题讨论】:

  • :active 一般用于左键点击
  • @Mr.Alien 完全是 :) 理想情况下,它永远不会在右键单击时触发,但唉,确实如此,而且不一致!
  • "(这里有一些无用的代码,因为 sa 在给出 js fiddle 链接时需要代码)" jsFiddle 没有为我加载,所以我不知道该代码是否真的只是为了避开质量过滤器专为诸如 jsFiddle 拒绝加载或代码来自您的 fiddle 等情况而设计,这将避免,更不用说矛盾,这样的编辑评论。

标签: css cross-browser css-selectors pseudo-class


【解决方案1】:

Selectors 3 表示当元素被激活时:active 为真,并进一步定义通过鼠标等指针设备在按下主按钮时激活:

  • :active 伪类在用户激活元素时应用。例如,在用户按下鼠标按钮并释放它的时间之间。在具有多个鼠标按钮的系统上,:active 仅适用于主要或主要激活按钮(通常是“左”鼠标按钮)及其任何别名。

如果在特定浏览器中为了:active 的目的而二次点击激活元素,则该浏览器违反规范(除非浏览器声称仅实现CSS2.1,此限制为不是一成不变的,但对于任何给定的浏览器都不是这样)。

【讨论】:

  • +1。值得直接指向to the spec,因为它故意含糊不清:“CSS 没有定义哪些元素可能处于上述状态,或者状态如何进入和离开。脚本可能会改变元素是否对用户事件做出反应,并且不同设备和 UA 可能有不同的指向或激活元素的方式。”
  • @CherryFlavourPez:我更新了最新规范的链接,该规范确实在一定程度上定义了它。对于实现选择器 3+ 的浏览器,CSS2.1 选择器规范可以被认为是过时的。也就是说,我将再次编辑我的答案以详细说明这一点。
  • 所以firefox完全没有触发 :active !并且 safari & ie 不仅违反了“仅主键”规则,它们还违反了“用户按下鼠标和释放鼠标之间的时间”规则,即使在释放鼠标按钮后也保持 :active 状态。非常感谢!
  • 我在这里提交了一个 Chrome 错误:bugs.chromium.org/p/chromium/issues/detail?id=966255
猜你喜欢
  • 2014-02-06
  • 2018-08-12
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多