IE下实现类似CSS3 text-shadow文字阴影的几种方法

一、开始的擦边话
为了测试IE9浏览器 , 下午晃晃荡荡把系统换成window7的了 。果然 , 正如网上所传言的一样 , IE9浏览器确实不支持CSS3 text-shadow属性 , 且根据最近的IE10 preview版的反馈 , IE10浏览器也是不支持text-shadow属性的 。至于为何不支持 , 就像女孩的心思一样 , 我也是百思不得其解 。

不过考虑到text-shadow的更多的是效果性质的属性 , 且潜力有限 , 所以 , 就我个人而言 , 最近版本的IE浏览器不支持该属性我还是相对比较淡然的 。虽然IE浏览器不支持text-shadow文字阴影属性 , 但是我们可以使用一些特殊的手段 , 或是方法实现类似于文字阴影的效果 , 而本文就将简单展示几种我所知的方法 。

二、glow滤镜下的文字阴影效果
IE滤镜中有个名叫glow的滤镜 , 用来实现光晕效果 , 于是 , 我们可以用来实现无方向的文字阴影效果 。

该滤镜最简单的使用类似下面:

filter:glow(color=black,strength=5);
上面实现的效果就是5像素扩散大小的黑色光晕 , 效果类似下面(截自IE9浏览器):

IE下实现类似CSS3 text-shadow文字阴影的几种方法


demo页面中效果想对应的CSS代码如下:

复制代码代码如下:
.bg{width:512px; height:340px; margin:1em auto; background:url(http://image.zhangxinxu.com/image/study/s/s512/mm19.jpg);}
.font{margin:0; padding:1em; color:#fff; text-shadow:0 0 5px rgb(0, 0, 0); font-size:36px; font-family:"微软雅黑"; float:left; filter:glow(color=black, strength=5);

对应HTML代码如下:

复制代码代码如下:
div class="bg"
h4 class="font"张小姐长大了!/h4
/div

不足
1. 虽然IE浏览器的glow光晕滤镜可以实现勉强可以称为的文字阴影效果 , 但是其效果相比原生的text-shadow属性就是玄彬和郭德纲的区别 , 如下firefox4下的text-shadow属性效果:

IE下实现类似CSS3 text-shadow文字阴影的几种方法


并且对不同颜色的支持效果大相径庭 , 例如 , 我们把光晕的黑色改成灰色 , 看看IE9浏览器下的效果:

IE下实现类似CSS3 text-shadow文字阴影的几种方法


可以看到不仅光晕颜色不纯(杂色丛生) , 且文字边缘也有不和谐的黑色糙边 , 让人不仅感叹:你能不能再丑一点 。
2. 既然是光晕滤镜 , 就决定了此方法实现的文字阴影效果是无方向性的 , 就四周均匀扩散性质的 。这是该方法一个较大的局限性 。
三、MotionBlur滤镜下的文字阴影效果
IE滤镜中有个名叫MotionBlur的滤镜 , 用术语称呼其为动感模糊滤镜 。该滤镜使用的示例如下:

filter:progid:DXImageTransform.Microsoft.MotionBlur(strength=5, direction=145);
用中文释义就是:145度方向上5像是大小的动感模糊 。产生的效果基本上就是下面这幅模样:

IE下实现类似CSS3 text-shadow文字阴影的几种方法


demo页面中相关的CSS代码如下:

复制代码代码如下:
.bg{width:512px; height:340px; margin:1em auto; background:url(http://image.zhangxinxu.com/image/study/s/s512/mm19.jpg);}
.font{margin:0; padding:1em; color:#fff; font-size:36px; font-family:"微软雅黑"; text-shadow:1px 1px 5px #fff; filter:progid:DXImageTransform.Microsoft.MotionBlur(strength=5, direction=145); float:left;}

对应HTML代码与上面一致 , 如下:

div class=bg
h4 class=font张小姐长大了!/h4
/div
不足
1. MotionBlur滤镜虽然有了方向性 , 也可以设定大小 , 但是 , 其模糊出来的投影颜色却只能是文字本身的颜色 。也就是说 , 单单一个标签 , 一个滤镜是无法实现类似于文字白色 , 投影黑色这种效果的 。但是 , 这种先天性的不足也是可以通过某些手段修复的 。

推荐阅读