颜色的小纠结
前言:之前总是被各种颜色表示方法弄的头晕晕,现在就来小总结一下,如有错误请不吝赐教,三克油 ! 一、十六进制色(简称HEX) 所有浏览器都支持十六进制颜色值。十六进制颜色是这样规定的:#RRGGBB,...
前言:之前总是被各种颜色表示方法弄的头晕晕,现在就来小总结一下,如有错误请不吝赐教,三克油 !
一、十六进制色(简称HEX)
所有浏览器都支持十六进制颜色值。十六进制颜色是这样规定的:#RRGGBB,其中的 RR(红色)、GG(绿色)、BB(蓝色)十六进制整数规定了颜色的成分。所有值必须介于 0 与 FF 之间。
例如:#0000ff 值显示为蓝色,这是因为蓝色成分被设置为最高值(ff),而其他成分被设置为 0;
#00ff00 值显示为绿色。原因同上;
#ff0000 值显示为红色。原因同上。
实例:p { background-color: #00ff00; }
二、RGB 颜色
所有浏览器都支持 RGB 颜色值。可以理解为大自然的颜色都是由红、绿、蓝三种光学颜色混合而成的。
RGB 颜色值是这样规定的:rgb(red, green, blue)。每个参数 (red、green 以及 blue) 定义颜色的强度,可以是介于 0 与 255 之间的整数,或者是百分比值(从 0% 到 100%)。
例如:#0000ff 值显示为蓝色,这是因为 blue 参数被设置为最高值(255),而其他被设置为 0,也可以表示为rgb(0%,0%,100%);
#00ff00 值显示为绿色。原因同上;
#ff0000 值显示为红色。原因同上。
实例:p { background-color: #00ff00; }
三、RGBA 颜色
RGBA 颜色值得到以下浏览器的支持:IE9 、Firefox 3 、Chrome、Safari 以及 Opera 10 。IE8以下是不支持的,对于颜色有透明度的,可以使用RGBA,选择对IE8优雅降级,使用RGB不支持透明度等。但是也有一些方法能够使RGBA在IE跨浏览器支持:
1、使用支持透明度通道的图片PNG;
2、还有一种办法就是使用IE filter:
比如想要一个50%透明度红色的背景代码如下:
p{
background:transparent;
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7FFF0000,endColorstr=#7FFF0000);
zoom: 1; }
这个就是利用IE filter:填充了背景,我们使用透明度设置的是7F,也就是FF的一半代表透明。如果要设置10%透明度,
就要把startColorstr=#19FF0000,endColorstr=#19FF0000.后面的六位代表颜色,前面的代表的是明度,而且是16进制的,按照透明度百分比计算出FF的的百分比。因为这种手段来迫使用户获得更好的用户体验,而且我们发现IE filter渲染的颜色并不标准。在IE Filter中 要采用16进制的计算方式,50%的透明度是7F,也就是255的一半,127.在当前情况下,推荐使用RGBA,在不影响功能的前提下,可以对IE8以下浏览器不使用完美兼容的方案,对于影响功能时,可以使用 IE filter 和png图片。
RGBA 颜色值是这样规定的:rgba(red, green, blue, alpha)。alpha 参数是介于 0.0(完全透明)与 1.0(完全不透明)的数字。
实例:p { background-color: rgba(0, 255, 0 , 0.5); }于下面写法等同
p { background-color: rgba(0%, 100%, 0% , 0.5); }
四、HSL 颜色
HSL 颜色值得到以下浏览器的支持:IE9 、Firefox、Chrome、Safari 以及 Opera 10 。IE8以下是不支持的。
HSL 指的是 hue(色调)、saturation(饱和度)、lightness(亮度) - 表示颜色柱面坐标表示法。
HSL 颜色值是这样规定的:hsl(hue, saturation, lightness)。
Hue 是色盘上的度数(从 0 到 360) - 0 (或 360) 是红色,120 是绿色,240 是蓝色。Saturation 是百分比值;0% 意味着灰色,而 100% 是全彩。Lightness 同样是百分比值;0% 是黑色,100% 是白色。
HSL即是代表色调,饱和度,亮度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
HSL 和 HSV(也叫HSB)是对RGB色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系H指hue(色相)、S指saturation(饱和度)、L指lightness(亮度)、V指value(色调)、B指brightness(明度)。
详细关于HSL 和 HSV请见下面链接的文章:
http://www.360doc.com/content/13/1105/14/10724725_326803150.shtml
实例:p { background-color: hsl(120, 65%, 96%); }
五、HSLA 颜色
HSLA 颜色值得到以下浏览器的支持:IE9 、Firefox 3 、Chrome、Safari 以及 Opera 10 。
HSLA 颜色值是 HSL 颜色值的扩展,带有一个 alpha 通道 - 它规定了对象的不透明度。
HSLA 颜色值是这样规定的:hsla(hue, saturation, lightness, alpha),其中的 alpha 参数定义不透明度。alpha 参数是介于 0.0(完全透明)与 1.0(完全不透明)的数字。
实例:p { background-color: hsl(120, 65%, 96%, 0.6); }
HSLA模式和RGBA模式与Opacity的区别:
HSLA模式和RGBA模式与Opacity的区别就是前两者不回影响子类的透明度;而Opacity会影响子类的透明度,从而导致子类元素的颜色产生色差,所以为了避免出现这种情况,我们避免在设置Opacity值的div下包含子类。
六、预定义/跨浏览器颜色名
所有浏览器都支持的颜色名。
HTML 和 CSS 颜色规范中定义了 147 中颜色名(17 种标准颜色加 130 种其他颜色)。下面的表格中列出了所有这些颜色,以及它们的十六进制值。
提示:17 种标准色是 aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silver, teal, white, yellow。
CSS3下的147个颜色名称实例页面(可参考张鑫旭总结页面):
http://www.zhangxinxu.com/study/201008/css3-color-names.php
http://www.zhangxinxu.com/wordpress/2015/07/know-css1-css3-color/
更多专业前端知识,请上 【猿2048】www.mk2048.com
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)