IE中的CSS3不完全兼容方案

到Internet Explorer 8为止,IE系列是不支持CSS3的。在IE中要做一些常用的效果如圆角、阴影,就需要用一些冗余而无意义的元素和图片来做出这些效果。在厌倦这些后,就 想着用更为简洁、直接有效、CSS3式的办法来解决这些问题。好在就算是饱受批评的Internet Explorer,其本身也是足够强大的。IE特有的技术可以很好的实现一些CSS3的效果。

Opacity透明度
元素的透明度在IE中可以很方便的用滤镜来实现。

1        background-color:green;
2        opacity: .4;
3        filter:progid:DXImageTransform.Microsoft.alpha(opacity=40);
这里半透明区域
opacity: .4;

filter:alpha(opacity=40);

border-radius圆角/Box Shadow盒阴影/Text Shadow文字阴影
在IE中可以利用Vector Markup Language (VML)和javascript来实现这些效果,参见IE-CSS3,在引用了一个HTC文件后,在IE浏览器中就可以使用这三种CSS3属性了。

1        -moz-border-radius: 15px; /* Firefox */
2        -webkit-border-radius: 15px; /* Safari 、Chrome */
3        border-radius: 15px; /* Opera 10.5+, IE6+ 使用 IE-CSS3*/
4        -moz-box-shadow: 5px 5px 5px #000; /* Firefox */
5        -webkit-box-shadow: 5px 5px 5px #000; /* Safari、Chrome */
6        box-shadow: 5px 5px 50px #000; /* Opera 10.5+,IE6+ 使用 IE-CSS3 */
7        behavior: url(ie-css3.htc); /*引用ie-css3.htc */
实际上,在IE中有滤镜来实现阴影(shadow)和投影(drop-shadow)效果的

shadow会产生连续、渐变的阴影

1        filter: progid:DXImageTransform.Microsoft.Shadow(color=‘#000000‘, Direction=145, Strength=10);
drop-shadow产生的阴影没有明暗变化

1        filter:progid:DXImageTransform.Microsoft.DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1");

滤镜似乎和现有的htc脚本有冲突,或者可以称之为特性:两者同时在一个元素上启用的时候,滤镜效果会转移到其子元素上

Gradients渐变
IE中提供了一个简单的渐变滤镜

1        background-image: -moz-linear-gradient(top, #444444, #999999); /* FF3.6 */
2        background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); /* Saf4+, Chrome */
3        filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#444444‘, EndColorStr=‘#999999‘); /* IE6+ */
在实现IE中的渐变很简单

RGBA透明度颜色背景
渐变滤镜支持RGBA的颜色,startColorStr和EndColorStr的前两位是Alpha通道值。使用带alpha通道来模拟RGBA颜色背景的同时,应该去掉其background-color属性。

1        background-color: rgba(0, 255, 0, 0.6); /* FF3+, Saf3+,Opera 10.10+, Chrome */
2        filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#9900FF00‘,EndColorStr=‘#9900FF00‘); /* IE6+*/
Multiple Backgrounds多重背景图片
支持CSS3多重背景图片的浏览器中可以用下面的语句来实现背景多重图片:

1        background: url(bg-image-1.gif) center center no-repeat, url(bg-image-2.gif) top left;
要在IE中实现多背景图片,在需要在单独的IE hack样式表中加入下面的代码:

1        background: transparent url(bg-image-1.gif) top left repeat;
2        filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src=‘bg-image-2.gif‘, sizingMethod=‘crop‘); /* IE6+ */
CSS3浏览器的多重背景

IE的多重背景

Tranformations/rotate旋转元素
IE中有两个滤镜可以实现元素的旋转,BasicImage和Matrix,前者简单方便但是只能做90*n(n∈{1,2,3,4})度的旋转;Matrix滤镜功能强大,但是参数复杂。

1        -moz-transform: rotate(180deg);  /* FF3.5+ */
2        -o-transform: rotate(180deg);  /* Opera 10.5 */
3        -webkit-transform: rotate(180deg);  /* Saf3.1+, Chrome */
4         
5        filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
6        filter:progid:DXImageTransform.Microsoft.Matrix(sizingMethod=‘auto expand‘,M11=-1, M12=-1.2246063538223772e-16, M21=1.2246063538223772e-16, M22=-1);
旋转也很简单

@font-face服务器端字体
考虑到汉字字体的尺寸,这个CSS3的特性不算实用

