javascript - 检测伪 CSS 激活

标签 javascript css html

我有一个附加了以下 CSS 代码的 DIV:

   .active,#foo:active {background-color: rgba(0,0,0,0.75)}

此外,我还设置了 keydown 和 keyup javascript 例程来转换选定的按键以添加和删除“事件”类,并相应地使它变暗。我的问题是当用户点击 DIV(按预期使它变暗)时......但是在我运行的 setInterval 中,定期轮询 DIV 和其他几个类似的以获取状态信息,我遇到了无法告诉当前 DIV 状态。

通过事件类获取状态非常简单。我只需要这样做...

document.getElementById("foo").classList.contains("active")

这给了我一个我可以使用的 bool 值开/关,但下面的代码无法读取鼠标长按。

document.getElementById("foo").classList.contains(":active")

这是因为激活的伪类没有出现在类列表中。我尝试重写鼠标检查检查,使其看起来像这样:

document.getElementById("foo") === document.activeElement

但由于该元素是一个 DIV,因此它永远不会解析为 true,因为 document.activeElement 停留在页面的 BODY 元素上。我还尝试查看当前的背景颜色,但在使用 :active 时以下内容不会更新。

document.getElementById("foo").style.backgroundColor === "rgba(0,0,0,0.75)"

是否有另一种方法可以继续进行而不需要从 CSS 中删除 :active 并将 onclick() 和 onmouseout() 安装到我的代码中?根据我以这种方式设置的 DIV 的数量,使用该特定解决方法的扩展效果不佳。我更愿意检测 DIV 当前何时使用上述 CSS 规则。

请不要使用 jQuery 解决方案或外部库。我想使用原生 JavaScript。

最佳答案

伪元素不是 DOM 的一部分,因此您无法在其上触发事件。

https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

此外 .style 原型(prototype)函数没有按预期工作,要查找计算样式使用

var ele = document.querySelector('.example-value')
window.getComputedStyle(ele, null).backgroundColor === "rgba(0,0,0,0.75)"

https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

关于javascript - 检测伪 CSS 激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578580/

相关文章:

javascript - 将应用程序与 REPL 一起使用时如何解决 promise

javascript - 正则表达式 Javascript 数字逗号分隔 | > | >= <=

javascript - JS 中具有默认属性和类类型对象的数据结构是什么?

jquery - 内容居中的动画div-从右到左逐渐显示顶部

php - 如何在 wooCommerce 插件中制作/嵌入我自己的产品展示设计

javascript - jQuery 找到最近的

javascript - 依次播放动画

html - webkit css 调整大小不适用于 Canvas 作为 child ?

css - 过渡到元素背面的奇怪行为(Chrome)

javascript - ng-focus 不适用于 <button> 标签