武林网(www.vevb.com)文章简介:CSS阴影详解.
设计师常常使用一些独特的字体效果和页面效果,阴影是其中一个,它可以让页面中的文字和元素具有立体的效果,从而被突出出来。传统的方法我们可能常常需要将文字切出来,直接使用图片,如果考虑SEO和网站性能,还可能会使用CSS Sprites等技术将图片整合,比如:
1234h2...}h2h2....
这是很棘手的事情,拼合图片会花掉你的大量时间,而且为了实现更好视觉效果,你可能还要使用高质量的32位png图片,这又要让你面对该死的IE 6的png透明问题!
事实上,对于文字的阴影效果,我们完全可以用CSS来实现!
可以查看查看demo先。
Text-shadowtext-shadow可以让我们实现完美的文字阴影效果。基本写法:
颜色 x轴 y轴 模糊半径颜色 x轴 y轴 模糊半径]...
或者
x轴 y轴 模糊半径 颜色x轴 y轴 模糊半径 颜色]...
这里的颜色就是阴影的颜色,你可以将颜色写在前面,也可以写在最后。x轴和y轴分别是其阴影的偏移位置,模糊半径可以理解为阴影长度。而且现在大部分浏览器都支持多层阴影,你可以用逗号分开多组设置(当然也可以只是用单个设置)。
示例:
h1/Arial
效果如下图:
该属性目前被除IE之外的大部分浏览器支持,对于IE,我们可以使用shadow滤镜来实现:
filterDirectionStrength
你可能已经注意到,使用shadow滤镜只能定义角度 direction,而不能定义xy轴,z轴也被换成了strength。注意,使用该滤镜的时候,不能够设置背景颜色,否则滤镜将无效!另外如果你的数学不是很好,不太懂三角函数的算法,你可以使用IE的另外一个滤镜:dropshadow:
filterOffYColorPositive
好吧,IE总是会拖我们的后腿的,不过值得一提的是,IE的这两个滤镜是支持多层阴影的!比如,可以这样写:欲了解更多关于IE的这两个滤镜,请查看:Shadow 和 Dropshadow
让我们看一个多层阴影的例子:
h1/rgba.8rgbargba
效果如图:
这里我们使用到了rgba色彩,它是一种在CSS中同时声明颜色及其透明度的一种方法,且被大多数A级浏览器支持的色彩属性(除了IE),了解更多请访问:《RGBa色彩的浏览器支持》——同时我们推荐对于纯色半透明的情况使用这种简单的写法。
text-shadow的浏览器兼容性目前text-shadow被Firefox 3.5+,Safari 1.1+/chrome 2.0+和opera 9.5支持,IE不支持。需要注意的是,Safari只有4.0才支持多层阴影。
box-shadow先来说IE,IE不支持box-shadow属性,但是上面提到的两个滤镜都可以用来实现阴影效果。这也就是说,IE并没有把文字阴影和盒子阴影区分!这就会出现一些问题:元素中的文字会继承元素的阴影设置。但是如果你不定义该元素的background和color,就只会出现文字阴影,如果只定义background属性而不定义border,就只会出现盒子阴影,文字不会出现阴影;而如果只定义了border属性而不定义background,就即会出现盒子阴影,内容文字及图片也会出现阴影。有兴趣的同学可以折腾一下。
好了,现在让我们忘了IE,来看一看box-shadow。事实上,了解了text-shadow之后,box-shadow就很好理解了,目前只有firefox和safari/chrome通过私有属性支持box-shadow属性。而Opera浏览器虽然目前还不支持该属性,但是在其文档中提到下一个版本的引擎Presto 2.3(目前最新版的Opera 10.10的引擎是Presto 2.2.15)中将会支持 box-shadow,那就让我们慢慢等待吧。
box-shadow的语法和text-shadow是一样的。
#boxShadow{...-webkit-box-shadow-moz-box-shadow...}
事实上,box-shadow和border-radius是很好的搭档:
-webkit-border-radiusborder-radiusddd;-webkit-box-shadow-moz-box-shadow
效果如图:
firefox在3.5版本中才开始支持box-shadow,目前对阴影的渲染还不是很完美。
总结CSS阴影是CSS3中很有用的特性,我们已经可以在Firefox/webkit/Opera中使用text-shadow,很快也可以在这些浏览器中实现box-shadow。唯独IE特立独行,还在坚持它那蹩脚的滤镜,这真是个杯具。
新闻热点
疑难解答