在纯JavaScript中检查由相同颜色/背景色隐藏的元素的最简单方法是什么?
示例:div中白色背景上的白色文本。我想检查元素的渲染颜色/背景色,因此即使在应用外部CSS样式时也可以使用。
另外,由于没有可用的jQuery,因此必须使用纯JavaScript来完成。
我没有尝试过,但是您可以使用jQuery .offset()
来获取文本的位置。
您可以使用element.getClientBoundingRect()
(src)获取文本的位置。
然后使用document.elementFromPoint(x, y)
(src)在该位置获得最上面的元素,然后获取它的背景色进行比较。
要从此方法实现跨浏览器兼容的行为,请阅读:document.elementFromPoint –一个jQuery解决方案 (您不必使用jQuery即可达到此结果。该方法可以在纯JS中复制。)
为了进行比较,您必须使用element.currentStyle
(IE:src)和window.getComputedStyle
(others:src)来获得计算样式。
更新:这是一个工作的jsfiddle,显示了基本行为:http : //jsfiddle.net/gfullam/vAHeb/4/
注意:如果返回的元素的背景色是透明的,则此方法将不起作用。在那种情况下,我想您可以编写一个检查透明度的函数,然后从DOM中临时删除透明元素或更改其堆叠顺序,并重复此过程,.elementFromPoint()
直到找到具有定义的背景色的元素。比较之后,您可以恢复已删除/已移动的元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句