1        font-family:‘webFont‘;
2        src:url(‘myfont.eot‘);/*IE6+*/
3         
4        src:local(‘fontname‘),/*字体名称*/
5        url(‘myfont.woff‘) format(‘woff‘),/*FF3.6*/
6        url(‘myfont.ttf‘) format(‘truetype‘);/*saf3+,chrome,FF3.5,opera10+*/
字体声明并引用了以后,可以在网页的其他地方用font-family使用这一字体。

可以在同一个元素上启用多个滤镜,如:

1        filter: progid:DXImageTransform.Microsoft.Shadow(color=‘#000000‘, Direction=145, Strength=5)progid:DXImageTransform.Microsoft.Alpha(opacity=40);

虽然一些用滤镜模仿CSS3的效果难称完美,但在一些情况下,运用这些技术能够让我们的代码更为简洁和统一

时间: 2024-10-03 23:16:32

IE中的CSS3不完全兼容方案的相关文章

Emoji表情符号兼容方案

Emoji表情符号兼容方案 一 什么是Emoji    emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情. 手机上如何使用emoji: 1.iphone.ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,然后把emoji添加在里面即可在发短信和一些输入文本的文本框中输入表情. IOS 5用户可直接从通用中添

Drawable 着色的后向兼容方案

看到 Android Weekly 最新一期有一篇文章:Tinting drawables,使用 ColorFilter 手动打造了一个TintBitmapDrawable,之前也看到有些文章使用这种方式来实现 Drawable 着色或者实现类似的功能.但是,这种方案并不完善,本文将介绍一个完美的后向兼容方案. 解决方案 其实在 Android Support V4 的包中提供了 DrawableCompat 类,我们很容易写出如下的辅助方法来实现 Drawable 的着色,如下: public

Emoji表情符号兼容方案(适用ios,android,wp等平台)

http://blog.csdn.net/qdkfriend/article/details/7576524 Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情. 手机上如何使用emoji: 1.iphone.ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容 在写JS的过程中,为了调试我们常常会 写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS 的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错 问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.

最新CSS兼容方案

CSS兼容方案,让你的样式完美兼容各大浏览器,这个方案主要是用来解决Safari的,Opear是在测试的时候顺带试了一下,结果发现竟然也行,所以顺便也解决了. .e {/*FF OP*/ color: rgb(68, 68, 68); font-family: 'Hiragino Sans GB', Tahoma, Simsun, 'Microsoft Yahei';">} html* .e{/*Sa IE7 OP*/ color: rgb(68, 68, 68); font-family

win7中VS2010中安装CSS3.0问题解决方法

win7中VS2010中安装CSS3.0问题解决方法 在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema 网址:http://visualstudiogallery.msdn.microsoft.com/7211bcac-091b-4a32-be2d-e797be0db210/view/Discussions/1 2.安装 3.Win+R 输入 re

移动应用开发(IOS/android等)中一个通用的图片缓存方案讲解(附流程图)

在移动应用开发中,我们经常会遇到从网络请求图片到设备上展示的场景. 如果每次都重复发起请求,浪费流量.浪费电量,用户体验也不佳: 将图片持久化到磁盘也不失为一种策略:但每次从文件读取图片也存在一定的io开销,就算采用此策略,我们也需要控制磁盘缓存的容量,以免占用过多系统资源. 其实没有一个方案可以说是完美的方案,只有最适合自己业务需求的方案,才可以说是一个好方案. 我们下面所讲解的方案具备很强的通用性,设计思路简单而清晰: 1.假设每个网络图片的url具有唯一性,如果网络上的图片变化了,会引起输

javascript中innerText和textContent的兼容问题

IE支持innerHTML与innerText FireFox支持innerHTML与textContent 所以在IE与FireFox中使用显示内容时 必须得先判断浏览器 然后决定使用innerText还是textContent javascript中innerText和textContent的兼容问题

ECSHOP_jquery兼容方案

ecshop把AJAX事件和JSON解析的模块放在common/transport.js之中,可以说它也有自己封装的一套工具,这其实是很正常的. 但恰恰的,在封装JSON各种方法的同时对object的模型进行了重写,这个就跟jQuery冲突了.因为众所周知的,jQuery对各种JavaScript对象进行了扩展. 这一切其实都很容易理解,各有各的理由十分自然,但头痛和无奈的就变得在我们这些使用者身上了.在ECShop论坛上原来也有很多朋友提出了这个问题,也提出了各种各样的方法,我尝试了一些,不好