根据css背景反转文本颜色

Jac*_*der 4 css text background colors less

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

color: #333;
isolation: isolate;
mix-blend-mode: difference;
Run Code Online (Sandbox Code Playgroud)

但这以某种方式将元素的背景颜色更改为一些奇怪的橙灰色。是否有仅反转文本颜色的仅 CSS(仅较少)选项?

m3t*_*chu 17

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

filter: invert(1);
mix-blend-mode: difference;
Run Code Online (Sandbox Code Playgroud)

如果您需要将差异基于更远的子元素或元素,而不是父元素或接近的元素,那么它尤其有效。

我将它与自定义光标(黑色圆圈)一起使用,这使其与后面的元素形成了很好的对比。示例笔在这里:https://codepen.io/m3t4lch7/pen/VwwOKNd

光标颜色反转


ben*_*nvc 8

您可以将文本颜色设置为transparent,并使用background-clipfilter反转和灰度显示通过透明文本显示的颜色。

用于将文本与背景进行对比的方法中查看有关您可以通过这种方式实现的各种效果的更详细说明。

在您的情况下,听起来您正在寻找以下内容:

#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);
}
Run Code Online (Sandbox Code Playgroud)
<div id="one">
  <span>Some text</span>
</div>
<div id="two">
  <span>Some text</span>
</div>
Run Code Online (Sandbox Code Playgroud)