CSS hwb() 颿°
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2022å¹´4æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
hwb() 颿°è¨æ³ã¯ãæå®ãããè²ãè²ç¸ãç½è²åº¦ãé»è²åº¦ã«ãã sRGB è²ã«ãã£ã¦è¡¨ç¾ãã¾ãããªãã·ã§ã³ã®ã¢ã«ãã¡æåã¯ããã®è²ã®éæåº¦ã表ãã¾ãã
試ãã¦ã¿ã¾ããã
background: hwb(12 50% 0%);
background: hwb(50deg 30% 40%);
background: hwb(0.5turn 10% 0% / 0.5);
background: hwb(0 100% 0% / 50%);
<section id="default-example">
<div class="transition-all" id="example-element"></div>
</section>
#example-element {
min-width: 100%;
min-height: 100%;
padding: 10%;
}
æ§æ
/* 絶対çãªå¤ */
hwb(194 0% 0%)
hwb(194 0% 0% / .5)
/* ç¸å¯¾å¤ */
hwb(from green h w b / 0.5)
hwb(from #123456 h calc(w + 30) b)
hwb(from lch(40% 70 240deg) h w calc(b - 30))
解説
ãã㯠sRGB è²ç©ºéã«ãããè²é¢æ°ã§ã <hue> ã®è§åº¦å¤ãç½è²åº¦ãé»è²åº¦ãããã³ãªãã·ã§ã³ã§è²ã®ééçã表ãã¢ã«ãã¡å¤ã«ãã£ã¦å®ç¾©ããã¾ãã
ç¹å®ã®è²ç¸ã«å¯¾å¿ããè§åº¦ã¯ãsRGBï¼hsl() ããã³ hwb() ã§ä½¿ç¨ï¼ãCIELABï¼lch() ã§ä½¿ç¨ï¼ãOklabï¼oklch() ã§ä½¿ç¨ï¼ã®è²ç©ºéã«ãã£ã¦ç°ãªãã¾ããhwb() 㯠hsl() ã¨åãè²ç©ºéã«ãããããåãè²ç¸è§ãæã¡ã¾ãã詳細ã¨ä¾ã«ã¤ãã¦ã¯ <hue> ãªãã¡ã¬ã³ã¹ãã¼ã¸ãåç
§ããããã«ã©ã¼ããã«ã¼ã§è²ç¸ã夿´ãã¦åä½ã確èªãã¦ãã ããã
hwb() ã®è²ã¯ããã®ç½è²åº¦ (W) ã¨é»è²åº¦ (B) ã®å¤ãã©ã¡ãã 0 ã®ã¨ãã«å®å
¨ã«é£½åãã¾ããä»»æã®è²ç¸å¤ H ã«å¯¾ãã¦ãhwb(H 0% 0%) 㯠hsl(H 100% 50%) ã¨åãè²ã«ãªãã¾ããç½è²åº¦ã®å¤ã大ããããã¨è²ãæãããªãã¾ããé»è²åº¦ã®å¤ã大ããããã¨è²ãæããªãã¾ãã
é»è²åº¦ã¨ç½è²åº¦ã®ä¸¡æ¹ã 0 ãã大ããå ´åãè²ã¯ãããã§ç°è²ã«è¿ã¥ãã¾ãã追å ãããç½è²åº¦ã¨é»è²åº¦ã®éãåè¨ã§ 100% 以ä¸ãè¨ãæããã° W + B >= 100% ã®å ´åãã«ã©ã¼é¢æ°ã¯ã°ã¬ã¼ã®è²åããå®ç¾©ãã¾ãã両å¤ã®åè¨ã 100% ãè¶
ããå ´å (W + B > 100%)ãã°ã¬ã¼è²ã®ç½è²åº¦ã¨é»è²åº¦ã®å¤ã¯ãããã W / (W + B) ããã³ B / (W + B) ã¨ãã¦æ£è¦åããã¾ãã
å¤
ä¸è¨ã¯ã絶対è²ã¨ç¸å¯¾è²ã®ä¸¡æ¹ã«å¯¾ãã¦ãããã¨ãã§ããå¤ã®èª¬æã§ãã
絶対çãªå¤ã®æ§æ
hwb(H W B[ / A])
弿°ã¯ä»¥ä¸ã®éãã§ãã
H-
<number>ã<angle>ã¾ãã¯ãã¼ã¯ã¼ãnoneã§ãããè²ç¸è§ã表ãã¾ãããã®åã®è©³ç´°ã¯<hue>ã®ãªãã¡ã¬ã³ã¹ãåç §ãã¦ãã ããã W-
<percentage>ã§æ··åããè²ã®ç½è²åº¦ã表ããããã¼ã¯ã¼ãnoneã§ãï¼ãã®å ´åã¯0%ã¨åçã§ãï¼ã0%ã¯ç½ããå ¨ã表ãã¾ããã100%ã¯Bã0ã®å ´åã«å®å ¨ãªç½ãã表ãããã以å¤ã®å ´åã¯Wã¨Bã®ä¸¡æ¹ã®å¤ãæ£è¦åããã¾ãã B-
<percentage>ã§æ··åããè²ã®é»è²åº¦ã表ããããã¼ã¯ã¼ãnoneã§ãï¼ãã®å ´åã¯0%ã¨åçã§ãï¼ã0%ã¯é»ããå ¨ã表ãã¾ããã100%ã¯Wã0ã®å ´åã«å®å ¨ãªé»ãã表ãããã以å¤ã®å ´åã¯Wã¨Bã®ä¸¡æ¹ã®å¤ãæ£è¦åããã¾ãã Açç¥å¯-
ã¢ã«ãã¡ãã£ãã«å¤ã表ã
<alpha-value>ã§ãæ°å¤0ã¯0%ï¼å®å ¨ã«éæï¼ã1ã¯100%ï¼å®å ¨ã«ä¸éæï¼ã«å¯¾å¿ãã¾ããããã«ãã¼ã¯ã¼ãnoneã使ç¨ãã¦æç¤ºçã«ã¢ã«ãã¡ãã£ãã«ãæå®ããªããã¨ãå¯è½ã§ããAãã£ãã«å¤ãæç¤ºçã«æå®ããã¦ããªãå ´åãããã©ã«ã㯠100% ã§ããAãã£ãã«å¤ãå«ããå ´åã¯ãå¤ã®åã«ã¹ã©ãã·ã¥ (/) ãä»ãã¾ãã
ã¡ã¢:
none ã®å¹æã«ã¤ãã¦ã¯è²æåã®æ¬ è½ãåç
§ãã¦ãã ããã
ã¡ã¢:
絶対ç㪠hwb() è²ã¯ãrgb() å¤ã«ã·ãªã¢ã«åããã¾ããã·ãªã¢ã«åæã«ã赤ãç·ãéã®åè¦ç´ ã®å¤ã丸ãããããã¨ãããã¾ãã
ç¸å¯¾å¤ã®æ§æ
hwb(from <color> H W B[ / A])
弿°ã¯ä»¥ä¸ã®éãã§ãã
from <color>-
ç¸å¯¾è²ãå®ç¾©ããå ´åã¯ããã¼ã¯ã¼ã
fromã常ã«å«ã¾ããæ¬¡ã«èµ·ç¹è²ã表ã<color>ãç¶ãã¾ããããã¯ç¸å¯¾è²ã®ãã¼ã¹ã¨ãªãèµ·ç¹ã®è²ã§ããèµ·ç¹è²ã«ã¯ãå¥ã®ç¸å¯¾è²ãå«ã ä»»æ ã®æå¹ãª<color>æ§æã使ç¨ã§ãã¾ãã H-
<number>ã<angle>ãã¾ãã¯ãã¼ã¯ã¼ãnoneï¼ãã®å ´åã¯0degã¨åçï¼ã§ãåºåè²ã®<hue>è§ã表ãã¾ãã W-
<percentage>ã§æ··åããè²ã®ç½è²åº¦ã表ããããã¼ã¯ã¼ãnoneã§ãï¼ãã®å ´åã¯0%ã¨åçã§ãï¼ã0%ã¯ç½ããå ¨ã表ãã¾ããã100%ã¯Bã0ã®å ´åã«å®å ¨ãªç½ãã表ãããã以å¤ã®å ´åã¯Wã¨Bã®ä¸¡æ¹ã®å¤ãæ£è¦åããã¾ãã B-
<percentage>ã§æ··åããè²ã®é»è²åº¦ã表ããããã¼ã¯ã¼ãnoneã§ãï¼ãã®å ´åã¯0%ã¨åçã§ãï¼ã0%ã¯é»ããå ¨ã表ãã¾ããã100%ã¯Wã0ã®å ´åã«å®å ¨ãªé»ãã表ãããã以å¤ã®å ´åã¯Wã¨Bã®ä¸¡æ¹ã®å¤ãæ£è¦åããã¾ãã Açç¥å¯-
ã¢ã«ãã¡ãã£ãã«å¤ã表ã
<alpha-value>ã§ãæ°å¤0ã¯0%ï¼å®å ¨ã«éæï¼ã1ã¯100%ï¼å®å ¨ã«ä¸éæï¼ã«å¯¾å¿ãã¾ããããã«ãã¼ã¯ã¼ãnoneã使ç¨ãã¦æç¤ºçã«ã¢ã«ãã¡ãã£ãã«ãæå®ããªããã¨ãå¯è½ã§ããAãã£ãã«å¤ãæç¤ºçã«æå®ããã¦ããªãå ´åãããã©ã«ãã¯èµ·ç¹è²ã®ã¢ã«ãã¡ãã£ãã«ã§ããAãã£ãã«å¤ãå«ããå ´åã¯ãå¤ã®åã«ã¹ã©ãã·ã¥ (/) ãä»ãã¾ãã
ã¡ã¢:
å®å
¨ãªå¯è¦ã¹ãã¯ãã«ã表ç¾ããããã«ãç¸å¯¾ç㪠hwb() è²é¢æ°ã®åºå㯠color(srgb) ã«ã·ãªã¢ã©ã¤ãºããã¾ããã¤ã¾ããHTMLElement.style ããããã£ã¾ã㯠CSSStyleDeclaration.getPropertyValue() ã¡ã½ãããä»ãã¦åºåè²ãã¯ã¨ãªã¼ããã¨ãåºåè²ã color(srgb ...) å¤ã¨ãã¦è¿ããã¾ãã
ç¸å¯¾è²åºåãã£ãã«æåã®å®ç¾©
hwb() 颿°å
ã§ç¸å¯¾è²æ§æã使ç¨ããå ´åããã©ã¦ã¶ã¼ã¯èµ·ç¹è²ãç価㮠HWB è²ã«å¤æãã¾ãï¼ãã§ã«ãã®ããã«æå®ããã¦ããªãå ´åï¼ãè²ã¯ 3 ã¤ã®ç°ãªãè²ãã£ãã«å¤ - hï¼è²ç¸ï¼ãwï¼ç½è²åº¦ï¼ãbï¼é»è²åº¦ï¼- ããã³ã¢ã«ãã¡ãã£ãã«å¤ (alpha) ã¨ãã¦å®ç¾©ããã¾ãããããã®ãã£ãã«å¤ã¯ãåºåè²ãã£ãã«å¤ãå®ç¾©ããéã«é¢æ°å
ã§ä½¿ç¨ã§ãã¾ãã
hãã£ãã«ã¯0以ä¸360以ä¸ã®<number>ã«è§£æ±ºãã¾ããwã¨bãã£ãã«ã¯ãããã0以ä¸100以ä¸ã®<number>ã«è§£æ±ºãã¾ããalphaãã£ãã«ã¯0以ä¸1以ä¸ã®<number>ã«è§£æ±ºãã¾ãã
ç¸å¯¾è²ãå®ç¾©ããéãåºåè²ã®ãã¾ãã¾ãªãã£ãã«ãããã¤ãã®ç°ãªãæ¹æ³ã§è¡¨ç¾ã§ãã¾ãã以ä¸ã§ã¯ããããã説æããããã«ããã¤ãã®ä¾ãè¦ã¦ããã¾ãã
以ä¸ã®æåã® 2 ã¤ã®ä¾ã§ã¯ç¸å¯¾è²æ§æã使ç¨ãã¦ãã¾ãããæåã®ãã®ã¯èµ·ç¹è²ã¨åãè²ãåºåãã2 çªç®ã®ãã®ã¯èµ·ç¹è²ã«ã¾ã£ããåºã¥ãã¦ããªãè²ãåºåãã¾ãããããã¯å®éã«ã¯ç¸å¯¾è²ã使ãã¦ãã¾ããï¼å®éã®ã³ã¼ããã¼ã¹ã§ãããã使ç¨ãããã¨ã¯ã»ã¨ãã©ãªãã代ããã«çµ¶å¯¾è²å¤ã使ç¨ãããã¨ã«ãªãã§ãããããããã®ä¾ã¯ç¸å¯¾ç㪠hwb() æ§æã«ã¤ãã¦å¦ã¶ããã®åºçºç¹ã¨ãã¦å«ã¾ãã¦ãã¾ãã
ã¾ããhsl(0 100% 50%)ï¼hwb(0 0% 0%) ã¨åçï¼ã®èµ·ç¹è²ããå§ãã¾ããããæ¬¡ã®é¢æ°ã¯èµ·ç¹è²ã¨åãè²ãåºåãã¾ãããã®é¢æ°ã¯ãèµ·ç¹è²ã® hãwãb ãã£ãã«å¤ï¼0ã0%ã0%ï¼ãåºåãã£ãã«å¤ã¨ãã¦ä½¿ç¨ãã¾ãã
hwb(from hsl(0 100% 50%) h w b)
ãã®é¢æ°ã®åºåã¯ãhwb(0 0% 0%) ã¨åçã® sRGB color()ãããªãã¡ color(srgb 1 0 0) ã§ãã
次ã®é¢æ°ã¯ãåºåè²ã®ãã£ãã«å¤ã«çµ¶å¯¾çãªå¤ã使ç¨ãã¦ããã®ã§ãèµ·ç¹è²ã«åºã¥ããªãã¾ã£ããç°ãªãè²ãåºåãã¾ãã
hwb(from hsl(0 100% 50%) 240 52% 12%)
ä¸è¨ã®å ´åãåºåè²ã¯ hwb(240 52% 12%) ã¨åçã® sRGB color()ãããªãã¡ color(srgb 0.52 0.52 0.88) ã§ãã
次ã®é¢æ°ã¯ãèµ·ç¹è²ã«åºã¥ãã¦ç¸å¯¾è²ã使ãã¾ãã
hwb(from hsl(0 100% 50%) h 30% b)
ãã®ä¾ã§ã¯ã次ã®ãã¨ãè¡ããã¾ãã
- èµ·ç¹è²ï¼
hsl(0 100% 50%)ï¼ãåçã®hwb()ã«å¤æãã¾ãï¼hwb(0 0% 0%)ï¼ã - åºåè²ã®
Hããã³Bãã£ãã«å¤ããèµ·ç¹è²ã®hwb()ç¸å½å¤ã®Hããã³Bãã£ãã«å¤ãããªãã¡ãããã0ããã³0%ã«è¨å®ãã¾ãã - åºåè²ã®
Wãã£ãã«å¤ããèµ·ç¹è²ã®hwb()ç¸å½å¤ã®Wãã£ãã«å¤ãããªãã¡30%ã«è¨å®ãã¾ãã
æçµçãªåºåè²ã¯ hwbl(0 30% 60%)ãããªãã¡ sRGB è²ç©ºéã® color(srgb 1 0.3 0.3) ã«ç¸å½ãã¾ãã
ã¡ã¢: åè¿°ããããã«ãåºåè²ãèµ·ç¹è²ã¨ç°ãªãè²ã¢ãã«ã使ç¨ãã¦ããå ´åãèµ·ç¹è²ã¯ããã¯ã°ã©ã¦ã³ãã§åºåè²ã¨åãã¢ãã«ã¾ãã¯ç©ºéã«å¤æãããäºææ§ã®ããæ¹æ³ã§è¡¨ç¾ããã¾ãï¼ã¤ã¾ããåããã£ãã«ã使ç¨ãã¾ãï¼ã
ããã¾ã§ã«è¦ã¦ããä¾ã¯ãèµ·ç¹ããã³åºåã«ããã¦ãã¢ã«ãã¡ãã£ãã«ãæç¤ºçã«æå®ããã¦ãã¾ãããåºåè²ã®ã¢ã«ãã¡ãã£ãã«ãæå®ããã¦ããªãå ´åãèµ·ç¹è²ã®ã¢ã«ãã¡ãã£ãã«ã¨åãå¤ã«ãªãã¾ããèµ·ç¹è²ã®ã¢ã«ãã¡ãã£ãã«ãæå®ããã¦ããªãå ´åï¼ãã¤ãããç¸å¯¾è²ã§ãªãå ´åï¼ãããã©ã«ãå¤ã¯ 1 ã§ãããããã£ã¦ãä¸è¨ã®ä¾ã®èµ·ç¹è²ããã³åºåè²ã®ã¢ã«ãã¡ãã£ãã«å¤ã¯ 1 ã§ãã
èµ·ç¹ããã³åºåã®ã¢ã«ãã¡ãã£ãã«å¤ãæå®ããä¾ãè¦ã¦ã¿ã¾ããããæåã®ä¾ã§ã¯ãåºåã¢ã«ãã¡ãã£ãã«å¤ãèµ·ç¹ã¢ã«ãã¡ãã£ãã«å¤ã¨åãå¤ã«è¨å®ãã2 çªç®ã®ä¾ã§ã¯ãèµ·ç¹ã¢ã«ãã¡ãã£ãã«å¤ã¨ã¯é¢ä¿ãªãç°ãªãåºåã¢ã«ãã¡ãã£ãã«å¤ãè¨å®ãã¾ãã
hwb(from hsl(0 100% 50% / 0.8) h w b / alpha)
/* è¨ç®ãããåºåè²: color(srgb 1 0 0 / 0.8) */
hwb(from hsl(0 100% 50% / 0.8) h w b / 0.5)
/* è¨ç®ãããåºåè²: color(srgb 1 0 0 / 0.5) */
次ã®ä¾ã§ã¯ãhsl() ã®èµ·ç¹è²ã¯åã³ hwb() è¡¨ç¾ - hwb(0 0% 0%) ã«å¤æããã¾ããHãWãBãããã³ A å¤ã« calc() è¨ç®ãé©ç¨ããã¾ããæçµçãªåºåè²ã¯ hwb(120 25% 10% / 0.9)ãããªãã¡ sRGB è²ç©ºéã® color(srgb 0.25 0.9 0.25 / 0.9) ã¨åçã§ãã
hwb(from hsl(0 100% 50%) calc(h + 120) calc(w + 25) calc(b + 10) / calc(alpha - 0.1))
ã¡ã¢:
èµ·ç¹è²ã®ãã£ãã«ã¯ <number> å¤ã«è§£æ±ºããããããé常ãã£ãã«ã <percentage>ã<angle>ãã¾ãã¯ä»ã®å¤åãåãå
¥ããå ´åã§ããè¨ç®ã§ä½¿ç¨ããéã«ã¯æ°å¤ãå ããå¿
è¦ãããã¾ããä¾ãã° <percentage> ã <number> ã«å ãããã¨ã¯ã§ãã¾ããã
形弿æ³
<hwb()> =
hwb( [ from <color> ]? [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<hue> =
<number> |
<angle>
<alpha-value> =
<number> |
<percentage>
ä¾
>hwb() ã«ããç¸å¯¾è²ã®ä½¿ç¨
ãã®ä¾ã§ã¯ã3 ã¤ã® <div> è¦ç´ ãç°ãªãèæ¯è²ã§ã¹ã¿ã¤ã«è¨å®ãã¾ããä¸å¤®ã®ãã®ã«ã¯å¤æ´ããã¦ããªã --base-color ãä¸ããããå·¦ã¨å³ã®ãã®ã«ã¯ãã¨ã® --base-color ãããããæãããæãããå¤ãä¸ãããã¾ãã
ãããã®å¤åãããå¤ã¯ç¸å¯¾è²ãç¨ãã¦å®ç¾©ããã¾ãã--base-color ã«ã¹ã¿ã ãããã㣠ã hwb() 颿°ã«æ¸¡ãããåºåãããè²ã¯ calc() 颿°ãéãã¦ç½ã¨é»ã®ãã£ã³ãã«ã夿´ãããæå³ãã广ãå¾ããã¾ããæããè²ã¯ç½ãã£ã³ãã«ã« 30% ã追å ãããæãè²ã¯é»ãã£ã³ãã«ã« 30% ã追å ããã¾ãã
CSS
:root {
--base-color: orange;
}
/* 仿§æ¸ã«ããã°ãw 㨠b ã®å¤ã¯ 0 ãã 100 ã®éã®æ°å¤ã«è§£æ±ºãããã¹ãã§ã
ãã ããChrome 121 以éã§ã¯ãããã誤ã£ã¦0ãã1ã®éã®æ°å¤ã«è§£æ±ºãããããã
ç¾å¨ w + 30 ã§ã¯ãªã w + 0.3 ã®ãããªè¨ç®ã使ç¨ããã¦ãã¾ãã */
#one {
background-color: hwb(from var(--base-color) h calc(w + 0.3) b);
}
#two {
background-color: var(--base-color);
}
#three {
background-color: hwb(from var(--base-color) h w calc(b + 0.3));
}
/* @supports ã使ç¨ãã¦ãw ããã³ b ã®è¨ç®ã«ãã㦠% åä½ãæå®ããå¿
è¦ãããå¤ãæ§æã¸ã®å¯¾å¿ã追å ãã¾ãããã㯠Safari 16.4 以éã§å¿
è¦ã§ãã */
@supports (color: hwb(from red h w calc(b + 30%))) {
#one {
background-color: hwb(from var(--base-color) h calc(w + 30%) b);
}
#three {
background-color: hwb(from var(--base-color) h w calc(b + 30%));
}
}
çµæ
åºåçµæã¯æ¬¡ã®éãã§ãã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Color Module Level 5 > # relative-HWB > |
| CSS Color Module Level 4 > # the-hwb-notation > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
<color>: ãã¹ã¦ã®è²è¨æ³ã®ä¸è¦§- è²å½¢å¼å¤æãã¼ã«
- ç¸å¯¾è²ã®ä½¿ç¨
- CSS è²ã¢ã¸ã¥ã¼ã«
<hue>: è²ã®è²ç¸è§ã表ããã¼ã¿å