【发布时间】:2015-09-17 18:24:11
【问题描述】:
所以我正在为一个论坛创建一个主题插件,用户经常在其中输入带有自定义颜色的文本。这是作为跨度上的内联样式实现的。
论坛默认采用深色方案,因此大部分文字都是浅色的。如果我使用浅色方案创建主题,则很难看到此文本。
我想到了使用 CSS5 颜色过滤器来定位具有内联颜色的文本:
.Comment span[style^=color] {
filter: hue-rotate(180deg) invert(100%);
-webkit-filter: hue-rotate(180deg) invert(100%);
}
通过反转和旋转色谱,可以将浅蓝色变为深蓝色,将浅红色变为深红色,从而保留色调但使其更暗。这确实有效,但它的副作用是也会反转嵌入文本中的图像和其他元素的颜色。
我想对子元素进行另一种颜色反转,但这会使图像看起来像垃圾,因为显然色调旋转根本不是很准确。
解决方案是让 CSS 仅针对 span 的文本节点而不是任何子元素,但这似乎不可能?除非我遗漏了什么,否则我看不到任何文本节点的选择器。
我可以在 jQuery 中做些什么来执行这种颜色反转吗?我宁愿不必破坏页面上的所有颜色,因为这会让用户感到不安。
【问题讨论】:
-
有趣。小旋转没有问题。 jsfiddle.net/urqqbz23
-
这很好地展示了色调旋转是如何不可逆的,但请注意它仅适用于 Firefox。图像的效果要差得多。
标签: javascript jquery html css colors