IE下实现类似CSS3 text-shadow文字阴影的几种方法
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浏览器):
您可以狠狠地点击这里:glow滤镜下文字阴影效果demo
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
属性效果:
并且对不同颜色的支持效果大相径庭,例如,我们把光晕的黑色改成灰色,看看IE9浏览器下的效果:
可以看到不仅光晕颜色不纯(杂色丛生),且文字边缘也有不和谐的黑色糙边,让人不仅感叹:你能不能再丑一点。
2. 既然是光晕滤镜,就决定了此方法实现的文字阴影效果是无方向性的,就四周均匀扩散性质的。这是该方法一个较大的局限性。
三、MotionBlur滤镜下的文字阴影效果
IE滤镜中有个名叫MotionBlur的滤镜,用术语称呼其为“动感模糊滤镜”。该滤镜使用的示例如下:
filter:progid:DXImageTransform.Microsoft.MotionBlur(strength=5, direction=145);
用中文释义就是:145度方向上5像是大小的动感模糊。产生的效果基本上就是下面这幅模样:
您可以狠狠地点击这里:MotionBlur滤镜下文字阴影效果demo
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滤镜虽然有了方向性,也可以设定大小,但是,其模糊出来的投影颜色却只能是文字本身的颜色。也就是说,单单一个标签,一个滤镜是无法实现类似于文字白色,投影黑色这种效果的。但是,这种先天性的不足也是可以通过某些手段修复的。
2. 此滤镜在应用动感模糊的同时本身也被模糊了,相对于挖自己身上的肉填饱自己饥饿的肚子。这种实现效果显然是会大打折扣的,看看正经八百text-shadow
属性下的白色投影效果(图片截自chrome浏览器):
正所谓人比人,气死人啊。两者的效果差距可以赶上凤姐和志玲姐的差距了。然而,通过某些小手段,我们也可以让MotionBlur滤镜下的文字阴影效果爷变得很赞,这就是下面一节的内容。
四、MotionBlur滤镜下文字阴影效果进一步优化
路上有坑怎么办?很简单,填上就好,如果没有实物填充,盖个盖子什么的也是好的。所以,正如上面说到,文字应用动感滤镜实现投影效果好比割肉补疮,现在,我们只要在被割掉的那块肉上再补上一块不就OK了吗?
您可以狠狠地点击这里:MotionBlur滤镜下文字阴影效果优化demo
结果在IE9浏览器的兼容模式下(貌似是IE7 的核)的效果如下图:
效果看上去要舒服多了。效果实现的原理是两端一模一样的文字相互重叠,背后的文字动感模糊,前面的文字就是很纯洁的文字了。
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; font-size:36px; font-family:"微软雅黑";}
.text{color:#fff; position:absolute;}
.sh{color:#000; text-shadow:1px 1px 5px #000; filter:progid:DXImageTransform.Microsoft.MotionBlur(strength=5, direction=145); *zoom:1;}
HTML代码如下:
<div class="bg">
<h4 class="font"><span class="text">张小姐长大了!</span><div class="sh">张小姐长大了!</div></h4>
</div>
考虑到不同IE浏览器下的兼容性问题,作为阴影效果的文字标签需要使用block水平的标签,且需要在IE6/IE7浏览器下haslayout。另外,这里的文字重叠是借助了absolute
绝对定位元素的无高度性和无宽度性实现的。具体可参见我之前的“CSS 相对/绝对(relative/absolute)定位系列(二)”以及相关系列的文章。
不足
由于要借助于两段不同的文字实现效果,所以,此方法不使用与长篇大论文字处的投影效果实现,像是标题啊,导航啊这些文字不是很多的地方就可以使用使用。
五、远离text-shadow和滤镜的文字阴影实现
这里实现的原理的精髓其实跟上面的其实一致,两段一模一样的文字,重叠显示,不过,投影效果是通过两段文字的错位差实现的,例如通过margin
负值让上下的文字出现1像素的偏移。
您可以狠狠地点击这里:margin错位下的文字投影效果demo
在IE下的效果如下图:
在FireFox浏览器下效果为:
可以发现,此方法实现的效果是真正意义上的兼容,基本上像素毫厘不差。
相关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; font-size:36px; font-family:"微软雅黑"; float:left;}
.sh{margin:-1px 0 0 -1px; color:#fff; position:absolute;}
HTML代码如下:
<div class="bg">
<h4 class="font"><span class="sh">张小姐长大了!</span><div>张小姐长大了!</div></h4>
</div>
不足
文字阴影效果的大小有限,且无法很好的实现透明度变化的投影效果。1像素的偏移投影是其最适用的情况。
六、快速的结语
就当文章写到这儿的时候,我突然想到,IE下还有个模糊滤镜,如果结合文字重叠技术,岂不第一个例子的四周扩散型投影效果有了较好的UI表现。不过碍于自己精力有限,门卫师傅也要休息,这里就不折腾了,有兴趣您可以尝试下IE模糊滤镜(blur)下的文字投影效果。
当然,一个人的智慧毕竟有限。如果您有比较好的实现文字阴影效果的方法,欢迎分享。
另外,由于重装系统的原因,IE8,IE6等浏览器暂时没有机会测试,所以,自己不确定这些浏览器下的表现是否令人满意。如果有什么糟糕的地方,欢迎指正。文中要是有表述不准确的地方也欢迎指正。
感谢阅读。
原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=1613
IE下实现类似CSS3 text-shadow文字阴影的几种方法的更多相关文章
- [BS-19]更改UITextField的placeholder文字颜色的5种方法
更改UITextField的placeholder文字颜色的5种方法 想要达到的目标是:一个页面上有多个UITextField,当用户聚焦某textField时,该文本框的placeholder的文字 ...
- Win7,Vista UAC下应用程序标注为“需要管理员权限”的四种方法(可以修改注册表)
[转]Vista UAC下应用程序标注为“需要管理员权限”的四种方法 在Microsoft 的UACBlog里对此有过叙述.总结如下: 首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上 ...
- 痞子衡嵌入式:MCUXpresso IDE下将应用程序RW段分散链接的几种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下将应用程序RW段分散链接的几种方法. 早期的 MCU 芯片,一般都会嵌入内部 Flash 和 RAM,并且 ...
- IT兄弟连 HTML5教程 CSS3属性特效 文字阴影
文字阴影是可以叠加的.最基本可以给出四个值,用法如下: text-shadow:x y blur color 文字阴影的参数说明如表1所示. 表1 CSS3文字阴影参数说明 横向偏移量和纵向偏移量可 ...
- CSS多行文字垂直居中的两种方法
之前写过一篇关于:CSS左右居中对齐的文章,里面提到的两种方法其实也可以引申为垂直居中对齐.写这篇文章是因为要兼容IE6.IE7的问题,我们都知道一行文字时可以通过line-height来设置垂直居中 ...
- css:图标与文字对齐的两种方法
(好久没写博客了,这几个月的积累比较零碎,记在本子上,现在开始整理归类) 在平时写页面的过程中,常遇到要把小图标与文字对齐的情况.比如: 总结了两种方法,代码量都比较少. 第一种 对img设置竖直方向 ...
- html之改变图片透明度而不改变文字的透明度--两种方法实现
图片与图片上的文字设置不同的透明度的两种方法: 第一种方法:背景图+定位+background: url(timg.jpg)no-repeat; <!DOCTYPE html> <h ...
- 实现icon和文字垂直居中的两种方法-(vertical-align and line-height)
方法一:vertical-align 在w3school定义:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐 百思不得骑姐 然后Google,反正在w3schools上面并没有找到定义 仅 ...
- CSS图标与文字对齐的两种方法
在平时写页面的过程中,常遇到要把小图标与文字对齐的情况.比如: 总结了两种方法,代码量都比较少. 第一种 对img设置竖直方向对齐为middle, <div> <img src=&q ...
随机推荐
- flash wmode参数详解
在做web开发中可能会遇到flash遮挡页面中元素的情况,无论怎么设置flash容器和层的深度(z-index)也无济于事,现有的解决方案是在插入flash的embed或object标签中加入”wmo ...
- mysql的text类型长度问题
在我的概念中,mysql中的text字段应该是没有长度限制的,但是今天事实告诉我,text类型的长度是有限制的.其中mysql的text类型有64K长度限制的,MEDIUMTEXT中型是2G,LONG ...
- rtree
https://zh.wikipedia.org/wiki/R%E6%A0%91 http://blog.csdn.net/jiqiren007/article/details/5377750 htt ...
- struts2中错误处理
定义一个 package,然后其他package都继承 这个package struts-global 就 有了这个错误处理功能了 然后再自己写个类 struts.xml <constant n ...
- 序列化、反序列化和transient关键字的作用
引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口, ...
- Golang 绘图基础- 不同的输出源
先看一个简单代码, 它执行后会产生下面的300*500的png图片文件: 代码: 1: package main 2: 3: import ( 4: "fmt" 5: " ...
- 文件的压缩与解压XZip,XUnzip
参考http://www.codeproject.com/KB/cpp/xzipunzip.aspx CreateZip() –创建一个空的 zip 文件 HZIP CreateZip(void *z ...
- js获取字符串最后一个字符代码
方法一:运用String对象下的charAt方法 charAt() 方法可返回指定位置的字符. 代码如下 复制代码 str.charAt(str.length – 1) 请注意,JavaScript ...
- 【LeetCode】28 - Implement strStr()
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- ASP.NET MVC3 系列教程 - 部署你的WEB应用到IIS 6.0
I:ASP.NET MVC3 部署的前期工作 1.确认部署的服务器操作系统环境 首先我们确认服务器的操作系统版本 可以从系统命令行工具里输入: systeminfo 获取相关操作系统信息例如 然后再确 ...