我有一个由不同蓝色阴影组成的网格,它们每个都包含文本,如果背景是深色,则需要将文本变为白色,反之亦然,我有:
color: #333;
isolation: isolate;
mix-blend-mode: difference;
但是这样会改变元素的背景颜色,变成一种奇怪的橙灰色。有没有只能使用CSS(或Less)的选项,仅反转文本颜色?
我有一个由不同蓝色阴影组成的网格,它们每个都包含文本,如果背景是深色,则需要将文本变为白色,反之亦然,我有:
color: #333;
isolation: isolate;
mix-blend-mode: difference;
但是这样会改变元素的背景颜色,变成一种奇怪的橙灰色。有没有只能使用CSS(或Less)的选项,仅反转文本颜色?
你也可以将这种样式应用于您想要反转颜色的元素:
filter: invert(1);
mix-blend-mode: difference;
如果您需要根据一个子元素或一个更远的元素而不是父元素或接近的元素来确定差异,则此方法尤其有效。
我将其与自定义光标(黑色圆圈)一起使用,这使其与后面的元素形成了良好的对比。示例代码请看此处:https://codepen.io/m3t4lch7/pen/VwwOKNd
transparent
,并使用background-clip
和filter
来反转和灰度化透明文本中显示的颜色。如果想要了解更多通过此方法可以实现的各种效果,请查看与背景对比文本的方法的更详细解释。#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>
rgb(255, 255, 255)
减去颜色,所以像您在评论中指出的灰色就会变为 rgb(128, 128, 128)
,它将反转为 rgb(127, 127, 127)
,因此反转后的文本将与背景颜色融为一体。 - benvcinvert(1)
完全反转颜色会得到上述简单的公式(使用不同的反转值会使数学稍微复杂一些)。 - benvc