javascript - CSS反转透明svg元素中的颜色
问题描述
在我的 html 中,我有透明的 svg 圆圈。我需要在这个 svg 圆圈上反转颜色,所以我会看到带有青色文本的黑色圆圈。
我尝试.cursor__inner
使用 filter invert(1) 将 'fill 设置为透明(正如您在代码片段中看到的那样),但它不起作用。
.cursor {
position: absolute;
top: 0;
left: 0;
}
.cursor__inner {
fill: transparent;
filter: invert(1);
}
p {
color: red;
}
<svg class="cursor" width="64" height="64" viewBox="0 0 64 64">
<circle class="cursor__inner" cx="32" cy="32" r="32" />
</svg>
<p>Hello World!</p>
我想做这个效果:
我更喜欢纯 CSS 的解决方案。
解决方案
实现所需结果的一种方法接近问题中给出的代码。
p 元素中文本的颜色被反转,因此位于圆圈上方的部分具有青色。包含 p 和 svg 的元素的背景(在这个片段的例子中,主体)具有白色背景,因此文本上的混合混合模式采用颜色的差异(现在是 #00ffff = 青色)和白色 (#ffffff) 带我们回到红色 (#ff0000)。
正如评论中所指出的,不可能反转 SVG 圆形颜色,因为它具有透明度,因此无论它反转的 RGB 始终是什么,因此它填充了纯色。
body {
background: white;
height: 100vh;
}
.cursor {
position: absolute;
top: 0;
left: 0;
}
.cursor__inner {
fill: black;
}
p {
color: cyan;
color: red;
filter: invert(1);
mix-blend-mode: difference;
}
<body>
<svg class="cursor" width="64" height="64" viewBox="0 0 64 64">
<circle class="cursor__inner" cx="32" cy="32" r="32" />
</svg>
<p>Hello World!</p>
</body>
推荐阅读
- installation - Pycharm 包安装 - 离线
- c# - 如何在字符串中统一获取包含 c# 的字符串?
- flutter - 未处理的异常:InternalLinkedHashMap
' 不是 Map 类型的子类型 - google-cloud-platform - Google Cloud SQL - 如何创建窗口身份验证
- javascript - 找出如何最好地解决基于嵌套 ID 和 mongoose 更新许多字段的问题
- arrays - 返回值属于与 bash 关联数组中的 glob 表达式匹配的键名
- xcode - xCode 在 git checkout 或 stash 上崩溃
- postgresql - 未找到以“_”为前缀的 PGRouting 函数
- mysql - 如何根据 JOIN 值和今天月份创建 SQL 排序
- database - 如何解决没有root权限的MongoDB错误“打开的文件太多”