<color>
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
* Some parts of this feature may have varying levels of support.
<color> CSS æ°æ®ç±»å表示ä¸ä¸ªé¢è²ã<color> å¯ä»¥å
æ¬ä¸ä¸ª alpha éééæåº¦å¼ï¼æ¥è¡¨æé¢è²å¦ä½ä¸èæ¯è²æ··åï¼compositeï¼ã
夿³¨ï¼å°½ç®¡ <color> 被精确å®ä¹ï¼ä½å¨ä¸åçè¾åºè®¾å¤ä¸ä»ç¶æå¯è½è¡¨ç°ä¸ä¸è´ï¼ææ¶çè³åºå«å¾å¤§ï¼ãè¿æ¯å ä¸ºå¤§å¤æ°è®¾å¤ä¸æ¯ç»æ ¡åçï¼èä¸æäºæµè§å¨ä¸æ¯æè¾åºè®¾å¤çè²å½©é
ç½®ï¼color profileï¼ã
è¯æ³
/* å½åé¢è² */
rebeccapurple
aliceblue
/* RGB åå
è¿å¶ */
#f09
#ff0099
/* RGBï¼çº¢ã绿ãèï¼ */
rgb(255 0 153)
rgb(255 0 153 / 80%)
/* HSLï¼è²ç¸ã饱å度ãäº®åº¦ï¼ */
hsl(150 30% 60%)
hsl(150 30% 60% / 80%)
/* HWBï¼è²ç¸ãç½åº¦ãé»åº¦ï¼ */
hwb(12 50% 0%)
hwb(194 0% 0% / 0.5)
/* LABï¼äº®åº¦ãA è½´ãB è½´ï¼ */
lab(50% 40 59.5)
lab(50% 40 59.5 / 0.5)
/* LCHï¼äº®åº¦ãè²åº¦ãè²ç¸ï¼ */
lch(52.2% 72.2 50)
lch(52.2% 72.2 50 / 0.5)
/* Oklabï¼äº®åº¦ãA è½´ãB è½´ï¼ */
oklab(59% 0.1 0.1)
oklab(59% 0.1 0.1 / 0.5)
/* Oklchï¼äº®åº¦ãè²åº¦ãè²ç¸ï¼ */
oklch(60% 0.15 50)
oklch(60% 0.15 50 / 0.5)
/* ç¸å¯¹ CSS é¢è² */
/* HSL è²ç¸åå */
hsl(from red 240deg s l)
/* HWB alpha ééåå */
hwb(from green h w b / 0.5)
/* LCH 亮度åå */
lch(from blue calc(l + 20) c h)
/* light-dark */
light-dark(white, black)
light-dark(rgb(255 255 255), rgb(0 0 0))
<color> å¼å¯ä»¥ä½¿ç¨å¦ä¸æ¹å¼å®ä¹ï¼
- éè¿å
³é®åï¼
<named-color>ï¼ä¾å¦blueæpinkï¼ã<system-color>åcurrentcolorã - éè¿åå
è¿å¶æ è®°ï¼
<hex-color>ï¼ä¾å¦#ff0000ï¼ã - éè¿
<color-function>ï¼å¨è²å½©ç©ºé´ä¸ä½¿ç¨å¸¦åæ°ç彿°æ è®°ï¼ - éè¿ä½¿ç¨ç¸å¯¹é¢è²è¯æ³åºäºç°æé¢è²è¾åºä¸ä¸ªæ°çé¢è²ãä¸è¿°ä»»ä½é¢è²å½æ°é½å¯ä»¥æ¥åç±
fromå ³é®åå¼å¯¼å¹¶åè·æ°è¾åºé¢è²çééå¼å®ä¹çåå§é¢è²ã - éè¿æ··å两个é¢è²ï¼
color-mix()ã - éè¿æå®ä¸¤ä¸ªé¢è²ï¼ç¬¬ä¸ä¸ªç¨äºæµ
è²æ¨¡å¼ï¼ç¬¬äºä¸ªç¨äºæ·±è²æ¨¡å¼ï¼
light-dark()ã
currentcolor å
³é®å
currentcolor å
³é®å表示å
ç´ ç color 屿§çå¼ãè¿å
è®¸ä½ å¨é»è®¤æ
åµä¸ä¸æ¥æ¶ color å¼ç屿§ä¸ä½¿ç¨ color å¼ã
妿 currentcolor ç¨äº color 屿§çå¼ï¼åå®å°ä» color 屿§çç»§æ¿å¼ä¸è·åå
¶å¼ã
<div style="color: blue; border: 1px dashed currentcolor;">
è¿ä¸ªææ¬çé¢è²æ¯èè²ã
<div style="background: currentcolor; height:9px;"></div>
è¿ä¸ªåçè¾¹æ¡ä¹æ¯èè²ã
</div>
缺失é¢è²åé
æ¯ä¸ª CSS é¢è²å½æ°çåéï¼é¤äºä½¿ç¨æ§ççéå·åéè¯æ³çï¼é½å¯ä»¥æå®å
³é®å none 表示ä¸ä¸ªç¼ºå¤±çåéã
æç¡®æå®é¢è²æå¼ä¸ç¼ºå¤±çåéå¨ä½ æ³è¦å¯¹é¨åé¢è²åéè¿è¡æå¼èä¸å¯¹å
¶ä»åéè¿è¡æå¼çæ
åµä¸é常æç¨ãå¯¹äºææå
¶ä»ç¨éï¼ç¼ºå¤±çåéå¨éå½çåä½ä¸å°ææå°å
·æé¶å¼ï¼0ã0% æ 0degãä¾å¦ï¼ä¸é¢çé¢è²å¨ä¸æå¼æ¶æ¯çä»·çï¼
/* è¿ä¸¤ä¸ªæ¯çä»·ç */
color: oklab(50% none -0.25);
color: oklab(50% 0 -0.25);
/* è¿ä¸¤ä¸ªæ¯çä»·ç */
background-color: hsl(none 100% 50%);
background-color: hsl(0deg 100% 50%);
æå¼
é¢è²æå¼ä¼åç卿¸åãè¿æ¸¡åå¨ç»ä¸ã
å½å¯¹ <color> å¼è¿è¡æå¼æ¶ï¼å®ä»¬é¦å
ä¼è½¬æ¢ææå®çè²å½©ç©ºé´ï¼ç¶åé¢è²åéç计ç®å¼ä¼è¿è¡çº¿æ§æå¼ï¼æå¼é度ç±è¿æ¸¡åå¨ç»ä¸çç¼å¨å½æ°å³å®ãæå¼è²å½©ç©ºé´é»è®¤ä¸º Oklabï¼ä½æ¯å¯ä»¥å¨ä¸äºä¸é¢è²ç¸å
³ç彿°æ è®°ä¸éè¿ <color-interpolation-method> è¦çã
带æç¼ºå¤±åéæ¶çæå¼
å¨åä¸ç©ºé´å æå¼é¢è²
对å®å ¨å¨æå¼è²å½©ç©ºé´ä¸çé¢è²è¿è¡æå¼æ¶ï¼ä¸ä¸ªé¢è²ä¸ç¼ºå¤±çåéå°æ¿æ¢ä¸ºå¦ä¸ç§é¢è²ä¸åä¸åéçç°æå¼ãä¾å¦ï¼ä»¥ä¸ä¸¤ä¸ªè¡¨è¾¾å¼æ¯çæçï¼
color-mix(in oklch, oklch(none 0.2 10), oklch(60% none 30))
color-mix(in oklch, oklch(60% 0.2 10), oklch(60% 0.2 30))
夿³¨ï¼å¦æä¸¤ä¸ªé¢è²é½ç¼ºå¤±è¿ä¸ªåéï¼é£ä¹è¿ä¸ªåé卿å¼å乿¯ç¼ºå¤±çã
å¨ä¸å空é´å æå¼ï¼ç¸ä¼¼åé
妿任ä½è¦æå¼çé¢è²ä¸å¨æå¼è²å½©ç©ºé´ä¸ï¼åå ¶ç¼ºå¤±çåéå°æ ¹æ®åä¸ç±»çç¸ä¼¼åé转æ¢ä¸ºè½¬æ¢åçé¢è²ï¼å¦ä¸è¡¨æè¿°ï¼
| ç±»å« | ç¸ä¼¼åé |
|---|---|
| çº¢è² | RãX |
| ç»¿è² | GãY |
| èè² | BãZ |
| æåº¦ | L |
| è²åº¦ | CãS |
| è²ç¸ | H |
| a | a |
| b | b |
ä¾å¦ï¼
color(xyz 0.2 0.1 0.6)ä¸çXï¼0.2ï¼ç¸ä¼¼äºrgb(50% 70% 30%)ä¸çRï¼50%ï¼ãhsl(0deg 100% 80%)ä¸çHï¼0degï¼ç¸ä¼¼äºoklch(80% 0.1 140)ä¸çHï¼140ï¼ã
ä½¿ç¨ Oklch ä½ä¸ºæå¼è²å½©ç©ºé´å¹¶ä»¥ä¸é¢ä¸¤ç§é¢è²ä¸ºä¾ï¼
lch(80% 30 none)
color(display-p3 0.7 0.5 none)
é¢å¤çè¿ç¨ä¸ºï¼
-
å°ä¸¤ç§é¢è²ä¸ç¼ºå¤±çåéæ¿æ¢ä¸ºé¶å¼ï¼
csslch(80% 30 0) color(display-p3 0.7 0.5 0) -
å°ä¸¤ç§é¢è²è½¬æ¢ä¸ºæå¼è²å½©ç©ºé´ï¼
cssoklch(83.915% 0.0902 0.28) oklch(63.612% 0.1522 78.748) -
å¦æè½¬æ¢åé¢è²çä»»ä½åéä¸ç¸åºåå§é¢è²ä¸ç缺失åéç¸ä¼¼ï¼åå°å ¶é置为缺失çåéï¼
cssoklch(83.915% 0.0902 none) oklch(63.612% 0.1522 78.748) -
å°ä»»ä½ç¼ºå¤±çåéæ¿æ¢ä¸ºå¦ä¸è½¬æ¢åé¢è²ä¸çç¸ååéï¼
cssoklch(83.915% 0.0902 78.748) oklch(63.612% 0.1522 78.748)
æ éç¢èè
ä¸äºäººå辨é¢è²å¯è½ä¼åå¨å°é¾ãWCAG 2.2 强ç建议ä¸è¦å°é¢è²ä½ä¸ºä¼ éç¹å®æ¶æ¯ãæ´»å¨æç»æçå¯ä¸æ¹å¼ãåè§é¢è²åé¢è²å¯¹æ¯åº¦ä»¥äºè§£æ´å¤ä¿¡æ¯ã
å½¢å¼è¯æ³
<color> =
<color-base> |
currentColor |
<system-color> |
<contrast-color()> |
<device-cmyk()> |
<light-dark()>
<color-base> =
<hex-color> |
<color-function> |
<named-color> |
<color-mix()> |
transparent
<contrast-color()> =
contrast-color( [ [ <color> && [ tbd-fg | tbd-bg ] && <target-contrast>? ] | [ <color> && [ tbd-fg | tbd-bg ] && <target-contrast> , <color># ] ] )
<device-cmyk()> =
<legacy-device-cmyk-syntax> |
<modern-device-cmyk-syntax>
<light-dark()> =
light-dark( <color> , <color> )
<color-function> =
<rgb()> |
<rgba()> |
<hsl()> |
<hsla()> |
<hwb()> |
<lab()> |
<lch()> |
<oklab()> |
<oklch()> |
<ictcp()> |
<jzazbz()> |
<jzczhz()> |
<alpha()> |
<color()>
<color-mix()> =
color-mix( <color-interpolation-method>? , [ <color> && <percentage [0,100]>? ]# )
<target-contrast> =
<wcag2>
<legacy-device-cmyk-syntax> =
device-cmyk( <number>#{4} )
<modern-device-cmyk-syntax> =
device-cmyk( <cmyk-component>{4} [ / [ <alpha-value> | none ] ]? )
<rgb()> =
<legacy-rgb-syntax> |
<modern-rgb-syntax>
<rgba()> =
<legacy-rgba-syntax> |
<modern-rgba-syntax>
<hsl()> =
<legacy-hsl-syntax> |
<modern-hsl-syntax>
<hsla()> =
<legacy-hsla-syntax> |
<modern-hsla-syntax>
<hwb()> =
hwb( [ from <color> ]? [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<lab()> =
lab( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<lch()> =
lch( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <hue> | none ] [ / [ <alpha-value> | none ] ]? )
<oklab()> =
oklab( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<oklch()> =
oklch( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <hue> | none ] [ / [ <alpha-value> | none ] ]? )
<ictcp()> =
ictcp( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<jzazbz()> =
jzazbz( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<jzczhz()> =
jzczhz( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <hue> | none ] [ / [ <alpha-value> | none ] ]? )
<alpha()> =
alpha( [ from <color> ] [ / [ <alpha-value> | none ] ]? )
<color()> =
color( [ from <color> ]? <colorspace-params> [ / [ <alpha-value> | none ] ]? )
<color-interpolation-method> =
in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]
<wcag2> =
wcag2 |
wcag2( [ <number> | [ aa | aaa ] && large? ] )
<cmyk-component> =
<number> |
<percentage> |
none
<alpha-value> =
<number> |
<percentage>
<legacy-rgb-syntax> =
rgb( <percentage>#{3} , <alpha-value>? ) |
rgb( <number>#{3} , <alpha-value>? )
<modern-rgb-syntax> =
rgb( [ from <color> ]? [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )
<legacy-rgba-syntax> =
rgba( <percentage>#{3} , <alpha-value>? ) |
rgba( <number>#{3} , <alpha-value>? )
<modern-rgba-syntax> =
rgba( [ from <color> ]? [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )
<legacy-hsl-syntax> =
hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )
<modern-hsl-syntax> =
hsl( [ from <color> ]? [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<legacy-hsla-syntax> =
hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )
<modern-hsla-syntax> =
hsla( [ from <color> ]? [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<hue> =
<number> |
<angle>
<colorspace-params> =
<custom-params> |
<predefined-rgb-params> |
<xyz-params>
<rectangular-color-space> =
srgb |
srgb-linear |
display-p3 |
display-p3-linear |
a98-rgb |
prophoto-rgb |
rec2020 |
lab |
oklab |
<xyz-space>
<polar-color-space> =
hsl |
hwb |
lch |
oklch
<hue-interpolation-method> =
[ shorter | longer | increasing | decreasing ] hue
<custom-color-space> =
<dashed-ident>
<custom-params> =
<dashed-ident> [ <number> | <percentage> | none ]+
<predefined-rgb-params> =
<predefined-rgb> [ <number> | <percentage> | none ]{3}
<xyz-params> =
<xyz-space> [ <number> | <percentage> | none ]{3}
<xyz-space> =
xyz |
xyz-d50 |
xyz-d65
<predefined-rgb> =
srgb |
srgb-linear |
display-p3 |
display-p3-linear |
a98-rgb |
prophoto-rgb |
rec2020 |
rec2100-pq |
rec2100-hlg |
rec2100-linear
示ä¾
>æ¢ç´¢é¢è²å¼
å¨è¿ä¸ªä¾åä¸ï¼æä»¬æä¾äºä¸ä¸ª <div> åä¸ä¸ªææ¬è¾å
¥æ¡ãå¾ææ¬æ¡å
è¾å
¥ææçé¢è²ä¼ä½¿ <div> éç¨è¿ä¸ªé¢è²ï¼ä»èå
è®¸ä½ æµè¯æä»¬çé¢è²å¼ã
HTML
<div></div>
<hr />
<label for="color">è¾å
¥ææçé¢è²å¼ï¼</label>
<input type="text" id="color" />
ç»æ
çæå®å ¨é¥±åç sRGB é¢è²
æ¤ç¤ºä¾æ¾ç¤º sRGB è²å½©ç©ºé´ä¸å®å ¨é¥±åç sRGB é¢è²ã
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
CSS
div:nth-child(1) {
background-color: hsl(0 100% 50%);
}
div:nth-child(2) {
background-color: hsl(30 100% 50%);
}
div:nth-child(3) {
background-color: hsl(60 100% 50%);
}
div:nth-child(4) {
background-color: hsl(90 100% 50%);
}
div:nth-child(5) {
background-color: hsl(120 100% 50%);
}
div:nth-child(6) {
background-color: hsl(150 100% 50%);
}
div:nth-child(7) {
background-color: hsl(180 100% 50%);
}
div:nth-child(8) {
background-color: hsl(210 100% 50%);
}
div:nth-child(9) {
background-color: hsl(240 100% 50%);
}
div:nth-child(10) {
background-color: hsl(270 100% 50%);
}
div:nth-child(11) {
background-color: hsl(300 100% 50%);
}
div:nth-child(12) {
background-color: hsl(330 100% 50%);
}
ç»æ
å建ä¸åæ·±æµ ç红è²
æ¤ç¤ºä¾æ¾ç¤º sRGB è²å½©ç©ºé´ä¸ä¸åæ·±æµ ç红è²ã
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
CSS
div:nth-child(1) {
background-color: hsl(0 100% 0%);
}
div:nth-child(2) {
background-color: hsl(0 100% 20%);
}
div:nth-child(3) {
background-color: hsl(0 100% 40%);
}
div:nth-child(4) {
background-color: hsl(0 100% 60%);
}
div:nth-child(5) {
background-color: hsl(0 100% 80%);
}
div:nth-child(6) {
background-color: hsl(0 100% 100%);
border: solid;
}
ç»æ
å建ä¸å饱å度ç红è²
æ¤ç¤ºä¾æ¾ç¤º sRGB è²å½©ç©ºé´ä¸ä¸å饱å度ç红è²ã
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
CSS
div:nth-child(1) {
background-color: hsl(0 0% 50%);
}
div:nth-child(2) {
background-color: hsl(0 20% 50%);
}
div:nth-child(3) {
background-color: hsl(0 40% 50%);
}
div:nth-child(4) {
background-color: hsl(0 60% 50%);
}
div:nth-child(5) {
background-color: hsl(0 80% 50%);
}
div:nth-child(6) {
background-color: hsl(0 100% 50%);
}
ç»æ
è§è
| Specification |
|---|
| CSS Color Module Level 4 > # color-syntax > |
æµè§å¨å ¼å®¹æ§
åè§
opacityï¼å¨å ç´ çº§å«ä¸è®¾å¤éæåº¦ç屿§<hue>ï¼è¡¨ç¤ºä¸ä¸ªé¢è²çè²ç¸è§åº¦çæ°æ®ç±»åcolorãbackground-colorãborder-colorãbox-shadowãoutline-colorãtext-shadowï¼ä½¿ç¨<color>ç常è§å±æ§- ä½¿ç¨ CSS ç» HTML å ç´ åºç¨é¢è²
- 使ç¨ç¸å¯¹é¢è²
- MDN å客ä¸çæç« CSS é¢è²ï¼ç¬¬ 4 çï¼ä¸çæ°åè½ãæ¸ååè²è°ï¼2023 å¹´ï¼