oklab()
åºçº¿
广æ³å¯ç¨
*
èª 2023å¹´5æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
彿°è®°å· oklab() å¨ Oklab é¢è²ç©ºé´ä¸è¡¨ç¤ºæå®é¢è²ï¼æ¤é¢è²ç©ºé´å°½åæ¨¡ä»¿äººç¼æç¥é¢è²çæ¹å¼ãoklab() å¨ Oklab é¢è²ç©ºé´ä¸ä½¿ç¨ç´è§åæ ç³»ï¼æ a è½´å b è½´ãè¥æ³è¦æåæ é¢è²ç³»ç»ââè²åº¦åè²ç¸ï¼è¯·ä½¿ç¨ oklch()ã
Oklab 为æç¥é¢è²ç©ºé´ï¼å¯ç¨äºï¼
- å¨ä¸æ¹åå¾åæåº¦çåæä¸ï¼å°å¾å转æ¢ä¸ºç°åº¦å¾ã
- å¨ä¿æç¨æ·ææç¥çè²ç¸åæåº¦çåæä¸ï¼ä¿®æ¹é¢è²ç饱å度ã
- å建平æ»ååçé¢è²æ¸åï¼ä¾å¦å¨
<canvas>å ç´ ä¸æå¨æå¼ï¼ã
oklab() 彿°å¯è¡¨ç¤º Oklab é¢è²ç©ºé´ä¸çä»»æé¢è²ãæ¤é¢è²ç©ºé´æ¯ RGB æ´å®½å¹¿ï¼å
å«å®½è²åé¢è²å P3 é¢è²ã
è¯æ³
/* oklab(æåº¦ a è½´ b è½´) */
oklab(40.1% 0.1143 0.045);
oklab(59.69% 0.1007 0.1191);
/* oklab(æåº¦ a è½´ b è½´ / alpha) */
oklab(59.69% 0.1007 0.1191 / 0.5);
夿³¨ï¼oklab() 彿°ä¸åå
¶ä»æäºé¢è²å½æ°ä¸æ ·æ¯æä»¥éå·åéå
¶å¼ï¼ä¸å¯éç alpha å¼å¨æå®æ¶éç½®äºæ£ææ ï¼/ï¼ä¹åã
åå¼
- 彿°è®°å·ï¼
oklab(L a b [/ A])L为ä»äº0å1ä¹é´ç<number>æä»äº0%å100%ä¹é´ç<percentage>ï¼æ¤å¤æ°å¼0对åº0%ï¼é»ï¼ï¼æ°å¼1对åº100%ï¼ç½ï¼ãLæå®äºæç¥æåº¦ãa为ä»äº-0.4å0.4ä¹é´ç<number>æä»äº-100%å100%ä¹é´ç<percentage>ãæ¤å¼æå®äºå¨ Oklab 空é´ä¸æ²¿aè½´çè·ç¦»ï¼å³é¢è²ç»¿æçº¢çç¨åº¦ãb为ä»äº-0.4å0.4ä¹é´ç<number>æä»äº-100%å100%ä¹é´ç<percentage>ãæ¤å¼æå®äºå¨ Oklab 空é´ä¸æ²¿bè½´çè·ç¦»ï¼å³é¢è²èæé»çç¨åº¦ãAï¼alphaï¼ä¸ºä»äº0å1ä¹é´ç<number>æ<percentage>ï¼æ¤å¤æ°å¼1对åº100%ï¼å®å ¨ä¸éæï¼ãA表示é¢è²çéæåº¦ï¼å³ alpha ééï¼ã
å½¢å¼è¯æ³
<oklab()> =
oklab( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<alpha-value> =
<number> |
<percentage>
示ä¾
>ç¨ oklab() è°æ´æåº¦åè½´
ä¸å示ä¾å±ç¤ºäºæ¹å oklab() 彿°çæåº¦ãa è½´å b è½´å¼çææã
HTML
<div data-color="blue"></div>
<div data-color="blue-light"></div>
<div data-color="red"></div>
<div data-color="red-a"></div>
<div data-color="green"></div>
<div data-color="green-b"></div>
CSS
[data-color="blue"] {
background-color: oklab(0.5 -0.3 -0.4);
}
[data-color="blue-light"] {
background-color: oklab(0.7 -0.3 -0.4);
}
[data-color="red"] {
background-color: oklab(100% 0.4 0.4);
}
[data-color="red-a"] {
background-color: oklab(100% 0.2 0.4);
}
[data-color="green"] {
background-color: oklab(100% -100% 0.4);
}
[data-color="green-b"] {
background-color: oklab(100% -100% 0.6);
}
ç»æ
ç¨ oklab() è°æ´ä¸éæåº¦
ä¸å示ä¾å±ç¤ºäºæ¹å oklab() 彿°ç Aï¼alphaï¼å¼çææã为æ¼ç¤ºä¸éæåº¦çææï¼red å red-alpha å
ç´ ä¸ #background-div å
ç´ éå ãç»äº red-alpha å
ç´ 0.4 çä¸éæåº¦ä½¿å
¶æ¾å¾æ¯ red å
ç´ æ´éæã
HTML
<div id="background-div">
<div data-color="red"></div>
<div data-color="red-alpha"></div>
</div>
CSS
[data-color="red"] {
background-color: oklab(50% 130 20);
}
[data-color="red-alpha"] {
background-color: oklab(50% 130 20 / 0.4);
}
ç»æ
è§è
| è§è |
|---|
| CSS Color Module Level 5 > # relative-Oklab > |
| CSS Color Module Level 4 > # ok-lab > |
æµè§å¨å ¼å®¹æ§
åè§
<color>æ°æ®ç±»åæåçææé¢è²è®°å·oklch()ï¼å¦ä¸ä½¿ç¨ä¸oklab()ç¸åçé¢è²ç©ºé´ä½å¨æåæ ç³»ä¸ç彿°è®°å·- ä¸ä¸ªç¨äºå¾åå¤ççæç¥é¢è²ç©ºé´