Board logo

標題: [原創] CSS3+HTML5 b现未来Webz计 [打印本頁]

作者: 摩卡小S    時間: 2012-11-8 17:06     標題: CSS3+HTML5 b现未来Webz计

传s来说,大家在CSS中使用的颜色要么是16进制格式,要么是rgb格式,就像rgb(171,205,239)。

CSS3带来了一些新的]理颜色的方法,比如使用HSL(Hue, Saturation, Light) 和opacity/alpha通道。不幸的是,现在只有Firefox 3+, Chrome 1.0+ 和Safari 3+ 以及一些衍生的浏览器完全支持它们。但是我们可以尽我们所能,而IE直到Internet Explorer 9才N开始支持一些CSS3磼吽C
Opacity
这其b是一旧磼吽A令人惊奇的是,它被IE的当前版本支持——尽管是以一种比较复杂的方法。
Opacity将整CSS 对象Z透明,所有的子元素的透明度也N适当的继承。官方的语法如下:
opacity: [0-1的小数];
所以一癢pacity: 0.5;z置N让对象50%透明。尽管较新的浏览器积极的支持它,老的浏览器还是需要一些定制的代码,就像IE浏览器一屆C
目前较老的Firefox版本,我们需要使用-moz-前缀,而对于旧的Safari/Chrome版本,我们需要使用-webkit-前缀。而对于更老的还在使用KHTML内核而不是webkit内核的Safari版本来说,我们需要使用-khtml-。那么如果我们想支持每一浏览器,我们的代码应该是这帚滿G
opacity: 0.5;
-moz-opacity: 0.5;
-webkit-opacity: 0.5;
-khtml-opacity: 0.5;

啊,稍等!IE怎么办?好吧,IE的确完全不支持这纂A但是它使用了一蘑p有的滤镜。传s的方法简短扼要:
filter:alpha(opacity=50);
请注意对于IE我们需要使用0到100的整数,而不是像opacity磼囧緇帚漱p数。郁闷的是,Internet Explorer 8提供了一譟s的方法来]理。不要尝试像另一蘑緇记住这纂A这是很諈漱@纂G
-ms-filter: "progidXImageTransform.Microsoft.Alpha(Opacity=50)";
当然,如果你想支持旧的IE浏览器,你将不得不使用上面的那警u的,这也就意味茼p果要兼容绝大部分浏览器,你需要f共六膙SS语句。
PS:事b上,Safari1.2版本(2004年)就开始支持opacity磼吨F,KHTML内核的Safai基本很难再找到了,而事b上,Konqueror洏慾銕过-khtml-opacity磼吽A所以请不要再使用它(我在翻译的时候考虑到原文的完整性,所以并没有对上面的代码作出修正)。Opera9.0开始支持CSS3的opacity,而Firefox直到3.5才原生支持opacity。IE8的-ms-再加上filter真是微软的天才作品啊!不过请注意,如果你要同时使用filter和-ms-filter,请注意将-ms-filter写在filter的前面。——神
RGBa
下面让我们讨论一下RGBa。RGBa是对原始的RGB的扩展,它加入了第四数:alpha通道。alpha通道数采用0 到1之V的小数,就像opacity那屆C使用RGBa而不是opacity的优势是,当使用RGBa的时候,透明不N被应用到子元素。这也就一位荂A你可以在一議z明对象里面使用一藹馴不透明的子对象,而当你使用opacity的时候,透明对象的子元素也是透明的。
使用RGBa不能再简单了:
div {
background: rgb(255,0,0); /* The old one */
background: rgba(255,0,0,0.5); /* The new one */
}
正如你看到的那屆A我们渐渐通过添加一藻r母和另外一数就将一b体的红色Z为半透明的红色了。RGBa被Firefox 3+、Safari 3+、Chrome 1.0+以及Opera 10支持。但IE还是不支持。CSS-Tricks 提供了一蘑洏峔p有滤镜的方法来让它在IE下也可以工作:
<!--[if IE]>
<style type="text/css">
.color-block {
background:transparent;
filter:progidXImageTransform.Microsoft.gradient(startColorstr=#99000050,endColorstr=#99000050);
zoom: 1;
}
>/style>
<![endif]-->
HSL
HSL是一选择颜色的很直观的方法。如果你需要“再暗一礞I” 或 “再亮一礞I”,使用十六进制组合N颇麻烦吧。幸`的是,通过HSL,它就是仅仅一简单的数字改Z。

HSL代表Hue(色调、也称“色相”)、Saturation(饱和度)和Lightness(明度)。Hue就是一藻盘中的颜色(謔狺W图)。色彩选择通过度数来确定,0º 就是红色,120º 是绿色,而240º 就是蓝色。当然,你可以选择中V的不同的色彩组合,这岱A就有这些:

Saturation(饱和度)是该色彩被使用了多少。0%表示灰度,也就是我们并没有使用这颜色,而100%表示该颜色很饱满。通俗的讲,饱和度就是颜色的深浅程程度,鲜艳程度
Lightness(明度)也就是该色彩有多亮。较低z置意味虓t,较高z置意味茷G,0% 和100%意味茪别为黑和白。
所以,一蘑洏徆磽滫50%饱和度+50%名都的背景的对象看起来就像这屆G
div {background: hsl(30, 50%, 80%);}
如果想让它更亮一些或者暗一些,只需要调整最后一数就可以了。
HSL被大部分浏览数支持,包括Safari 3.2+、Chrome、Firefox、Opera 9.6+,IE不支持。
HSLA
当然,HSLA 就是HSL 的扩展,就像RGBa一屆A添加了第四議z明数。使用HSLA就像RGBa一简单,仅仅在那里贴上额外的数就OK了:
div {background: hsla(30, 50%, 80%, 0.5);}
这蘑狺l也是使用了橙色,但是添加了50%透明。
HSLA被大部分浏览器支持,包括Safari 3.2+、Chrome、Firefox,IE不支持,和HSL不同的是,Opera9.6并不支持HSLA,直到Opera 10才开始支持HSLA。
f结
显然,HSL 和HSLA 只被Firefox、Safari、Chrome和Opera等浏览器的较新的版本支持。而对已IE没有想opacity和RGBa那对应的私有磼吨銕虪们纂C然而,这来不N阻止你尝试或以它们做b验。





歡迎光臨 香港 Xocat Forum 討論區 (http://p.xocat.com/p/) Powered by Discuz! 6.0.0