可以覆盖默认命名的CSS颜色吗?
受的启发,我想知道是否有办法用这些新颜色覆盖中定义的默认命名颜色定义 我知道我可以创建自定义CSS规则(或更少)来定义新的颜色,并将这些颜色应用到任何元素上,但这里的兴趣是例如可以覆盖默认命名的CSS颜色吗?,css,colors,Css,Colors,受的启发,我想知道是否有办法用这些新颜色覆盖中定义的默认命名颜色定义 我知道我可以创建自定义CSS规则(或更少)来定义新的颜色,并将这些颜色应用到任何元素上,但这里的兴趣是例如 h1{ /* #ff0000 is current definition of red, I want to redefine it to #FF4136 */ color: red; } 更新 我被我的问题所启发,最终在Blink和WebKit源代码中进行了深入研究,从我所看到的,这些颜色是在代码中定
h1{
/* #ff0000 is current definition of red, I want to redefine it to #FF4136 */
color: red;
}
更新
我被我的问题所启发,最终在Blink和WebKit源代码中进行了深入研究,从我所看到的,这些颜色是在代码中定义的
第3299行
~157行
更新2
未来可能会有一些希望。FireFox夜间构建包含了。虽然在这一点上供应商是特定的,但它“几乎”与我的问题有关。相关的W3C规范:-参见示例4否,这些颜色关键字是预定义的,无法从浏览器外部覆盖它们的颜色映射。这适用于您链接到的规范中定义的所有命名颜色关键字,包括基本的CSS关键字集、X11/SVG关键字和不推荐使用的系统颜色(当然,系统颜色取自系统调色板) 您将无法查询DOM元素的计算样式并动态替换它们,因为计算的颜色值总是
rgb()
或rgba()
三元组,即使级联值是关键字也是如此。这在您链接到的规范中有说明:
- 基本颜色关键字、RGB十六进制值和扩展颜色关键字的计算值是数值RGB值的等效三元组,例如六位十六进制值或RGB(…)函数值,alpha值为1
h1
元素的color
将是rgb(255,0,0)
,而不是red
。在这种情况下,您无法将#ff0000
或红色
与rgb(255,0,0)
区分开来,如果您专门针对红色
关键字,这可能会带来问题
您可以使用脚本直接解析和修改样式表,但是CSS解析并不容易。您必须考虑速记声明、url(例如,background:redURL(redimg.png)center no repeat;
)等等。那可能超出了你的问题范围
自定义属性仅允许您指定级联变量来代替关键字作为值。您将无法使用自定义属性修改现有的预定义关键字,因此您仍然必须将每次出现的
red
替换为类似var(red)的内容
其中var red
属性对应于用户定义的红色。不,我不这么认为……除了使用javascript执行奇怪的杂技来解析样式表搜索颜色外,还可以找到兼容的html对应颜色并替换它们。@abhitalks-我不同意,这些都是关于变量和自定义颜色,可以实现使用css处理器,如Hmmmm。。好啊很公平。删除之前的注释。为什么它不是CSS3中的新功能?如果可以的话,那就太好了……如果我理解正确的话,您将需要以元素/div的H1为目标,或者任何时候,您都可以覆盖它。例如#myDiv h1{color}。。。好的,我理解这个问题。我会保留它,以防有人发现它有用。这似乎正是我的代码挖掘所发现的,但我仍然对可能的解决方法抱有一些希望。
static const ColorValue colorValues[] = {
{ CSSValueAqua, 0xFF00FFFF },
{ CSSValueBlack, 0xFF000000 },
{ CSSValueBlue, 0xFF0000FF },
{ CSSValueFuchsia, 0xFFFF00FF },
{ CSSValueGray, 0xFF808080 },
{ CSSValueGreen, 0xFF008000 },
{ CSSValueGrey, 0xFF808080 },
{ CSSValueLime, 0xFF00FF00 },
{ CSSValueMaroon, 0xFF800000 },
{ CSSValueNavy, 0xFF000080 },
{ CSSValueOlive, 0xFF808000 },
{ CSSValueOrange, 0xFFFFA500 },
{ CSSValuePurple, 0xFF800080 },
{ CSSValueRed, 0xFFFF0000 },
{ CSSValueSilver, 0xFFC0C0C0 },
{ CSSValueTeal, 0xFF008080 },
{ CSSValueTransparent, 0x00000000 },
{ CSSValueWhite, 0xFFFFFFFF },
{ CSSValueYellow, 0xFFFFFF00 },
{ CSSValueInvalid, CSSValueInvalid }
};