`
weina
  • 浏览: 144857 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

css3 for ie

    博客分类:
  • css
阅读更多

原文地址:<a href="http://www.ibm.com/developerworks/cn/web/1105_qinjian_css3_3/index.html?ca=drs-">原文</a>

 

 

Opacity 透明度

透明度属性是 CSS 中非常常用和流行的一个属性,目前已经广泛被主要浏览器支持,可惜的是 IE6/7/8 均不支持该属性。虽然 IE 没有支持这个 CSS 属性,但是我们可以通过使用 IE 特有的滤镜 filter 属性来实现相同效果。


清单 1. Opacity 代码示例

				 
 opacity: 0.4

; /*Chrome、Safari、Firefox、Opera */ 
 filter: progid

:DXImageTransform.Microsoft.Alpha

(opacity

=40)

; /* IE6/IE7/8 */ 
 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=40)"

; /*  IE8 */ 

 

如上面代码所示,第一行是在其他浏览器中使用 Opacity 属性;第二行是 IE6/7/8 中使用滤镜属性设置透明度;第三行是新的 IE 滤镜属性,它只在 IE8 中起作用在其他浏览器中会被忽略,如果不是针对 IE8 设置,使用第二行代码就可以了。参数的设置与 CSS 中 Opacity 属性也基本相同,在 IE 滤镜中使用 0-100 表示透明度,因此 opacity=40 相当于 Opacity 属性为 0.4,亦即透明度为 40%。使用该滤镜属性有两个缺点:由于使用了 Microsoft 特有的属性,会使得你的 CSS 非验证的;另外,IE 的滤镜属性会使得所有的 HTML 子节点都继承这个属性。


图 1.IE 浏览器中透明度演示
图 1.IE 浏览器中透明度演示

Border-Radius 圆角效果

圆角效果是 CSS3 中另一个非常常用和流行的效果。它使得程序员不再需要费力的拼装很多圆角图片或者使用大量复杂的 JavaScript 来实现的相同的效果。在很大程度上圆角属性简化了 HTML 代码结构,同时优化了显示效果。然而 IE 全系列浏览器依然不支持这个属性。幸运的是 Remiz Rahnas 使用 VML 编写了一个 HTC 文件,为 IE 浏览器提供圆角效果的支持。


清单 2. 圆角代码示例

				 
 -moz-border-radius: 15px

; /*Firefox*/ 
 -webkit-border-radius: 15px

; /*Safari、Chrome*/ 
 border-radius: 15px

; /*Opera 10.5+、IE 6+*/ 
 behavior: url(ie-css3.htc)

; /* 调用脚本添加圆角效果 */ 

 

如上面代码所示,圆角属性的使用和 CSS 圆角属性一致,只是在后面多添加了一句 behavior: url(ie-css3.htc)。behavior 属性只被 IE 浏览器支持和识别,用来告诉 IE 在哪些设置了该样式 Class 的元素上调用脚本添加圆角效果。一句简洁的代码就使得 IE 支持圆角效果,而不需要你额外的维护任何代码。然而这种折中的方法也有一些缺陷:首先,在 Server 端需要引入一个 HTC 文件,经过 gzip 压缩后对 server 端和 client 端性能应该不会有太大的影响;其次,它会使你的 CSS 验证不合法;另外,这个脚本在 IE8 上有一些问题,它会使 z-index 值变成负数。因此使用时还需要小心。


图 2.IE 浏览器中圆角效果演示
图 2.IE 浏览器中圆角效果演示

Box Shadow 盒阴影

盒阴影是另一个 CSS3 中的很有用的属性,它使得程序员可以通过简单的添加一个属性,就创建出一个立体效果带有阴影的元素。在 IE 全系列浏览器中依然在不支持这个属性,但 IE 为这个效果提供了滤镜属性;另外和上面圆角效果一样,我们可以通过 VML 脚本来实现这个效果。


清单 3.Box Shadow 的滤镜实现代码

				 
 -moz-box-shadow: 2px 2px 3px #969696

; /* Firefox 3.5+ */ 
 -webkit-box-shadow: 2px 2px 3px #969696

; /* Safari and Chrome */ 
 filter: progid

:DXImageTransform.Microsoft.Shadow

(color

='#969696', 
 Direction

=145, Strength

=3)

; 



清单 4.Box Shadow 的 VML 脚本实现

				 
 -moz-box-shadow: 2px 2px 3px #969696

; /* Firefox */ 
 -webkit-box-shadow: 2px 2px 3px #969696

; /* Safari and Chrome */ 
 box-shadow: 2px 2px 3px #969696

; /* Opera 10.5+、IE6+*/ 
 behavior: url(ie-css3.htc)

; /* 调用脚本添加阴影效果 */ 

 

如上面代码所示,上面两种方法均可实现这个效果。但是要注意的是,IE 滤镜效果语法与其他浏览器中 CSS3 属性语法不同。因此需要开发人员仔细调试使得在不同浏览器中看起来有相同的效果。


图 3.IE 浏览器中盒阴影效果演示
图 3.IE 浏览器中盒阴影效果演示

Text Shadow

文字阴影在不仅流行于打印效果中,同时也在 Web 设计中也非常流行。然而对于 Text Shadow 这个属性我们就没有那么好运气了,IE 没有提供相应的滤镜效果,也没有现成的 VML 脚本可以使用。在过去的 Web 开发中,我们通常使用图片来实现文字阴影效果。Kilian Valkhof 为了解决 IE 下实现文字阴影这个难题,而编写了一个 jQuery 的插件。


清单 5.IE 浏览器中实现 Text Shadow 效果代码

				 
 text-shadow: #aaa 5px 5px 8px

; 

 $(document).ready(function

(){ 
 $(".text-shadow").textShadow(); 
 }); 

 

如上面代码所示,下载了 jQuery 核心包和 Drop Shadow 插件后我们就可以在 IE 中使用文字阴影效果了。textShadow() 方法还可以填入一个 JavaScript 对象参数,如下表所示:


表 1.textShadow 属性参数表

属性名 类型 默认值 描述
left 整型 4 阴影距离
top 整型 4 阴影角度
blur 整型 2 阴影扩散度
opacity 0-1 小数 0.5 阴影透明度
color 颜色值 black 字体阴影颜色
swap 布尔 false 是否换行



图 4.Text Shadow 演示图
图 4.Text Shadow 演示图

Gradients 渐变色

CSS3 中的渐变色为渐变背景色提供了很大的方便,我们不必为了渐变的背景色使用大量细小的图片,同时也不用为了适应浏览器分辨率做很多工作。尽管 IE 浏览器还是不支持该属性,我们依然可以通过 IE 是由的滤镜属性实现该效果。


清单 6.IE 浏览器中实现渐变色

				 
 background-image: -moz-linear-gradient(top, #81a8cb, #4477a1)

; /* Firefox 3.6 */ 
 background-image: -webkit-gradient(linear,left bottom,left top,
 color-stop(0, #4477a1),color-stop(1, #81a8cb))

; /* Safari & Chrome */ 
 filter: progid

:DXImageTransform.Microsoft.gradient

(GradientType

=0,
 startColorstr

='#81a8cb', endColorstr

='#4477a1')

; /* IE6 & IE7 */ 
 -ms-filter:"progid:DXImageTransform.Microsofkt.gradient(GradientType=0,
 startColorstr='#81a8cb', endColorstr='#4477a1')"

; /* IE8 */ 

 

如上面代码所示,我们可以使用 IE 的私有的滤镜来实现该效果。其中 GradientType 可以有两个选项值 0 和 1,分别代表水平渐变和垂直渐变。startColorstr 和 endColorstr 分别代表渐变开始的颜色值和结束的颜色值。虽然参数和功能不如 CSS3 中的渐变多,但是对已一般的需求来说也算够用了。另外该滤镜属性在 IE6/7 和 IE8 中支持的语法不相同,因此我们需要写不同的代码去做 IE6/7 和 IE8 的兼容处理。


图 5.IE 浏览器渐变色演示
图 5.IE 浏览器渐变色演示

RGBA 颜色

CSS3 中提供了另一种方式设置背景透明度,那就是 RGBA 颜色。RGBA 颜色使得开发人员在指定颜色时,不仅可以指定 R、G、B 三原色的值,同时还可以指定颜色的透明度。这样我们就就可以在浏览器中实现类似 Windows7 中一样透明的玻璃效果,这大大增强了 Web 程序的视觉感官体验。在 IE 全系列浏览器中依然不支持 RGBA 颜色,我们只能利用 IE 滤镜模拟实现这样的效果。


清单 7.IE 浏览器 RGBA 颜色实现代码

				 
 background: rgba(50, 95, 224, .4)

; 
 filter:progid

:DXImageTransform.Microsoft.gradient

(GradientType

=0,
 startColorstr

='#886287a7', endColorstr

='#886287a7')

; 

 

如上面代码所示,利用 IE 中渐变色滤镜将渐变开始颜色和结束颜色设置相同,能模拟出和其他浏览器十分类似的 RGBA 颜色效果。另外为了在 IE 中获得较好的透明背景效果,使用 PNG 图片作为背景图片也是一个很不错的选择。不过这样做的缺点是你不得不处理大量的图片,同时为了适应图片背景不得不修改 HTML 的结构。


图 6.IE 浏览器中滤镜实现 RGBA 颜色效果
图 6.IE 浏览器中滤镜实现 RGBA 颜色效果

Rotation 旋转

在最新的 Firefox 和 Webkit 浏览器中都对 CSS3 形变和动画效果做了不同程度的支持。你可以旋转、拉伸、平移一个 HTML 元素来实现以前只能用图片实现的立体效果,也可以使用 CSS 属性来实现绚丽的淡入、淡出等动画效果。目前 IE 全系列浏览器还不支持该属性,但是很少有人知道使用 IE 的滤镜可以实现简单的 HTML 元素旋转的效果。


清单 8.IE 浏览器中实现旋转

				 
 -webkit-transform: rotate(90deg)

; 
 -moz-transform: rotate(90deg)

; 
 filter: progid

:DXImageTransform.Microsoft.BasicImage

(rotation

=1)

; 

 

如上面代码所示,最后一行代码在 IE 中实现旋转效果。其中的参数 rotation 的选项为 1、2、3 和四,分别代表旋转 90 度、180 度、270 度和 360 度。和 CSS3 中的旋转 360 度功能相比,IE 中的旋转滤镜功能就显得十分有限了,每次 90 度的旋转很难满足开发人员的需求。

另外 dojo 在 1.5 版本对 CSS3 中的 transform 属性开始有一定的支持,其中包括了 matrix、rotate、skew、scale、translate 等功能。如果有 CSS3 形变需求的话,可以参考使用 dojo 对这部分功能的扩展。


清单 9. 使用 dojo 设置 HTML 元素旋转

				 
 dojox.html.ext-dojo.style("transform","rotate(10deg)"); 



图 7.IE 浏览器中滤镜实现 HTML 元素旋转
图 7.IE 浏览器中滤镜实现 HTML 元素旋转

小结

CSS3 虽然还没有正式发布,但是各个浏览器厂商已经开始部分支持这些新特性了。这些新特性的支持给我来带了很多惊喜,使我们很容易实现我们意想不到的华丽的效 果,简化了很多前端实现的代码。但是 CSS3 也给我们带来了很多困扰,各个浏览器厂商对 CSS3 标准支持不一致,尤其是特立独行的 IE 给开发人员带来更多的麻烦。为了实现 Web 程序的跨浏览器和显示的一致性,我们不得不花费很多时间在各个浏览器差异的调试上。本文针对部分 IE 不支持的 CSS3 效果以及在 IE 浏览器上的替代方案做了详细的介绍。希望能为广大开发者在未来的开发工作中提供一点启示。

分享到:
评论

相关推荐

    CSS3 For Web Designers

    **CSS3 for Web Designers** 是一本专注于前端开发领域的重要书籍,主要讲解了CSS3这一最新版本的样式表语言在网页设计中的应用。CSS3(层叠样式表第三级)是Web设计者不可或缺的工具,它带来了许多新的特性和功能,...

    ad.css for IE

    综上所述,"ad.css for IE"是专为解决IE浏览器显示广告和浮窗问题而设计的CSS文件,通过各种技术手段,如CSS Hack、特定的属性设置等,确保在IE8以上的版本中网站能够呈现出良好的视觉效果和用户体验。在实际应用中...

    CSS3 support for Internet Explorer 6, 7, and 8

    标题 "CSS3 support for Internet Explorer 6, 7, and 8" 提及的是关于如何在旧版本的Internet Explorer浏览器(IE6、IE7和IE8)中实现对CSS3特性的支持。这些浏览器并不原生支持许多CSS3的新功能,如圆角、阴影、...

    CSS完美兼容IE6IE7FF的通用方法

    ### CSS完美兼容IE6、IE7与Firefox的通用方法详解 在Web开发的历史长河中,浏览器兼容性一直是开发者面临的重大挑战,尤其是处理早期版本的Internet Explorer(IE6和IE7)与现代浏览器如Firefox之间的差异。本文将...

    CSS兼容大全IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari等浏览器

    CSS 兼容大全 IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari 等浏览器 CSS 兼容大全是指在不同的浏览器中,例如 IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari 等,如何使网页正常显示的技术。这个技术的核心是 CSS Hack,即...

    Beginning CSS: Cascading Style Sheets for Web Design, 2nd Edition(part1)

    All about the CSS Level 1, 2, 2.1, and 3 specifications Ways to manipulate text and select effects for your fonts Bugs and workarounds for IE6 and IE7 How to control the flow of your document layout ...

    css IE6卡死

    3、css里面*各种操作卡死IE6的情况。如:&lt;style&gt;*{position:relative}&lt;/style&gt; 4、js里面无限for循环卡死IE6。 5、jquery引起。如:一直等待下载某些并不存在的东西(比如外站的资源),严重时也会卡死...

    transform:css3 转换为 ie

    transform v0.0.8css3 transform for ietransform是一个为IE6-8提供css3 transform属性功能的js库,它的使用非常简单transform is a provider of css3 js library functions transform property for IE6-8, it's ...

    CSS兼容IE6,IE7,FF的技巧

    ### CSS兼容IE6, IE7, FF的技巧详解 #### 一、CSS Hack技术解析 在Web开发过程中,由于不同的浏览器对CSS的支持程度不同,尤其是IE6与IE7这类较老版本的浏览器,在处理CSS样式时存在差异。为了确保网站在不同...

    IE8 for WindowsXP , IE8 for XP , IE8

    - 它是首款支持CSS2.1和部分CSS3的IE浏览器,同时增强了对HTML5的支持。 - IE8引入了Web标准模式,改善了对网页标准的遵循,减少了对特定MS特有的CSS和JavaScript的依赖。 - 安全性方面,IE8增加了InPrivate浏览模式...

    Beginning CSS3 (pdf)

    the language that in the hands of a skilled designer turns the ugly duckling of unadorned HTML into the gracious swan of a sophisticated web page. Some web designers will tell you dismissively that CSS3 won’t be ready for years. In one sense, they’re right. Instead of ...

    ie11 for win7 64位离线安装包下载

    3. **CSS3兼容**:对CSS3的广泛支持,使得网页设计更加灵活,可以实现更复杂、美观的页面布局。 4. **安全增强**:引入了SmartScreen筛选器,有效防止恶意软件和钓鱼网站,保护用户信息安全。 5. **隐私保护**:提供...

    (IE11脱机安装程序for server 2008R2)IE11-Windows6.1-x64-zh-cn.zip

    4. **兼容性**:尽管IE11对HTML5和CSS3的支持更好,但有些旧的Web应用可能仍然需要IE的兼容模式,这可以通过设置浏览器的文档模式来实现。 5. **安全性**:安装后应及时开启自动更新,以获取最新的安全补丁和功能...

    CSS hack汇总

    *CSS hack for IE6 and Firefox (FF)* ```css background:orange; *background:blue; /* IE6 & IE7 */ background:green !important; background:blue; /* IE7 & FF */ background:orange; *background:green; /* ...

    css3复选框收音机效果.zip

    需要注意的是,虽然大部分现代浏览器都支持CSS3,但老版本的IE可能不完全支持,因此在实际项目中可能需要考虑使用JavaScript或jQuery来实现回退方案,确保在各种环境下都能正常显示。 总的来说,“css3复选框收音机...

    IE9 for win7安装包

    **IE9 for Win7 安装包详解** Internet Explorer 9(简称IE9)是微软公司推出的一款网页浏览器,专为Windows 7操作系统设计。它在2011年正式发布,带来了许多新特性和改进,旨在提升用户体验,增强安全性能,并优化...

    css制作带箭头的css边框

    通过以上分析,我们可以看出,该示例不仅展示了如何使用纯CSS技术来实现带有箭头的边框效果,还涉及到了CSS3的高级应用技巧,如伪元素、边框属性的灵活运用等。这些技术和方法对于前端开发者来说是非常有价值的,...

    IE8 For XP

    【IE8 For XP】是专为Windows XP操作系统设计的一款浏览器版本,它确保了在老旧操作系统上的兼容性和稳定性。Windows XP,作为微软历史上极具影响力的操作系统之一,虽然在2014年已经停止了官方支持,但至今仍有很多...

    CSS解决方案:IE6中遇到png兼容性

    把背景图片如常的合并,利用相似于... 在问题1的基础上,针对IE6采用了CSS滤镜让其透明,但图片不能应用背景坐标定位的方式只能单张使用,这做法不利于带宽流量和请求链接数之余也不利样式的管理 在问题2的基础上,意

    checked.css-超酷CSS3复选框和单选按钮点击动画库

    4. **兼容性好**:作为CSS3库,checked.css在现代浏览器中有着良好的兼容性,包括Chrome、Firefox、Safari、Edge以及IE9及以上版本。 **二、使用方法** 1. **引入样式文件**:首先,你需要在HTML文件的`&lt;head&gt;`...

Global site tag (gtag.js) - Google Analytics