css中基于背景文本颜色反转

46qrfjad  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(284)

我有一个不同深浅的蓝色网格,他们每个包含文本,我需要的文本是白色的,如果背景是黑色的,反之亦然,我有:

color: #333;
isolation: isolate;
mix-blend-mode: difference;

但是这样会把元素的背景颜色变成一些奇怪的橙灰色。有没有一个CSS选项可以只反转文本颜色?

kyxcudwk

kyxcudwk1#

您还可以将此样式应用于要反转其颜色的元素:

filter: invert(1);
mix-blend-mode: difference;

如果您需要将差异基于一个子元素或一个更远的元素,而不是一个父元素或一个接近的元素,那么它尤其有效。
我使用了一个自定义光标(黑色圆圈),这使得它与后面的元素形成了很好的对比。https://codepen.io/m3t4lch7/pen/VwwOKNd

juud5qan

juud5qan2#

可以将文本颜色设置为transparent,并使用background-clipfilter反转和灰度化通过透明文本显示的颜色。
查看Methods for Contrasting Text Against Backgrounds上对这种方式可以实现的各种效果的更详细的解释。
在您的情况下,听起来您正在寻找类似以下内容的内容:

#one {
  background-color: blue;
}

#two {
  background-color: white;
}

span {
  background: inherit;
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
  filter: invert(1) grayscale(1);
  -webkit-filter: invert(1) grayscale(1);
}
<div id="one">
  <span>Some text</span>
</div>
<div id="two">
  <span>Some text</span>
</div>

相关问题