Reactjs 如何在React中检测背景色

Reactjs 如何在React中检测背景色,reactjs,Reactjs,有没有办法动态检测页面某一点的背景色?我有一个固定标题的网站,它的默认标志是白色,默认背景是黑色。但是,当我向下滚动时,有些部分有白色背景,因此徽标必须将颜色更改为黑色。 基于滚动位置设置它是不可能的,因为所有部分都有不同的高度,并且高度通常取决于内容 我发现了混合颜色,但不幸的是,它在不同浏览器中的支持非常差。还尝试了许多npm软件包,但似乎没有一个能适应背景色 有没有其他方法可以在不获取背景色的情况下动态更改徽标颜色 答复1 我从未尝试过,但我认为这可能会找到答案 你可以用 这将在某个x,y

有没有办法动态检测页面某一点的背景色?我有一个固定标题的网站,它的默认标志是白色,默认背景是黑色。但是,当我向下滚动时,有些部分有白色背景,因此徽标必须将颜色更改为黑色。 基于滚动位置设置它是不可能的,因为所有部分都有不同的高度,并且高度通常取决于内容

我发现了混合颜色,但不幸的是,它在不同浏览器中的支持非常差。还尝试了许多npm软件包,但似乎没有一个能适应背景色

有没有其他方法可以在不获取背景色的情况下动态更改徽标颜色

答复1 我从未尝试过,但我认为这可能会找到答案

你可以用

这将在某个x,y点检索顶部元素

因此,您可以将x和y设置为1px,沿着模态的边界向下,或者在您知道的某个位置,该位置将只包含具有您想要的背景颜色的元素,并获取该元素

在滚动事件侦听器上,检查该位置的元素是什么,并获取其背景色

这是一件好事吗?也许不是,但它可以工作,并且在浏览器之间有很好的支持

答复2 无法根据滚动位置进行设置

当然有可能

如果模态的位置为绝对位置,则可以获取模态的ref并使用element.getBoundingClientRect获取其位置

然后,在每个截面上,您还将获得ref。您将在父组件中拥有一个截面ref数组,该数组知道模态的ref和截面的ref

然后,在滚动事件中,对每个截面元素使用getBoundingClientRect,并检查它是否位于modal徽标内

要检查它是否在里面,如果滚动是垂直的,您只需使用顶部和底部

这很难实现,但我认为这是一条路要走