者:前端日志
轉發鏈接:https://mp.weixin.qq.com/s/zoEfqIwfsnAWVO8L7xuUuQ
近期,三大主流瀏覽器引擎均發布最新版本,支持W3C的CSS Color 4標準,包含新的取色方法color()和相應語法,可展示更多的色域及色彩空間,這意味著web端能展示更豐富更高清的色彩。雖然目前只有最新版本的現代瀏覽器才支持,我們可以先提前了解一下這項新標準。
本文首先會先簡單介紹幾個色彩的基礎概念,了解為何需要新標準,之后會介紹新標準中的方法和語法使用。
指顏色的可選范圍。如sRGB色域,目前web廣泛應用的色域標準,使用紅(red)綠(green)藍(blue)作為基礎色,色值范圍0~255,三種基礎色互相混合起來可展示255*255*255種顏色,這大致可理解為sRGB的色域。
現代web css使用的sRGB色域僅滿足基礎性的色彩需求,能展示的色彩范圍遠小于人類肉眼所能感知的顏色范圍,也遠低于高清展示的要求。
以下是sRGB與其他幾種色域標準的色值范圍大小比較:
??以下是sRGB與人類肉眼可感知的色域比較:
色彩空間可以理解為一個基于某一色域標準下構建的空間數學模型,例如一些簡單的方塊、圓柱的3D模型,可以用來標記出色域中每個顏色的空間位置,各個顏色之間的關系等。
再用sRGB舉例,紅(red)綠(green)藍(blue)三種基礎色可設置為3個直線坐標軸,每種顏色便可標記為這個立方體中的一個點,在css中便是使用rgb()方法來取色,參數為指定顏色在色彩空間中的坐標(R, G, B)。
再再比如css的另一個取色方法hsl(),使用的是一套完全不同的色彩空間HSL,H色相(hue)是取值范圍為0~360的角度,可作為角軸;S飽和度(Saturation)和L亮度(Lightness)作為兩個直線軸,可構建為一個圓柱形的空間,css中使用hsl(H, S, L)表示顏色。
??一種色域標準可以使用不同的色彩空間來描述,不同的色域標準也可以使用的是同一類的色彩空間表示。例如sRGB可以使用rgb()、hsl()、hwb()等方式進行描述,而像Display-P3、Rec2020色域都可以使用(R,G,B)的色彩空間來描述,只是空間的邊界范圍有所不同。
高清意味著更高范圍的色域,讓我們先直觀感覺一下窄色域與廣色域的視覺差距:
??在實際的css顏色取值中,我們常用的方法有很多rgb()、rgba()、hsl()、hwb(),對應不同的色彩空間,但取的都是同一色域范圍內的顏色,即sRGB,大概只能展示人類肉眼可感知的色彩中的30%,仿佛在使用一臺90年代的電視機播放4K電影。
雖然目前的網絡顯示設備很多還是sRGB標準,并不支持顯示更廣色域標準的色彩,僅部分HDR顯示器、或視頻錄制設備、電影制造中使用了如Display P3這類更廣的色域標準。但對于高清的需求只會越來越多,支持更廣色域標準注定也是未來web端顯示的目標之一。
為應對這一趨勢,W3C的CSS Color 4標準定義了新方法color()和其他語法能更靈活的指定各種不同色域標準下的顏色,以及更好的色彩漸變展示。最近,主流三大web瀏覽器也都已支持了W3C的新標準。
2000年以來,我們有多種方式指定色值:hex色值(#rgb、#rrggbb)、rgb()、rgba()、或是一些特定顏色的字符(如white、pink等);2010年左右開始,瀏覽器開始支持hsl()方法;2017年,hex色值擴展了對于透明度的支持,#rrggbbaa;之后各種瀏覽器又陸續增加對hwb()方法的支持。
不同的方法對應的是不同的色彩空間,但色域都是同一個,即sRGB。
?使用十六進制的數字來分別表示R、G、B、A的值
.valid-css-hex-colors {
/* 一般標準 */
--3-digits: #49b;
--6-digits: #4499bb;
/* 帶透明度 */
--4-digits-opaque: #f9bf; /* 不透明 */
--8-digits-opaque: #ff99bbff; /* 不透明 */
--4-digits-with-opacity: #49b8; /* 透明度88% */
--8-digits-with-opacity: #4499bb88; /* 透明度88% */
}
??使用0~255的十進制數字,或是0%~100%的百分比來指明R、G、B,透明度A使用百分比或0~1的數字表示
.valid-css-rgb-colors{
--classic:rgb(64, 149, 191);
--modern:rgb(64 149 191);
--percents:rgb(25% 58% 75%);
--classic-with-opacity-percent:rgba(64, 149, 191, 50%);
--classic-with-opacity-decimal:rgba(64, 149, 191, .5);
--modern-with-opacity-percent:rgb(64 149 191 / 50%);
--modern-with-opacity-decimal:rgb(64 149 191 / .5);
--percents-with-opacity-percent:rgb(25% 58% 75% / 50%);
--percents-with-opacity-decimal:rgb(25% 58% 75% / 50%);
--empty-channels:rgb(none none none);
}
??這種色彩空間更符合人類自然理解,無需了解紅綠藍基礎色是如何混合的。參數分別表示:
?H:hue,色相,取值0deg~360deg
?S:Saturation,飽和度,取值0%~100%
?L:Lightness,亮度,取值0%~100%
.valid-css-hsl-colors{
--classic:hsl(200deg, 50%, 50%);
--modern:hsl(200 50% 50%);
--classic-with-opacity-percent:hsla(200deg, 50%, 50%, 50%);
--classic-with-opacity-decimal:hsla(200deg, 50%, 50%, .5);
--modern-with-opacity-percent:hsl(200 50% 50% / 50%);
--modern-with-opacity-decimal:hsl(200 50% 50% / .5);
/* 無色相和飽和度,僅用亮度可表示黑白色 */
--empty-channels-white:hsl(none none 100%);
--empty-channels-black:hsl(none none 0%);
}
??形式上和HSL類似,但使用的3個維度為:
?H:Hue,色相,取值0deg~360deg;
?W:Whiteness,白色的濃度(0~100%);
?B:Blackness,黑色的濃度(0~100%);
.valid-css-hwb-colors{
--modern:hwb(200deg 25% 25%);
--modern2:hwb(200 25% 25%);
--modern-with-opacity-percent:hwb(200 25% 25% / 50%);
--modern-with-opacity-decimal:hwb(200 25% 25% / .5);
/* 無色相和飽和度,僅用亮度可表示黑白色 */
--empty-channels-white:hwb(none 100% none);
--empty-channels-black:hwb(none none 100%);
}
??新的color()方法的參數類似于rgb()方法,使用R、G、B三個直線軸上的數值來指明色彩,不同的是color()方法的第一個參數可以接收除sRGB以外的其他色域下的色彩空間標識符,且R、G、B的值僅支持0~1或0%~100%。
.valid-css-color-function-colors {
--srgb: color(srgb 1 1 1);
--srgb-linear: color(srgb-linear 100% 100% 100% / 50%);
--display-p3: color(display-p3 1 1 1);
--rec2020: color(rec2020 0 0 0);
--a98-rgb: color(a98-rgb 1 1 1 / 25%);
--prophoto: color(prophoto-rgb 0% 0% 0%);
--xyz: color(xyz 1 1 1);
}
方法定義:color(colorspace c1 c2 c3[ / A])
? 參數colorspace:標識符,指明使用哪種色彩空間,可選值包括:srgb,srgb-linear,display-p3,a98-rgb,prophoto-rgb,rec2020,xyz,xyz-d50, andxyz-d65.
?參數c1、c2、c3:可以是number(0~1)、百分比或none,對應指定色彩空間下的各參數值,比如srgb,srgb-linear,display-p3對應的是R、G、B的值,具體需要看指定色彩空間描述顏色的維度。
?參數A:可選項,可以是number(0~1)、百分比或none,指明顏色的透明度
不再支持0~255取值,改為0~1范圍,其實和百分比的形式是等價的。如果傳了大于1的數值也默認當作1來解析。
.valid-css-srgb-colors{
--percents:color(srgb 34% 58% 73%);
--decimals:color(srgb .34 .58 .73);
--percents-with-opacity:color(srgb 34% 58% 73% / 50%);
--decimals-with-opacity:color(srgb .34 .58 .73 / .5);
/* 色值為none或空時,表示黑色 */
--empty-channels-black:color(srgb none none none);
--empty-channels-black2:color(srgb);
}
Linear sRGB和sRGB是不同的色彩空間,sRGB的取值是通過一個伽馬曲線函數做過校正的,并不是線性變化的,更適應人眼的感知特性,即對明暗的感知是非線性的;而Linear sRGB的顏色變化是線性的,以下是明暗從0-1漸變時,兩種色彩空間實際的漸變走向。
.valid-css-srgb-linear-colors{
--percents:color(srgb-linear 34% 58% 73%);
--decimals:color(srgb-linear .34 .58 .73);
--percents-with-opacity:color(srgb-linear 34% 58% 73% / 50%);
--decimals-with-opacity:color(srgb-linear .34 .58 .73 / .5);
/* 色值為none或空時,表示黑色 */
--empty-channels-black:color(srgb-linear none none none);
--empty-channels-black2:color(srgb-linear);
}
display P3是最早由蘋果公司推行的。如今這一標準已成為HDR顯示的基礎標準,能顯示的顏色比sRGB多50%。而Rec2020標準比display P3的色域更廣,可以用來顯示4K甚至8K的影像,但目前支持這一標準的終端顯示器還很少。兩種色域都是使用RGB來描述的。
.valid-css-display-p3-colors{
--percents:color(display-p3 34% 58% 73%);
--decimals:color(display-p3 .34 .58 .73);
--percent-opacity:color(display-p3 34% 58% 73% / 50%);
--decimal-opacity:color(display-p3 .34 .58 .73 / .5);
/* 無色度色相,展示為黑色 */
--empty-channels-black:color(display-p3 none none none);
--empty-channels-black2:color(display-p3);
}
.valid-css-rec2020-colors {
--percents: color(rec2020 34% 58% 73%);
--decimals: color(rec2020 .34 .58 .73);
--percent-opacity: color(rec2020 34% 58% 73% / 50%);
--decimal-opacity: color(rec2020 .34 .58 .73 / .5);
/* 無色度色相,展示為黑色 */
--empty-channels-black: color(rec2020 none none none);
--empty-channels-black2: color(rec2020);
}
讓我們先回到開頭的兩張色域圖,會發現基于RGB描述的色域基本是一個三角形,因為都是使用3個基礎色混合而成,但人眼所能感知的色域是形似馬蹄的圖形(具體如何繪制出的,感興趣的可自行搜索了解)。基于RGB標準的色彩空間,都很難完全覆蓋人眼能感知的所有顏色。而基于CIE標準(國際照明委員會制定的一種測定顏色的國際標準,它描述了人眼對顏色的感知和色彩的測量方法)的色彩空間,理論上是能夠包括人視覺所能感知到的所有顏色。
CSS Color 4新標準也新增了對于CIE標準色域的支持。下面介紹的lab()、lch()、oklab()、oklch()都是基于CIE的取色新方法。
?lab()方法描述的是基于CIE標準的色彩空間中的顏色,能夠覆蓋人眼所能看到的全色域。和與基于RGB來描述色彩的維度不同,lab使用的維度分別為:
?L:lightness,視覺上線性漸變的亮度,取值范圍0~100或0%~100%;
?A:代表更貼合人眼視覺特性的兩個色軸之其一:紅-綠,取值范圍均為 -125~125 或 -100%~100%。當A為正值,則為更偏紅色;為負值時,更偏綠;
?B:代表更貼合人眼視覺特性的兩個色軸之其二:藍-黃,取值范圍均為 -125~125 或 -100%~100%。值為正值,更偏黃;為負值,更偏藍。
.valid-css-lab-colors{
--percent-and-degrees:lab(58% -16 -30);
--minimal:lab(58 -16 -30);
--percent-opacity:lab(58% -16 -30 / 50%);
--decimal-opacity:lab(58% -16 -30 / .5);
/* 后兩個參數為none是可表示純灰度 */
--empty-channels-white:lab(100 none none);
--empty-channels-black:lab(none none none);
}
lch使用的維度分別是:
?L:lightness,視覺上線性漸變的亮度,取值范圍0~100或0%~100%;
?C:chroma,顏色的純度,類似于飽和度,取值范圍0~230,但實際上,這個值是沒有上限的;
?H:hue,色相,類似hsl和hwb,是個角軸,取值范圍0deg~360deg;
.valid-css-lch-colors{
--percent-and-degrees:lch(58% 32 241deg);
--just-the-degrees:lch(58 32 241deg);
--minimal:lch(58 32 241);
--percent-opacity:lch(58% 32 241 / 50%);
--decimal-opacity:lch(58% 32 241 / .5);
/* 后兩個參數為none是可表示純灰度 */
--empty-channels-white:lch(100 none none);
--empty-channels-black:lch(none none none);
}
?oklab是校正版的lab,優化了圖片處理質量,在CSS中意味著漸變優化和顏色處理函數優化,消除了色相偏移(hue shift,即在lab中改變顏色純度,色相也會變化),使用的維度和lab()是一致的。
.valid-css-oklab-colors{
--percent-and-degrees:oklab(64% -.1 -.1);
--minimal:oklab(64 -.1 -.1);
--percent-opacity:oklab(64% -.1 -.1 / 50%);
--decimal-opacity:oklab(64% -.1 -.1 / .5);
/* 后兩個參數為none是可表示純灰度 */
--empty-channels-white:oklab(100 none none);
--empty-channels-black:oklab(none none none);
}
??相應的,oklch是lch的校正版,取色的邏輯和hsl類似,在圓色盤中選擇一個角度從而選中一個色相,再通過調節亮度和純度,也就是hsl中的飽和度,純度和飽和度基本可認為是等價的,區分僅在于純度和亮度的調節通常是同步進行的,否則純度很容易超出目標色域的范圍。這里有一個oklch的拾色器,可以體驗下。
.valid-css-oklch-colors{
--percent-and-degrees:oklch(64% .1 233deg);
--just-the-degrees:oklch(64 .1 233deg);
--minimal:oklch(64 .1 233);
--percent-opacity:oklch(64% .1 233 / 50%);
--decimal-opacity:oklch(64% .1 233 / .5);
/* 后兩個參數為none是可表示純灰度 */
--empty-channels-white:oklch(100 none none);
--empty-channels-black:oklch(none none none);
}
?除了新增的一些取色方法外,新標準還有一個混色函數,可以將上邊提到的各種不同色彩空間的中顏色進行混合計算出新顏色。
color-mix(in lch, plum, pink);
color-mix(in lch, plum 40%, pink);
color-mix(in srgb, #34c9eb 20%, white);
color-mix(in hsl longer hue,hsl(120 100% 50%) 20%, white);
方法定義:color-mix(method, color1[ p1], color2[ p2])
?參數method:指定混色的色彩空間,以 in <color space> 的形式,<color space>包含:srgb,srgb-linear,lab,oklab,xyz,xyz-d50, xyz-d65,hsl,hwb,lch, oroklch
?參數color1、color2:為對應method中指定色彩空間中的任一顏色;
?參數p1、p2:為可選參數,取值范圍為0%~100%,可以指明混色的比例,如果為空,默認color1和color2各為50%;
在我們應用一項新語法時,我們通常會有兩種策略:優雅降級和漸進增強,具體實施方案:
這種實施起來比較簡單,即同時使用新舊取色方法,讓瀏覽器自動判斷展示哪種
/* 原代碼 */
color: red;
color:color(display-p3 1 0 0);
/* 如果瀏覽器不支持display-p3,則會只解析第一行 */
color: red;
/* 如果瀏覽器支持,則會最終使用第二行 */
color:color(display-p3 1 0 0);
使用@supports和@media先判斷當前瀏覽器是否支持新的色域標準,并在條件的情況下提供新的色值。
?dynamic-range:取值standard或high,用于判斷當前硬件設備是否支持高清、高對比度、高色彩精度,不過這一屬性判斷的比較籠統,并不能準確判斷瀏覽器是否支持新色域和色彩空間。
@media(dynamic-range: high){
/* safe to use HD colors */
color: color(display-p3 34% 58% 73%);
}
?color-gamut:取值 srgb、p3 或 rec2020,對應可判斷用戶設備是否支持sRGB、Display P3 或 REC2020色域。
@media(color-gamut: srgb){
/* safe to use srgb colors */
color: #4499bb;
}
@media(color-gamut: p3){
/* safe to use p3 colors */
color: color(display-p3 34% 58% 73%);
}
@media(color-gamut: rec2020){
/* safe to use rec2020 colors */
color: color(rec2020 34% 58% 73%);
}
除了可以直接使用css媒體查詢,還可用途JavaScript中的window.matchMedia()方法來進行媒體查詢。
const hasHighDynamicRange = window.matchMedia('(dynamic-range: high)').matches;
console.log(hasHighDynamicRange);// true || false
const hasP3Color = window.matchMedia('(color-gamut: p3)').matches;
console.log(hasP3Color);// true || false
?使用@supports判斷某個css方法或屬性是否支持
@supports(background:rgb(0 0 0)){
/* rgb color space supported */
background:rgb(0 0 0);
}
@supports(background:color(display-p3 0 0 0)){
/* display-p3 color space supported */
background:color(display-p3 0 0 0);
}
@supports(background:oklch(0 0 0)){
/* oklch color space supported */
background:oklch(0 0 0);
}
在實際應用中,在新舊標準過渡期間,可以綜合使用上邊的查詢方法,下面是一個兼容新舊標準的實例:
:root{
--neon-red:rgb(100% 0 0);
--neon-blue:rgb(0 0 100%);
}
/* 設備是否支持展示高清 */
@media(dynamic-range: high){
/* 瀏覽器是否能解析display-p3 */
@supports(color:color(display-p3 0 0 0)){
/* 安全使用display-p3 */
--neon-red:color(display-p3 1 0 0);
--neon-blue:color(display-p3 0 0 1);
}
}
如果更新了最新版本的chrome瀏覽器的話,就能發現DevTools里的拾色器已經支持了CSS Color 4中的新語法,點擊頁面元素中的顏色屬性,在彈出的拾色器中,中間色值右側的箭頭,之前的版本中,點擊箭頭是在hex、rgb、hsl和hwb之間切換,但新版本中,點擊箭頭會出現下拉框,可以看到所有新增的色彩空間和方法,以及當前色值所對應的可替換色值。
??同時在選擇了不同的色彩空間后,色彩的可調節參數也會相應改變。
??當我們選擇了一個非sRGB色域的色值后,會發現拾色器的上方區域里會展示一條sRGB的分界線,可以清晰地看出當前選擇的顏色所在的色域。這能幫助開發者分辨高清色與非高清色。
??而當我們選擇一個超出sRGB范圍的顏色后,再來點擊色值右側的箭頭彈出選項列表時,會發現sRGB色域下的色值后邊會帶上一個三角嘆號。這說明當前色值已超出了sRGB所能描述的范圍,只能使用相近的顏色作為替代。
??關于chrome DevTools更多關于高清顏色的更新,可參閱官方文檔。
sRGB之外的色域和色彩空間目前雖然還剛剛在web端起步,但未來的設計和開發要求可能會慢慢出現,尤其是H5動畫、游戲、3D圖像等等,對于色彩顯示的要求不會永遠停留在sRGB階段,希望本文簡陋的介紹能讓大家多少開始了解一些關于色彩的東西。如有錯誤或疏漏,歡迎指正討論。
參考文章:
1. https://web.dev/articles/color-spaces-and-functions?hl=en
2. https://developer.chrome.com/articles/high-definition-css-color-guide/
3. https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color
作者:京東科技 鄭莉
來源:京東云開發者社區 轉載請注明來源
流瀏覽器支持W3C的CSS Color 4標準,為web端增加了更豐富、更高清的色彩,但是這個新標準到底是什么?為何需要它?接下來,我們將為大家詳細解讀這個新標準,首先了解幾個基礎概念。色域(color gamut)是指顏色的可選范圍,而sRGB色域是目前web廣泛應用的色域標準,使用紅、綠、藍作為基礎色,色值范圍為0~255,三種基礎色互相混合起來可展示255*255*255種顏色。然而,現代web css使用的sRGB色域僅滿足基礎性的色彩需求,無法展示人類肉眼所能感知的顏色范圍,也遠低于高清展示的要求。
以下是sRGB與其他幾種色域標準的色值范圍大小比較:ProPhoto RGB: 0 ~ 65535Adobe RGB: 0 ~ 65535SRGB: 0 ~ 255以下是sRGB與人類肉眼可感知的色域比較:NTSC(1953): 47% sRGBRec.709(1990): 35% sRGBNTSC(1976): 72% sRGBAdobe RGB(1998): 52% sRGBDCI-P3: 45% sRGBRec.2020: 75.8% sRGB色彩空間(color space)是一個基于某一色域標準下構建的空間數學模型,用來標記出色域中每個顏色的空間位置,各個顏色之間的關系等。例如在sRGB中,紅、綠、藍三種基礎色可設置為3個直線坐標軸,每種顏色便可標記為立方體中的一個點。
在css中,我們使用rgb()方法來取色,參數為指定顏色在色彩空間中的坐標(R, G, B)。在新標準中,我們可以使用新的方法color()和相應語法,來展示更多的色域及色彩空間。color()方法可以使用多種顏色模型,包括sRGB、P3、ProPhoto RGB和Rec.2020等。例如,color(display-p3 0.5 1 0),表示在P3色域中使用亮度為0.5、飽和度為1、藍色為0的顏色。另外,我們還可以使用更簡單的語法color(display-p3 red),其中紅色可能是一個十六進制值或者是一個英文單詞。除此之外,新標準中還提供了一些輔助方法,例如lab()和lch()方法,用來表示CIELAB和CIELCH顏色空間中的顏色。
新標準的出現將有助于web端展示更加真實、自然的色彩,使得網頁設計人員擁有更多的色彩選擇和創意空間,同時也能夠更加準確地展示企業形象和產品特色。然而,目前僅有最新版本的現代瀏覽器支持新標準,這也給廣大用戶帶來了困擾。但是我們相信,隨著新標準的逐步普及,更多的用戶將會享受到更加優質的視覺體驗。總之,CSS Color 4標準的發布是一個值得關注的新聞,它為web端的色彩展示提供了更多的可能性。我們期待著更多的瀏覽器廠商加入進來,共同推動這一標準的發展,讓web端的色彩展示變得更加高清、更加自然。高清色彩已經成為當今設計和顯示技術的熱門話題。隨著越來越多的人希望在屏幕上看到更真實、更豐富的色彩,像sRGB這樣的傳統色域標準已經不再足夠。在這種情況下,CSS Color 4標準為Web設計師和開發人員提供了更靈活、更準確的色彩管理工具,使他們能夠更好地控制和呈現不同色域標準下的顏色。
在過去,我們常常使用rgb()、rgba()、hsl()、hwb()等方法來指定顏色,這些方法對應的是同一色域范圍,即sRGB。然而,sRGB只能顯示人類肉眼可感知的色彩中的30%,這意味著我們無法展示出更廣闊的色域所包含的更多顏色。這就好像在使用一臺90年代的電視機播放4K電影一樣,無法完全展現畫面的細節和色彩。為了應對這種情況,人們開始研究如何支持更廣的色域標準。例如,Display-P3和Rec2020都是更廣的色域標準,它們可以使用與sRGB不同的色彩空間描述。不同的色域標準可以使用不同的色彩空間來描述,也可以使用同一類的色彩空間表示。例如,sRGB可以使用rgb()、hsl()、hwb()等方法進行描述,而Display-P3和Rec2020色域都可以使用RGB色彩空間來描述,只是空間的邊界范圍有所不同。
支持更廣色域標準的需求只會越來越多,雖然目前的網絡顯示設備很多還是sRGB標準,并不支持顯示更廣色域標準的色彩,但只是時間問題。為了應對這一趨勢,W3C的CSS Color 4標準為我們提供了新的方法color()和其他語法,可以更好地指定各種不同色域標準下的顏色,以及更好的色彩漸變展示。W3C的CSS Color 4標準定義了一系列新的方法和語法,以實現更準確、更靈活的色彩管理。例如,color()方法可以在不同的色域標準下指定顏色,同時也支持透明度和色彩空間轉換。此外,CSS Color 4標準還引入了新的色彩漸變語法,允許我們更好地控制各種顏色之間的漸變效果。這些新的方法和語法為Web設計師和開發人員提供了更多的工具和靈活性,以實現更好的色彩管理和呈現效果。最近,主流三大Web瀏覽器也都已支持了W3C的新標準。
這意味著我們可以開始在我們的網站和應用程序中使用CSS Color 4標準中定義的新方法和語法,以實現更好的色彩呈現效果。雖然目前支持CSS Color 4標準的設備還比較有限,但隨著時間的推移,越來越多的設備將支持這一標準,使我們能夠更好地控制和管理不同色域標準下的顏色。總之,隨著色彩技術的不斷發展,支持更廣色域標準已經成為Web設計和開發的必然趨勢。W3C的CSS Color 4標準為我們提供了更靈活、更準確的色彩管理工具,使我們能夠更好地呈現不同色域標準下的顏色。我們期待著未來,當越來越多的設備和瀏覽器支持CSS Color 4標準時,我們將能夠展示更真實、更豐富的色彩,為用戶帶來更好的視覺體驗。你認為CSS Color 4標準的出現對Web設計和開發有何重要意義?你有沒有使用CSS Color 4標準中定義的新方法和語法?
在未來,你認為Web顏色管理和呈現技術會有哪些變化和創新?顏色指定方式的演變顏色在網頁設計中是至關重要的,而如何指定顏色也是需要花費一定精力去思考的。從2000年開始,我們有多種方式可以指定顏色,包括hex色值(#rgb、#rrggbb)、rgb()、rgba()、或是一些特定顏色的字符(如white、pink等)。隨著時間的推移,各種瀏覽器陸續增加了對不同顏色指定方式的支持,包括hsl()、hwb()方法等。不同的指定方式對應著不同的色彩空間,但它們的色域都是一致的,即sRGB。HEX顏色指定方式HEX顏色指定方式通過使用十六進制的數字來分別表示R、G、B、A的值,指定顏色較為簡單。在HEX色值中,通常使用3位或是6位數字來指定顏色,如“#49b”表示為3位HEX色值,“#4499bb”則表示為6位HEX色值。
在HEX色值中,若需要指定透明度,則可以使用4位或是8位數字來表示。其中,4位數字中,前3位表示R、G、B的值,最后一位表示透明度;8位數字中,前6位表示R、G、B的值,后面兩位表示透明度。例如,“#f9bf”表示完全不透明,“#ff99bbff”表示完全不透明,“#49b8”表示透明度為88%,“#4499bb88”表示透明度為88%。RGB顏色指定方式RGB顏色指定方式通過使用0~255的十進制數字,或是0%~100%的百分比來指明R、G、B,透明度A使用百分比或0~1的數字表示。在rgb()中,可以通過傳遞3個參數(即R、G、B)或是4個參數(即R、G、B、A)來指定顏色。在rgba()中,需要傳遞4個參數,其中第4個參數是透明度。例如,rgb(73, 153, 187)表示為不透明的顏色,rgba(73, 153, 187, 0.5)表示為透明度為50%的顏色。
HSL顏色指定方式HSL顏色指定方式中,H表示色相(0~360°),S表示飽和度(0%~100%),L表示亮度(0%~100%)。與RGB顏色指定方式不同,HSL指定方式更加符合人類的感知習慣,且更加容易調整顏色的亮度和飽和度。在HSL顏色指定方式中,可以通過hsl()和hsla()方法來指定顏色,其中hsla()方法需要傳遞一個額外的參數,即透明度。HWB顏色指定方式HWB顏色指定方式通過指定顏色的色相、白度、黑度來確定顏色。在hwb()方法中,H表示色相(0~360°),W表示白度(0~100%),B表示黑度(0~100%)。與HSL相比,HWB的調整方式更加靈活,但對于一些應用場景來說還不是特別實用。
總結隨著時間的推移,我們擁有了越來越多的方式來指定顏色,從最開始的hex色值,到后來的rgb()、rgba()、hsl()、hsla()、hwb()等,每一種顏色指定方式都有著自己的優缺點。在選擇顏色指定方式時,我們需要根據具體的需求來進行選擇。值得注意的是,雖然各種顏色指定方式對應著不同的色彩空間,但它們的色域都是一致的,即sRGB。未來,我們是否還會有新的顏色指定方式呢?在這個瞬息萬變的時代,我們期待著更加靈活、實用的顏色指定方式的出現。思考題:你覺得哪種顏色指定方式最實用?為什么?CSS顏色空間:RGB與HSL的比較CSS中定義顏色有兩種方式,分別是RGB和HSL。RGB是紅綠藍三原色的縮寫,是一種比較直觀的顏色空間,而HSL是一種基于色相、飽和度和亮度的顏色空間,更符合人類自然理解,無需了解紅綠藍基礎色是如何混合的。
RGB顏色空間RGB顏色空間是一種將紅、綠、藍三種基礎色光按照不同的比例混合而成的顏色空間。在CSS中,我們可以使用三種類型的RGB顏色表示方式:十進制表示、百分比表示和不帶分隔符的十六進制表示。在CSS中,我們可以使用--classic、--modern和--percents定義RGB顏色,這三種方式分別是十進制表示、不帶分隔符的十六進制表示和百分比表示。在定義完RGB顏色之后,我們還可以通過在RGBA后面加上透明度來定義帶透明度的顏色,透明度可以使用百分比或小數表示。另外,如果我們需要定義一個顏色中的某個通道為空,可以使用none關鍵字表示,例如:--empty-channels:rgb(none none none)。HSL顏色空間HSL顏色空間是基于色相(Hue)、飽和度(Saturation)和亮度(Lightness)三個參數來描述顏色的。
它更符合人類自然理解,無需了解紅綠藍基礎色是如何混合的。在CSS中,我們可以使用hsl()函數來定義顏色,其中的三個參數分別是色相、飽和度和亮度。色相表示顏色的基本色調,取值范圍為0deg~360deg,飽和度表示顏色的強度或純度,取值范圍為0%~100%,亮度表示顏色的亮度程度,取值范圍也是0%~100%。在定義完HSL顏色之后,我們還可以通過在HSLA后面加上透明度來定義帶透明度的顏色,透明度可以使用百分比或小數表示。總結RGB顏色空間和HSL顏色空間都有自己的特點和優勢,選擇哪一種顏色空間來定義顏色,需要根據實際情況來決定。如果需要精確地控制顏色的混合比例,或者想要使用十六進制表示方式來定義顏色,那么RGB顏色空間是一個不錯的選擇;而如果想要更加直觀地描述顏色,或者想要控制顏色的明暗程度而不是具體的RGB值,那么HSL顏色空間會更加合適。
在實際應用中,我們可以根據具體情況來選擇使用RGB還是HSL顏色空間,并且可以根據需要定義帶透明度的顏色,或者將某個通道的值設為空。在使用HSL顏色空間時,我們需要注意色相的取值范圍為0deg~360deg,飽和度和亮度的取值范圍為0%~100%。最后,為了使網頁在不同的瀏覽器和設備上呈現相同的顏色,我們可以使用Web安全顏色,這些顏色是一些被廣泛支持的顏色,可以確保在不同的設備上呈現相同的效果。你更喜歡使用哪種顏色空間來定義顏色呢?對于顏色的選擇和搭配,你有什么心得和經驗?歡迎在評論中分享你的想法。有效的CSS HSL顏色CSS中的顏色表示方式有很多種,其中一種常用的方式是使用HSL(色相、飽和度、亮度)顏色模式。在CSS中,我們可以使用HSL顏色來設置元素的背景色、文本顏色等。然而,有時候我們需要對顏色進行一些特殊的處理,例如設置透明度或者使用無色相和飽和度的黑白色。
本文將介紹一些有效的CSS HSL顏色用法。傳統風格的HSL顏色首先,讓我們來看看傳統風格的HSL顏色。在CSS中,我們可以使用--classic來定義一個傳統風格的HSL顏色,具體的色相、飽和度和亮度的取值可以根據實際需要進行調整。例如,--classic:hsl(200deg, 50%, 50%); 表示色相為200度,飽和度為50%,亮度為50%的HSL顏色。這種方式常用于傳統風格的網頁設計中,給人一種穩重、典雅的感覺。現代風格的HSL顏色除了傳統風格的HSL顏色,我們還可以使用現代風格的HSL顏色。與傳統風格相比,現代風格的HSL顏色更加鮮艷、活潑。在CSS中,我們可以使用--modern來定義一個現代風格的HSL顏色,同樣可以根據實際需要調整色相、飽和度和亮度的取值。
例如,--modern:hsl(200 50% 50%); 表示色相為200度,飽和度為50%,亮度為50%的HSL顏色。這種方式常用于現代風格的網頁設計中,給人一種時尚、年輕的感覺。帶透明度的HSL顏色除了設置顏色的基本屬性之外,有時候我們還需要設置顏色的透明度。在CSS中,我們可以使用HSLA(色相、飽和度、亮度、透明度)顏色模式來實現這一需求。HSLA顏色模式與HSL顏色模式非常相似,只是多了一個透明度的參數。我們可以使用百分比或者小數來表示透明度。例如,--classic-with-opacity-percent:hsla(200deg, 50%, 50%, 50%); 表示色相為200度,飽和度為50%,亮度為50%,透明度為50%的HSLA顏色。
我們還可以使用小數來表示透明度,例如,--classic-with-opacity-decimal:hsla(200deg, 50%, 50%, .5); 表示透明度為0.5的HSLA顏色。通過調整透明度,我們可以實現更多樣化的顏色效果。帶透明度的現代風格HSL顏色除了傳統風格的HSL顏色和帶透明度的HSL顏色,我們還可以將現代風格的HSL顏色與透明度結合使用。在CSS中,我們可以使用--modern-with-opacity-percent:hsl(200 50% 50% / 50%); 或者--modern-with-opacity-decimal:hsl(200 50% 50% / .5); 來定義帶透明度的現代風格HSL顏色。這種方式可以讓我們在保持現代風格的同時,實現更多樣化的顏色效果。
無色相和飽和度的黑白色除了常規的彩色HSL顏色,我們還可以使用HSL顏色模式來表示無色相和飽和度的黑白色。在CSS中,我們可以使用--empty-channels-white來定義一個白色,使用--empty-channels-black來定義一個黑色。這兩種顏色的特點是色相和飽和度均為"none",只有亮度參數。例如,--empty-channels-white:hsl(none none 100%); 表示白色,--empty-channels-black:hsl(none none 0%); 表示黑色。這種方式常用于一些特殊的設計需求,例如在網頁中使用黑白照片。總結本文介紹了一些有效的CSS HSL顏色用法。我們可以根據實際需要,選擇傳統風格的HSL顏色或者現代風格的HSL顏色,也可以使用HSLA顏色模式來設置顏色的透明度。
此外,我們還可以使用HSL顏色模式來表示無色相和飽和度的黑白色。通過靈活運用這些顏色表達方式,我們可以實現更多樣化、個性化的網頁設計效果。你喜歡使用哪種CSS HSL顏色呢?歡迎在評論中分享你的想法!新CSS顏色方法:HWB和Color()CSS提供了許多用于設置顏色的方法,其中最常用的是RGB和十六進制。但是,最近出現了兩種新的方法來設置顏色:HWB和Color()。HWB方法HWB代表色相、白度和黑度。它類似于HSL(色相、飽和度和亮度),但具有一些區別。HWB中的色相表示顏色在圓形色環上的角度,而不是在圓錐體上的坐標。白度和黑度表示色彩中白色和黑色的比例。
下面是一個示例,展示了如何使用HWB方法創建一些現代顏色:.valid-css-hwb-colors{ --modern:hwb(200deg 25% 25%); --modern2:hwb(200 25% 25%);}在這個例子中,我們使用hwb()函數創建兩個類似的顏色。注意,我們可以使用度數或不帶度數的數字表示色相。我們還可以在HWB顏色中設置不透明度:.valid-css-hwb-colors{ --modern-with-opacity-percent:hwb(200 25% 25% / 50%); --modern-with-opacity-decimal:hwb(200 25% 25% / .5);}在這個例子中,我們分別使用50%和0.5作為不透明度值。我們可以使用百分比或小數來設置不透明度。
最后,我們可以使用HWB方法創建純黑色和純白色,這兩種顏色沒有飽和度或色相:.valid-css-hwb-colors{ /* 無色相和飽和度,僅用亮度可表示黑白色 */ --empty-channels-white:hwb(none 100% none); --empty-channels-black:hwb(none none 100%);}在這個例子中,我們使用none作為色相值。這表示黑色和白色沒有色相,只有亮度。Color()方法Color()方法類似于RGB方法,使用R、G、B三個直線軸上的數值來指明顏色。但是,Color()方法的第一個參數可以接收除sRGB以外的其他色域下的顏色空間標識符,且R、G、B的值僅支持0~1或0%~100%。
下面是一個示例,展示了如何使用Color()方法來創建不同顏色空間中的顏色:.valid-css-color-function-colors { --srgb: color(srgb 1 1 1); --srgb-linear: color(srgb-linear 100% 100% 100% / 50%); --display-p3: color(display-p3 1 1 1); --rec2020: color(rec2020 0 0 0); --a98-rgb: color(a98-rgb 1 1 1 / 25%); --prophoto: color(prophoto-rgb 0% 0% 0%); --xyz: color(xyz 1 1 1);}在這個例子中,我們創建了七種不同的顏色。
注意,我們可以使用不同的顏色空間標識符來創建這些顏色。結論HWB和Color()方法為CSS提供了更多的顏色選項。使用這些方法,我們可以創建不同的顏色,這些方法非常有用,特別是在設計網站時。不同的顏色空間提供了不同的顏色選項,可以使我們的設計更加多樣化和創新。我們期待看到更多的CSS屬性和方法在未來的CSS版本中的出現。你使用過HWB和Color()方法嗎?你認為它們有用嗎?請在下面的評論中分享你的想法。本文介紹了關于CSS新版本中color()方法的定義和使用,該方法可以描述不同色彩空間下的顏色及其透明度。參數colorspace指定使用哪種色彩空間,可選值包括srgb、srgb-linear、display-p3等。參數c1、c2、c3對應不同色彩空間下的各參數值,可用number、百分比或none表示。參數A為可選項,表示顏色的透明度。
其中,在sRGB色彩空間中,不再支持0~255取值,而是改為0~1范圍。在Linear sRGB色彩空間中,顏色的取值范圍更廣,可用負數和大于1的數值表示,但需要注意使用時的轉換關系。在CSS新版本中,color()方法的使用更加靈活,可以描述不同色彩空間下的顏色及其透明度。在定義時,需要指定參數colorspace,可根據需要選擇不同的色彩空間。同時,參數c1、c2、c3和A也需要根據色彩空間的不同而有所調整,具體參數值可參考各色彩空間的描述。例如,在sRGB色彩空間中,需要將顏色的取值范圍從0~255改為0~1,可以使用number或百分比來表示。而在Linear sRGB色彩空間中,顏色的取值范圍更廣,可以用負數和大于1的數值表示。在使用時,需要注意轉換關系,避免出現誤差。除了描述顏色外,color()方法還支持描述透明度。
參數A為可選項,可以用number、百分比或none表示。如果不指定透明度,則默認為1,即完全不透明。使用時,可以將顏色和透明度組合在一起,例如color(srgb 34% 58% 73% / 50%)表示顏色為sRGB色彩空間下的34%、58%、73%的顏色,透明度為50%。這種方式更加直觀,可幫助開發者快速定義所需的顏色和透明度。需要注意的是,當參數c1、c2、c3或A為none時,表示對應的顏色通道為空,即為黑色。例如,color(srgb none none none)和color(srgb)都表示為黑色。在實際使用中,需要根據需要來選擇正確的參數值,避免產生誤解。總之,color()方法在CSS新版本中的定義和使用更加靈活,可以描述不同色彩空間下的顏色及其透明度。在使用時,需要根據需要選擇正確的參數值,避免產生誤解。線性sRGB和sRGB是兩種不同的色彩空間。
sRGB使用了一個伽馬曲線函數進行校正,使得顏色的變化對人眼的感知更加適應,即對明暗的感知是非線性的;而線性sRGB的顏色變化是線性的。在明暗從0到1漸變時,這兩種色彩空間的實際漸變走向是不同的。除了sRGB和線性sRGB之外,還有其他的色彩空間標準,例如Display P3和Rec2020。Display P3最早由蘋果公司推行,現在已成為HDR顯示的基礎標準。它能顯示的顏色比sRGB多50%。而Rec2020的色域更廣,可以用來顯示4K甚至8K的影像。然而,目前支持Rec2020標準的終端顯示器還很少。這些色域標準都是使用RGB來描述顏色。在CSS中,可以使用srgb-linear函數來表示線性sRGB的顏色。例如,通過設置不同的百分比或小數值,可以實現明暗漸變的效果。同時,還可以添加不透明度,通過設置透明度的百分比或小數值,來改變顏色的透明度。
如果色值為none或為空,表示黑色。總之,線性sRGB和sRGB是不同的色彩空間,它們在顏色變化上有著不同的特性。此外,還有其他色域標準如Display P3和Rec2020,它們分別適用于不同的顯示需求。了解這些色域標準可以幫助我們更好地理解和應用顏色。在CSS中,我們可以使用srgb-linear函數來表示線性sRGB的顏色,并通過調整百分比或小數值來實現明暗漸變。但需要注意的是,目前支持Rec2020標準的顯示器還不常見,因此在選擇色彩空間時需要根據具體需求和設備的支持情況進行考慮。作為編輯,我認為了解不同的色彩空間標準對于設計和顯示領域的專業人士來說非常重要。選擇適合的色彩空間可以幫助我們呈現更準確、更鮮明的顏色效果。同時,對于普通用戶來說,了解色彩空間標準也可以幫助他們更好地理解和欣賞不同顯示設備的色彩表現。
因此,我建議在相關的設計和技術教育中,應該加強對色彩空間的介紹和應用。你認為應該如何提高人們對色彩空間的認識和理解?你對不同色彩空間標準有什么看法和經驗?歡迎在評論中分享你的想法。如何正確使用CSS顏色空間CSS顏色空間是一個非常有用的工具,它可以幫助我們更好地管理和控制我們的網站和應用程序中的顏色。在CSS中,顏色空間用于描述顏色的值。CSS定義了幾種顏色空間,包括RGB,HSL和Lab等。最近,CSS添加了兩個新的顏色空間:Display-P3和Rec2020。這兩種顏色空間都是廣泛用于視頻和圖像的標準。但是,我們該如何正確地使用它們呢?Display-P3和Rec2020的介紹Display-P3和Rec2020是兩個用于描述顏色空間的標準。Display-P3是一種廣泛應用于iOS設備和Mac電腦的顏色空間標準。
它是一種更廣泛的顏色空間,可以提供更多的顏色選項,從而更好地呈現圖像和視頻。另一方面,Rec2020是一種廣泛應用于廣播和電影制作的顏色空間標準。它是一種更大的顏色空間,可以提供更廣泛的顏色范圍,因此可以提供更好的圖像和視頻質量。如何在CSS中使用Display-P3和Rec2020顏色空間要在CSS中使用Display-P3和Rec2020顏色空間,您需要使用CSS的color()函數。該函數允許您指定顏色值的類型,包括RGB,HSL,Lab,Display-P3和Rec2020等。
以下是使用Display-P3和Rec2020顏色空間的示例:.valid-css-display-p3-colors{ --percents:color(display-p3 34% 58% 73%); --decimals:color(display-p3 .34 .58 .73); --percent-opacity:color(display-p3 34% 58% 73% / 50%); --decimal-opacity:color(display-p3 .34 .58 .73 / .5); /* 無色度色相,展示為黑色 */ --empty-channels-black:color(display-p3 none none none); --empty-channels-black2:color(display-p3);}.vali
d-css-rec2020-colors { --percents: color(rec2020 34% 58% 73%); --decimals: color(rec2020 .34 .58 .73); --percent-opacity: color(rec2020 34% 58% 73% / 50%); --decimal-opacity: color(rec2020 .34 .58 .73 / .5); /* 無色度色相,展示為黑色 */ --empty-channels-black: color(rec2020 none none none); --empty-channels-black2: color(rec2020);}如上所示,您可以使用color()函數,并將其設置為display-p3或rec2020來指定顏色空間。
接下來,您可以像使用其他CSS顏色一樣指定顏色的值。在使用Display-P3和Rec2020顏色空間時需要注意的問題雖然使用Display-P3和Rec2020顏色空間可以提供更好的顏色選項和視頻質量,但在使用時也需要注意一些問題。首先,不是所有瀏覽器都支持Display-P3和Rec2020顏色空間。因此,在使用這些顏色空間時,請確保您的目標受眾可以支持這些顏色空間。否則,您的網站或應用程序可能會顯示不正確的顏色。其次,如果您的目標受眾支持Display-P3和Rec2020顏色空間,則您需要確保您的圖像和視頻也使用這些顏色空間。否則,它們可能會顯示不正確的顏色。最后,當使用Display-P3和Rec2020顏色空間時,請注意它們相對于其他顏色空間的亮度和對比度。Display-P3和Rec2020顏色空間可能會影響您的圖像和視頻的亮度和對比度。
結論使用Display-P3和Rec2020顏色空間可以提供更好的顏色選項和視頻質量,但在使用時需要注意一些問題。請確保您的目標受眾支持這些顏色空間,并確保您的圖像和視頻也使用這些顏色空間。如果您需要更好的圖像和視頻質量,請考慮使用這些顏色空間。色彩是人類視覺中不可或缺的一部分,但是基于RGB標準的色彩空間無法完全描述人類視覺所能感知到的所有顏色。相比之下,基于CIE標準的色彩空間可以更好地覆蓋人類視覺所能感知到的所有顏色。CSS Color 4新標準新增了對于CIE標準色域的支持,下面將介紹基于CIE的四種取色新方法:lab()、lch()、oklab()、oklch()。首先,讓我們來看看lab()方法。lab()方法描述的是基于CIE標準的色彩空間中的顏色,能夠覆蓋人眼所能看到的全色域。與基于RGB來描述色彩的維度不同,lab使用的維度分別為L、A、B。
其中L代表亮度,取值范圍為0~100或0%~100%。A代表紅-綠兩個色軸之一,取值范圍均為-125~125或-100%~100%。當A為正值時,更偏紅色;為負值時,更偏綠。B代表藍-黃兩個色軸之一,取值范圍均為-125~125或-100%~100%。當值為正時,更偏黃;為負時,更偏藍。接下來是lch()方法。lch()方法同樣是基于CIE標準的色彩空間,其中L代表亮度,取值范圍為0~100或0%~100%。C代表色度,即顏色的強度或純度,取值范圍為0~100或0%~100%。H代表色相,即顏色在色輪上的位置,取值范圍為0~360度或0~1弧度。oklab()方法是一種基于CIE標準的色彩空間,它的優勢在于它可以更好地處理亮度、飽和度和對比度。它使用的維度與lab()方法相同,即L、A、B。最后,是oklch()方法。
oklch()方法同樣是基于CIE標準的色彩空間,它使用的維度與lch()方法相同,即L、C、H。與lch()方法相比,它可以更好地處理亮度、飽和度和對比度。雖然這四種取色方法都是基于CIE標準的色彩空間,但它們各自有著不同的優勢,可以根據具體需求進行選擇。總之,基于CIE標準的色彩空間可以更好地覆蓋人類視覺所能感知到的所有顏色,而lab()、lch()、oklab()、oklch()等取色新方法可以更好地描述和處理不同類型的顏色。在實際應用中,可以根據需求選擇最合適的方法來取色。你認為基于CIE標準的色彩空間和這些取色新方法對于色彩呈現有哪些創新和改進?在你的工作或學習中,你有使用過這些新方法嗎?歡迎在評論區分享你的經驗和看法。編輯:通過CSS顏色的新特性實現更加精確的顏色控制隨著CSS顏色的新特性的加入,我們可以更加精確地控制顏色的表現效果。
本文將介紹一些利用新特性實現顏色控制的方法。CSS顏色的新特性CSS的新特性中,我們可以使用lch()函數來定義顏色變量。這個函數使用的維度分別是亮度(L)、純度(C)和色相(H),這個新特性提供了更加精確的顏色控制。利用lab()函數實現顏色控制在CSS中,我們可以使用lab()函數來實現顏色控制。
例如,我們可以定義一個名為valid-css-lab-colors的類,并在其中定義各種顏色變量,如下所示:```css.valid-css-lab-colors{ --percent-and-degrees:lab(58% -16 -30); --minimal:lab(58 -16 -30); --percent-opacity:lab(58% -16 -30 / 50%); --decimal-opacity:lab(58% -16 -30 / .5); /* 后兩個參數為none是可表示純灰度 */ --empty-channels-white:lab(100 none none); --empty-channels-black:lab(none none none);}```使用這些定義好的變量,我們可以在CSS代碼中直接調用它們。
這樣,我們就可以更加方便地控制顏色的表現效果了。總結通過CSS顏色的新特性,我們可以更加精確地控制顏色的表現效果。利用lab()函數定義顏色變量,可以讓我們更加方便地控制各種顏色的表現效果。我們相信,在今后的Web開發中,更加精確的顏色控制一定可以為我們的工作帶來更多的便利和效率。思考題:你覺得CSS的新特性對于Web開發者來說有哪些好處?在你的Web開發工作中,你有沒有使用到這些新特性?歡迎在評論區留言分享你的看法。CSS顏色空間新增支持LCH和OKLabCSS中新增支持LCH和OKLab顏色空間,這些新增的顏色函數提供了更準確的顏色處理,也更好地支持漸變優化。LCH顏色空間是由Luminance、Chroma和Hue三個維度組成的顏色空間,比HSL和HSV更直觀地描述了顏色的亮度、飽和度和色相。
而OKLab是校正版的LAB顏色空間,它消除了色相偏移,提供更加準確的顏色轉換和圖像處理。
下面列出了一些有效的CSS LCH和OKLab顏色的示例:使用LCH顏色:.valid-css-lch-colors{ --percent-and-degrees:lch(58% 32 241deg); --just-the-degrees:lch(58 32 241deg); --minimal:lch(58 32 241); --percent-opacity:lch(58% 32 241 / 50%); --decimal-opacity:lch(58% 32 241 / .5); --empty-channels-white:lch(100 none none); --empty-channels-black:lch(none none none);}使用OKLab顏色:.valid-css-oklab-colors{ --perc
ent-and-degrees:oklab(64% -.1 -.1); --minimal:oklab(64 -.1 -.1); --percent-opacity:oklab(64% -.1 -.1 / 50%); --decimal-opacity:oklab(64% -.1 -.1 / .5); --empty-channels-white:oklab(100 none none); --empty-channels-black:oklab(none none none);}這些新增的CSS顏色函數為開發者提供了更多的顏色處理選項,更好地支持漸變優化和圖像處理。
"OKLCH: The Updated Color Model for Precise Color Selection"Have you ever struggled to find the perfect color for your design or artwork With the advancement of technology, new color models have been developed to provide more precise and flexible color selection options. One such model is OKLCH, which is an improved version of LCH. Similar to HSL, OKLCH allows you to choose a hue from a color wh
eel and adjust the brightness and saturation to achieve the desired color. In this article, we will explore the features of OKLCH and how it can enhance your color selection process.OKLCH, also known as the Oklab color model, is a perceptually uniform color space that aims to mimic how humans perceive color. Created by Bj?
rn Ottosson, OKLCH offers a more accurate representation of color compared to traditional color models like RGB and CMYK. But what sets OKLCH apart is its intuitive color selection logic, which is similar to HSL. By selecting an angle on a circular color wheel, you can easily choose the desired hue. Then, by adjusting the brightness and saturation, you can fine-tune the color to your liking.Unli
ke traditional color models, OKLCH provides a more simplified way of adjusting color. In HSL, you have to manipulate the hue, saturation, and lightness separately. But in OKLCH, the saturation and purity can be considered equivalent, with the difference lying in how the adjustments are made. Typically, the adjustments of purity and brightness are done simultaneously to prevent the purity from exce
eding the desired color range. This synchronization ensures that the resulting color remains within the target color gamut.To illustrate the application of OKLCH, there is a color picker tool available that allows you to experience its capabilities. With this tool, you can input the desired values for percentage, decimal, opacity, and channels. For example, you can try out values like OKLCH(64%
.1 233deg), OKLCH(64 .1 233deg), OKLCH(64 .1 233), OKLCH(64% .1 233 / 50%), OKLCH(64% .1 233 / .5), OKLCH(100 none none), and OKLCH(none none none). These examples showcase the flexibility and versatility of OKLCH in color selection.In addition to the improved color selection methods, the new color standard also introduces a color mixing function. This function allows you to blend colors from di
fferent color spaces and create new color variations. For instance, you can use the color-mix() function to combine LCH colors like plum and pink. By specifying the color space (in this case, LCH) and the desired percentages, you can achieve the desired blend. Similarly, you can use the color-mix() function with other color spaces like sRGB and HSL to create unique color combinations.To further
demonstrate the color mixing capability, let's take a look at some examples. Using the color-mix() function with LCH colors, you can create blends such as color-mix(in LCH, plum, pink) or color-mix(in LCH, plum 40%, pink). Alternatively, you can mix colors using different color spaces, such as color-mix(in sRGB, #34c9eb 20%, white) or color-mix(in HSL longer hue, HSL(120 100% 50%) 20%, white). The
se examples highlight the versatility of the color-mix() function in generating various color combinations.In conclusion, the OKLCH color model is a powerful tool for precise color selection and blending. By incorporating the intuitive logic of HSL and the improved accuracy of LCH, OKLCH offers a more user-friendly and visually appealing approach to choosing colors. With the added feature of the
color-mix() function, you can now easily create unique color blends with different color spaces. Whether you are a graphic designer, artist, or simply someone who appreciates the beauty of colors, OKLCH can greatly enhance your creative process. Try it out and unleash your imagination with the endless possibilities of OKLCH!What are your thoughts on the OKLCH color model Have you tried it out i
n your design projects How do you think it compares to other color models Share your experiences and insights in the comments below!如何使用高清色彩:優雅降級和漸進增強隨著技術的不斷發展,色彩在我們的網頁設計中也變得越來越重要。高清色彩憑借其更廣的色域和更高的色彩精度,為我們呈現更加真實、生動的色彩,為視覺體驗提供了更多的可能性。本文將介紹高清色彩的基本概念及其在網頁設計中的應用方法。一、高清色彩的基本概念高清色彩是指比傳統sRGB色彩更寬廣的色域,以及更高的色彩精度。在sRGB色域內,我們只能使用有限的顏色來呈現圖像。而在高清色彩下,我們可以使用更多的顏色來呈現圖像,從而使圖像更加真實、生動。
在CSS中,我們可以使用多種色彩空間來定義顏色,包括sRGB、sRGB線性、Lab、OkLab、XYZ、XYZ-D50、XYZ-D65、HSL、HWB、LCH、或OkLCH。在使用高清色彩時,我們可以選擇合適的色彩空間來定義顏色。二、優雅降級當我們使用一項新的語法時,我們通常會有兩種策略:優雅降級和漸進增強。優雅降級指的是在同時使用新舊語法的情況下,讓瀏覽器自動判斷展示哪種語法。這種實施起來比較簡單,只需要同時使用新舊語法即可。例如,在使用高清色彩時,我們可以同時使用sRGB和sRGB線性兩種語法來定義顏色:color: red; /* 這里使用傳統的sRGB語法 */color: color(display-p3 1 0 0); /* 這里使用新的sRGB線性語法 */如果瀏覽器不支持sRGB線性語法,則會只解析第一行;如果瀏覽器支持,則會最終使用第二行。
這樣,我們就可以優雅地降級處理,確保無論用戶使用什么瀏覽器,都能正確顯示顏色。三、漸進增強除了優雅降級,我們還可以使用漸進增強的方法來使用高清色彩。在使用漸進增強的方法時,我們首先判斷當前瀏覽器是否支持新的色域標準,并在條件的情況下提供新的色值。這可以通過@supports和@media來實現。例如,我們可以使用@supports來判斷當前瀏覽器是否支持sRGB線性語法:@supports (color: color(display-p3 1 0 0)) { .box { color: color(display-p3 1 0 0); }}在這個例子中,我們使用@supports來判斷瀏覽器是否支持sRGB線性語法,如果支持,則給.box元素設置sRGB線性顏色;如果不支持,則不作處理。
除了@supports,我們還可以使用@media來判斷瀏覽器是否支持高清色彩。具體來說,我們可以使用色域媒體查詢來判斷當前硬件設備是否支持高清、高對比度、高色彩精度。但需要注意的是,這種方法判斷的比較籠統,并不能準確判斷瀏覽器是否支持新色域和色彩空間。四、總結高清色彩為我們的網頁設計提供了更加豐富的色彩表現力,但在使用高清色彩時,我們需要注意瀏覽器的兼容性問題。為了讓所有用戶都能正確地看到顏色,我們可以使用優雅降級和漸進增強兩種方法來處理。優雅降級的方法比較簡單,適合處理一些簡單的場景;而漸進增強則更加靈活,適合處理一些復雜的場景。在實際使用中,我們可以根據具體情況選擇合適的方法來使用高清色彩。你認為在網頁設計中,高清色彩的使用有哪些注意事項呢?歡迎在評論區留言分享你的看法。
文章標題:探索高動態范圍顏色和廣色域在CSS中的應用段落1:引入主題,介紹高動態范圍顏色和廣色域的概念,并提出問題。現代設備的顯示技術不斷進步,給我們帶來了更豐富、更真實的視覺體驗。其中,高動態范圍顏色和廣色域技術在提升圖像質量方面起到了重要作用。那么,在CSS中如何應用這兩種技術呢?本文將探索高動態范圍顏色和廣色域在CSS中的應用,帶您領略更精彩的視覺效果。段落2:介紹在CSS中使用媒體查詢判斷設備是否支持高動態范圍顏色。在CSS中,我們可以使用媒體查詢來判斷設備是否支持高動態范圍顏色。通過@media規則和dynamic-range屬性,我們可以根據設備的色域來選擇合適的顏色。例如,當設備支持高動態范圍顏色時,我們可以使用display-p3顏色來呈現更豐富的色彩。通過這種方式,我們可以確保在支持高動態范圍顏色的設備上獲得更好的視覺效果。
段落3:介紹在CSS中使用媒體查詢判斷設備是否支持廣色域。除了判斷設備是否支持高動態范圍顏色,我們還可以使用媒體查詢來判斷設備是否支持廣色域。通過@media規則和color-gamut屬性,我們可以根據設備的色域來選擇合適的顏色。例如,當設備支持Display P3色域時,我們可以使用相應的顏色來呈現更廣闊的色彩范圍。這種技術可以讓我們的網頁在支持廣色域的設備上展現出更加絢麗的色彩。段落4:介紹在JavaScript中使用window.matchMedia()方法進行媒體查詢。除了在CSS中使用媒體查詢,我們還可以在JavaScript中使用window.matchMedia()方法進行媒體查詢。通過調用這個方法,并傳入相應的媒體查詢條件,我們可以判斷設備是否支持高動態范圍顏色和廣色域。
例如,我們可以通過判斷window.matchMedia('(dynamic-range: high)').matches的返回值來確定設備是否支持高動態范圍顏色。這種方法可以讓我們在JavaScript中動態地根據設備的特性調整網頁的呈現方式。段落5:總結全文,提出個人觀點和建議,并引導讀者提出評論。總之,高動態范圍顏色和廣色域技術在提升網頁圖像質量方面具有巨大潛力。在CSS中,我們可以通過媒體查詢來判斷設備是否支持這兩種技術,并選擇合適的顏色呈現方式。同時,在JavaScript中使用window.matchMedia()方法也可以實現相同的效果。未來,隨著設備技術的不斷發展,我們可以期待更多使用高動態范圍顏色和廣色域的創新應用。您對高動態范圍顏色和廣色域技術在CSS中的應用有何看法?歡迎留下您的評論。
使用@supports判斷CSS屬性支持情況當開發者想要使用一些新的CSS屬性或方法時,往往會擔心會不會出現兼容性問題。為此,CSS3提供了一個新的功能——@supports。這個功能可以幫助開發者判斷當前運行環境是否支持某個CSS屬性或方法,從而避免出現兼容性問題。如何使用@supports使用@supports的語法非常簡單,只需要將需要檢查的屬性名和屬性值作為參數傳遞給@supports即可,例如:```css@supports(background: rgb(0, 0, 0)) { /* 環境支持rgb顏色空間 */}```上面的代碼中,如果當前運行環境支持rgb顏色空間,則會執行對應的代碼塊。
如果需要判斷多個屬性或值是否被支持,可以使用逗號將它們分隔開來,例如:```css@supports(background: rgb(0, 0, 0), color: hsl(0, 0%, 100%)) { /* 環境同時支持rgb和hsl顏色空間 */}```當然,@supports也支持嵌套使用,例如:```css@supports(display: grid) { .container { display: grid; }}```在上述代碼中,如果當前運行環境支持CSS Grid布局,則會將.container元素的display屬性設置為grid。判斷顏色空間是否被支持顏色空間是CSS3新增的一個重要功能,它可以幫助開發者更加精細地控制顏色的呈現效果。
在使用顏色空間時,開發者需要先檢查當前運行環境是否支持對應的顏色空間,然后再進行相關的操作。下面是一些常用的顏色空間查詢方法:- RGB顏色空間:支持范圍廣泛,可以用于幾乎所有的設備和應用程序中。- Display-P3顏色空間:適用于Apple設備和部分支持W3C推薦的設備。- Oklch顏色空間:比較新的顏色空間,支持范圍較窄。
使用@supports判斷顏色空間是否被支持的方法:```css@supports(background: rgb(0 0 0)){ /* rgb顏色空間被支持 */ background: rgb(0 0 0);}@supports(background: color(display-p3 0 0 0)){ /* Display-P3顏色空間被支持 */ background: color(display-p3 0 0 0);}@supports(background: oklch(0 0 0)){ /* Oklch顏色空間被支持 */ background: oklch(0 0 0);}```通過上述方法,可以判斷當前運行環境是否支持RGB、Display-P3和Oklch顏色空間,并根據支持情況設置對應的background屬性。
應用實例在實際應用中,通常需要兼容新舊標準。
下面是一個兼容新舊標準的實例:```css:root { --neon-red: rgb(100%, 0, 0); --neon-blue: rgb(0, 0, 100%);}/* 判斷設備是否支持高清展示 */@media (dynamic-range: high) { /* 判斷瀏覽器是否支持display-p3顏色空間 */ @supports (color: color(display-p3 0 0 0)) { /* 在支持的情況下使用display-p3顏色空間 */ --neon-red: color(display-p3 1 0 0); --neon-blue: color(display-p3 0 0 1); }}```上述代碼中,我們定義了兩個顏色變量--neon-red和--neon-blue,并且在@m
edia查詢中使用@supports判斷設備是否支持高清展示和瀏覽器是否支持display-p3顏色空間,如果支持則使用display-p3顏色空間,否則使用RGB顏色空間。開發調試在開發調試過程中,@supports也可以幫助開發者更好地定位兼容性問題。例如,當某個CSS屬性在某些瀏覽器中不被支持時,可以使用@supports將其排除在某些特定的瀏覽器之外,以確保在這些瀏覽器中不會出現兼容性問題。總結@supports是CSS3提供的一個非常有用的功能,它可以幫助開發者判斷當前運行環境是否支持某個CSS屬性或方法,從而避免出現兼容性問題。在實際應用中,還可以結合顏色空間和@media查詢等功能,實現更加靈活和兼容的CSS樣式。
新版Chrome瀏覽器增強了DevTools里的拾色器功能,支持CSS Color 4中的新語法,提供了更多的色彩空間和方法,讓開發者更方便地處理顏色屬性。點擊頁面元素中的顏色屬性,在彈出的拾色器中,中間色值右側的箭頭出現下拉框,可以看到新增的色彩空間和方法。選擇不同的色彩空間后,色彩的可調參數也會改變,有助于開發者分辨高清色與非高清色。當選擇非sRGB色域的色值后,展示一條sRGB的分界線,幫助開發者清晰地看出當前選擇的顏色所在的色域。而當選擇一個超出sRGB范圍的顏色后,會在sRGB色域下的色值后邊會帶上一個三角嘆號,提示當前色值已超出了sRGB所能描述的范圍,只能使用相近的顏色作為替代。未來的設計和開發在H5動畫、游戲、3D圖像等方面,對于色彩顯示的要求不會永遠停留在sRGB階段,因此了解不同的色彩空間和方法,以及如何處理超出sRGB范圍的顏色,對于開發者來說是必要的。
有關Chrome DevTools更多關于高清顏色的更新,可以參閱官方文檔。總之,隨著web端的發展,色彩顯示也會不斷地更新和進化。希望本文的介紹能夠讓更多的開發者了解一些關于色彩的知識。如有錯誤或疏漏,歡迎指正討論。顏色值是網頁設計中一個非常重要的部分,能夠起到突出重點、美化頁面的作用。在CSS中,我們可以使用多種方式來定義顏色值。本文將對CSS中顏色值的不同定義方式進行詳細介紹。一、關鍵字定義在CSS中,我們可以使用關鍵字來定義顏色值。這些關鍵字是預定義的,表示一種特定的顏色。比如,我們可以使用red關鍵字來表示紅色。CSS中預定義了140個顏色關鍵字,這些關鍵字可以直接用于顏色值的定義。二、十六進制表示法另一種常用的顏色值定義方式是使用十六進制表示法。這種表示法用6個十六進制數字來表示一個顏色值,每兩個數字表示紅綠藍三個顏色通道中的一個。
比如,#FF0000表示紅色,#00FF00表示綠色,#0000FF表示藍色。在十六進制表示法中,每個顏色通道的取值范圍是0到255,因此總共有16777216種可能的顏色值。三、RGB表示法RGB表示法也是一種常用的顏色值定義方式。在這種表示法中,我們使用三個數值來表示紅綠藍三個顏色通道中的顏色值。比如,rgb(255, 0, 0)表示紅色,rgb(0, 255, 0)表示綠色,rgb(0, 0, 255)表示藍色。在RGB表示法中,每個顏色通道的取值范圍是0到255,因此總共有16777216種可能的顏色值。四、RGBA表示法RGBA表示法是在RGB表示法的基礎上增加了一個alpha通道,用來表示顏色的透明度。在RGBA表示法中,我們需要使用四個數值來表示顏色值和透明度。
比如,rgba(255, 0, 0, 0.5)表示半透明的紅色,其中alpha通道的值為0.5,取值范圍是0到1。五、HSL和HSLA表示法HSL表示法使用色相(Hue)、飽和度(Saturation)和亮度(Lightness)三個值來表示一個顏色。色相表示顏色在色輪上的位置,飽和度表示顏色的純度,亮度表示顏色的明暗程度。HSLA表示法在HSL表示法的基礎上增加了一個alpha通道,用來表示顏色的透明度。總結本文詳細介紹了CSS中顏色值的不同定義方式,包括關鍵字定義、十六進制表示法、RGB表示法、RGBA表示法和HSL/HSLA表示法。不同的顏色值定義方式各有優缺點,在實際開發中需要根據需要進行選擇。同時,我們還可以使用漸變、透明度等技巧來進一步美化頁面,提高用戶體驗。作為開發者,我們需要熟練掌握各種顏色值的定義方式,并靈活運用于實際開發中。
通過巧妙運用顏色值,可以使頁面更加生動、美觀、易于理解。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。