为啥 Web 浏览器不应用 CSS :active 状态通过回车键激活?
Posted
技术标签:
【中文标题】为啥 Web 浏览器不应用 CSS :active 状态通过回车键激活?【英文标题】:Why do web browsers don't apply the CSS :active state on activation by enter key?为什么 Web 浏览器不应用 CSS :active 状态通过回车键激活? 【发布时间】:2015-12-30 17:22:06 【问题描述】:大多数网络浏览器都提供了与 DOM 交互的键盘快捷键。 例如:
Tab
将焦点转移到下一个可聚焦元素Alt + Tab
将焦点转移到前一个可聚焦元素Enter
激活当前聚焦元素
我现在发现,如果通过按下 Enter
键激活元素,许多流行的浏览器(Firefox、Chrome、Safari、Internet Explorer)不会应用 CSS :active
伪类。
为什么会这样?
我认为这具有误导性,因为看起来您没有触发按钮;虽然你确实这样做了。
【问题讨论】:
我在这里提出了一个规范不够明确的问题:github.com/w3c/csswg-drafts/issues/4787 【参考方案1】:https://developer.mozilla.org/en-US/docs/Web/CSS/%3Aactive
根据 mozilla 文档,active
伪类与鼠标和 tab 键有关。但是没有提到 Enter 键。
【讨论】:
这并不能以任何方式回答我的问题。【参考方案2】:根据CSS Selectors specification:
:active 伪类在元素被激活时应用 由用户。例如,在用户按下鼠标的时间之间 按钮并释放它。 [...]
因此,标准明确规定当用户单击元素时应应用:active
。没有别的了,所以这不是浏览器的问题,这是缺少标准的结果。
【讨论】:
它并没有说当用户点击它时应该应用它。它说应该在激活元素时应用它。并且输入确实激活。点击只是一个例子。 是的,但只要没有明确说明其他任何事情,就不会给出其他示例;您可以得出结论,单击必须在所有浏览器中都有效,因为它是在标准中设置的。同时,其他所有内容都没有描述,完全取决于浏览器开发人员。如果你没有建房子的要求,你就不会建房子,对吧?没有“激活”元素的描述 :active 伪类在元素被用户激活时应用。 是的,但是您能告诉我被激活是什么,并在标准中显示这个吗?这里所说的你不想理解的是标准定义了浏览器的工作方式。如果没有标准 - 即使您认为它是显而易见的,您也不应该期望它会起作用。 您能否在此 URL 中添加说明正在激活的内容?我在那边找不到类似的东西以上是关于为啥 Web 浏览器不应用 CSS :active 状态通过回车键激活?的主要内容,如果未能解决你的问题,请参考以下文章
用纯js就可以写一个网页!为啥还要用html和css,为啥不把html及css舍去??有这发展
css中 如何把新闻这一行变成绿色? 为啥添加active background-color:#afc; 之后
强制客户端浏览器重新下载我们的 asp.net Web 应用程序的 .css 和 .js 文件的优雅方式(不完全禁用缓存)