ReSharper的告诉我:“需要备用颜色”,并补充(当我默许),第一色这里:为什么CSS hsl作业需要回退颜色?
color: #ff8000;
color: hsl(30, 100%, 50%);
因此很明显,这第一受让人#ff8000的类,然后如果HSL值“取”它会覆盖以前的作业。但为什么这是必要的?当使用所有类型的颜色分配时,确实不需要“后备颜色”?
ReSharper的告诉我:“需要备用颜色”,并补充(当我默许),第一色这里:为什么CSS hsl作业需要回退颜色?
color: #ff8000;
color: hsl(30, 100%, 50%);
因此很明显,这第一受让人#ff8000的类,然后如果HSL值“取”它会覆盖以前的作业。但为什么这是必要的?当使用所有类型的颜色分配时,确实不需要“后备颜色”?
在开始的时候,有三种方式来指定颜色:
hexadecimal
格式(#3FC408),即使用3或六个字符,
命名的颜色(如red
,blue
,black
),和
rgb()
- ,其中在括号,你会为每个从0颜色(红,绿,蓝)的数值参考255
CSS3
以来增加了一些新的色彩格式,包括:
rgba()
- 红,蓝,绿,α(不透明度),
hsl()
- 色调,饱和度和亮度,以及
hsla()
- 色相,饱和度,亮度和alpha(不透明度)。
虽然这些新的色彩格式带来的灵活性,开发者如何定义颜色显着的量和它们之间的关系,也可以留下旧的浏览器看,由于不兼容差于预期。
问题是浏览器中的CSS解析器会跳过名称或值未被理解的属性。较旧的浏览器(如Internet Explorer 8及更早版本)不了解rgba()
,hsl()
或hsla(),
,因此将放弃包含它们的任何声明。
考虑以下几点:描述
.box {
background: #000;
color: rgba(100, 100, 200, 0.5);
}
支持的浏览器会将此CSS代码。不支持的浏览器将完全删除颜色属性,因为该值不被理解。这意味着实际使用的颜色将从周围环境中继承,并可能实际上最终变黑(与背景相同)。为防止这一点,你应该总是包含十六进制,命名,或RGB()格式的回退的颜色,如:
.box {
background: #000;
color: blue;
color: rgba(100, 100, 200, 0.5);
}
ReSharper的什么是问你做的是提供一个备用的色彩。这种后备颜色应该始终在之前新颜色,以确保旧版浏览器正确地查看和使用它,并且较新的浏览器继续使用较新的颜色格式。
的更多信息:
https://github.com/stubbornella/csslint/wiki/Require-fallback-colors
http://caniuse.com/#search=hsl
IE8-不支持HSL色彩空间。除此之外,您不需要回退。这也是相当琐碎HSL转换为十六进制,所以你可以一直只使用十六进制
是它的顺序也界定?正如'hex'然后'hsl'? – eggy
是;这是一个“逐字”复制和粘贴作业。 –