CSS 中的颜色属性 color 知多少?
本文摘自 勾三股四 更早时期的 不老歌 博客。
真相在此:http://www.w3.org/TR/2003/CR-css3-color-20030514/#colorunits
----------------------------------------------
首先,css 的 color
属性值,可以是一个关键字定义,也可以通过数值来定义。且两者都有多种定义的形式。
HTML 4 颜色关键字(HTML 4 color keywords)
■ Black = #000000■ Green = #008000
■ Silver = #C0C0C0
■ Lime = #00FF00
■ Gray = #808080
■ Olive = #808000
□ White = #FFFFFF
■ Yellow = #FFFF00
■ Maroon = #800000
■ Navy = #000080
■ Red = #FF0000
■ Blue = #0000FF
■ Purple = #800080
■ Teal = #008080
■ Fuchsia = #FF00FF
■ Aqua = #00FFFF
例如:
body {color: black; background: white }
h1 { color: maroon }
h2 { color: olive }
数值定义
RGB颜色值
这个最常见了,不过一共有两种写法,例如:em { color: #f00 } /* #rgb */
em { color: #ff0000 } /* #rrggbb */
em { color: rgb(255,0,0) } /* integer range 0 - 255 */
em { color: rgb(100%, 0%, 0%) } /* float range 0.0% - 100.0% */
还有一点需要注意,如果数值超出了正常范围(比如负数或超过255的整数等等),则会取合理范围内的极限值,比如:
em { color: rgb(255,0,0) } /* integer range 0 - 255 */
em { color: rgb(300,0,0) } /* clipped to rgb(255,0,0) */
em { color: rgb(255,-10,0) } /* clipped to rgb(255,0,0) */
em { color: rgb(110%, 0%, 0%) } /* clipped to rgb(100%,0%,0%) */
RGBA颜色值
在RGBA的基础上,多了一个alpha通道透明度的定义,例如:em { color: rgb(255,0,0) } /* integer range 0 - 255 */
em { color: rgba(255,0,0,1) /* the same, with explicit opacity of 1 */
穿插:transparent 关键字
透明,无颜色,相当于rgba(0,0,0,0)
HSL颜色值
一个整数 + 两个百分数,分别表示色相、饱和度和亮度。例如:* { color: hsl(0, 100%, 50%) } /* red */
* { color: hsl(120, 100%, 50%) } /* green */
* { color: hsl(120, 100%, 25%) } /* light green */
* { color: hsl(120, 100%, 75%) } /* dark green */
* { color: hsl(120, 50%, 50%) } /* pastel green, and so on */
这样的写法目前还不太常见,但这样的定义方式给颜色渐变的计算带来了很多方便,或许将来会大有所为哦:)
HSLA颜色值
同理,在HSL的基础上加入了alpha透明通道。比如:em { color: hsl(120, 100%, 50%) } /* green */
em { color: hsla(120, 100%, 50%, 1) } /* the same, with explicit opacity of 1 */
SVG颜色关键字
道理和HTML4的颜色关键字类似但范围更广,这里略去。currentColor颜色关键字
表示与当前元素的color属性值相同,多用在使得边框颜色和文字颜色一直等地方。系统颜色(CSS System Colors)
这些颜色很神奇,它会根据你的运行环境,代表与之相匹配颜色。比如我们希望某个div的文字颜色、背景色和操作系统tooltip的颜色保持一致,就可以写.tooltip {color: InfoText; background: InfoBackground}
有的时候我们希望页面样式和我们的操作系统完美融合到一体,不妨试试这些属性值:
CSS 2 系统颜色
■ ActiveBorder■ ActiveCaption
■ AppWorkspace
■ Background
■ ButtonFace
■ ButtonHighlight
■ ButtonShadow
■ ButtonText
■ CaptionText
■ GrayText
■ Highlight
■ HighlightText
■ InactiveBorder
■ InactiveCaption
■ InactiveCaptionText
■ InfoBackground
■ InfoText
■ Menu
■ MenuText
■ Scrollbar
■ ThreeDDarkShadow
■ ThreeDFace
■ ThreeDHighlight
■ ThreeDLightShadow
■ ThreeDShadow
■ Window
■ WindowFrame
■ WindowText
Flavor系统颜色
这个关键字有点生僻了,我自己都没用过也没见过,文档里第一次看到,暂不细说了最后,尽管color属性值可以有很多种方式,可以显示出各种效果,但别让网页的内容过分依赖于颜色,尽量让网页内容不通过颜色的修饰,也可以正常的表达意思(Ensure that text and graphics are understandable when viewed without color.)。