Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取没有背景的元素颜色?_Javascript - Fatal编程技术网

Javascript 如何获取没有背景的元素颜色?

Javascript 如何获取没有背景的元素颜色?,javascript,Javascript,如何有效地获取元素的颜色,该元素没有背景,但其父元素之一有背景? 例如,这是3层深度集: TOP1是红色的 TOP2是绿色的 TOP3没有定义背景色,但它是绿色的 我写一个函数来通过父母进行iretate并找到backgroundColor属性并没有问题,但我相信它不是真正可靠的,交叉浏览会很糟糕 更新 我可能想澄清我为什么想要这样的东西 我的一个例子:我正在为一个表构建粘性标题,当用户滚动非常宽的表时,该标题将克隆表的第一组列并粘贴它们(位置:固定)。这样他们就可以看到他们正在查看的列

如何有效地获取元素的颜色,该元素没有背景,但其父元素之一有背景? 例如,这是3层深度集:

  • TOP1是红色的
  • TOP2是绿色的
  • TOP3没有定义背景色,但它是绿色的
我写一个函数来通过父母进行iretate并找到backgroundColor属性并没有问题,但我相信它不是真正可靠的,交叉浏览会很糟糕

更新

我可能想澄清我为什么想要这样的东西

我的一个例子:我正在为一个表构建粘性标题,当用户滚动非常宽的表时,该标题将克隆表的第一组列并粘贴它们(位置:固定)。这样他们就可以看到他们正在查看的列


有时,表具有与之相关联的样式,列具有可以从表、其容器或任何位置继承的颜色。这就是为什么我坚持在这个问题上使用JavaScript解决方案。

没有办法计算TOP3的背景。如果未设置其背景,则它是透明的。因此,它有下面任何东西的颜色

例如:


TOP1
TOP2
TOP3

看一看。但是在旧的IE版本中不支持它。@FelixKling-我相信他需要更多的东西来解释最内层元素的背景被定义为透明的情况。你确定要查找第三个元素的背景色吗?通常像这样的问题都有某种黑客的味道,实际上,你需要进行一些代码重构,以将颜色状态保存在一些单独的数据结构中,而不是CSS样式中。@techfoobar:哦,我不知怎么地认为
背景色
是继承的,但它似乎不是这样的:-/ALLADE在这里讨论让我们考虑到父总是大于子:)@ Lukas.PukKeIn也让我们考虑页面上所有元素的定位不是相对的,元素的Z顺序永远不会改变,并且边距永远不会是负的。声明使得任何解决方案都不可靠。如果你知道确切的禁忌,你可以写任何适合你需要的东西。在这种情况下,它可能是通过父母进行迭代。@Athari-我认为说根本没有办法是不正确的。我们可以迭代使用elementFromPoint()找到的元素,每次都将我们点击的内容推到底部(使用zIndex),直到我们点击的内容具有定义的不透明背景。问题是这样做是否值得费心。@Athari,没必要生气。我只是在想最普通的情况。负边距、无序的z索引等可能会被留下:)@techfoobar是的,没错,我想知道这样做是否值得,或者已经有了一个简单的方法。