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
是;這是一個「逐字」複製和粘貼作業。 –