• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >css3 > 使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE

使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-02

本文主要包含filters,filters是什么意思,lav filters,upperfilters,search filters等相关知识,佚名 希望在学习及工作中可以帮助到您
跨浏览器兼容性是网页制作永恒的难题。别看各浏览器厂商都努力在自己的浏览器中实现新式的css3标准特性,但都是以扩展样式的形式提供的, 所以在未来一段时间里,样式表里的-moz-,-webkit-,(-ms-,-o-)等等前缀将长期存在。

另外,虽说各家有志于扩张自己市场的浏览器厂商都提供了css3的新特性,但鉴于其老式版本的浏览器依然存在于用户的主机上(主要是微软旗下的ie6,7,8),除了考虑各家浏览器之间的兼容性外,我们还有必要向前兼容老式浏览器。

这些老式浏览器(低版本ie)对于css3的不支持问题,真是阻碍我们迈向css3时代的一大障碍。
不幸之幸,当年ie在轻视w3c标准之时,自成一套的Filters滤镜却是具备长远眼光的。在这些Filters滤镜中,不少效果正是我们CSS3中目前实现的。
对于Filters滤镜,我们不建议单独使用,只作为解决兼容性时候的一个选择。
下面我们将解决以下低版本浏览器的问题:
1. ie6下对透明png的不支持;
2. ie6,7,8下阴影(box-shadow,text-shadow)效果的不支持;
3. ie6,7,8下渐变(Gradients)效果的不支持;
4. ie6,7,8下对rgba的不支持(一般用来做半透明层)。

1. 解决ie6对24位透明png的不支持
第一个问题非常常见,其实有两个解决方法,
一个就是使用ie滤镜:AlphaImageLoader


<!DOCTYPE html> <html > <head> <meta charset="utf-8" /> <title>使用AlphaImageLoader滤镜支持ie6的透明png</title> <style> .pngBg{ width:160px;height:240px;background: url(http://files.weikejianghu.com/file_images/article/201301/2013123145523265.png); _background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://files.weikejianghu.com/file_images/article/201301/2013123145523265.png',sizingMethod='scale'); /* sizingMethod参数还可以是image,crop */ } </style> </head> <body> <div class='pngBg'> 请尝试使用ie6 </div> </body> </html>
提示:您可以先修改部分代码再运行</div>
使用这个滤镜之后,仍然是有一些问题没法弥补的,比如图片的repeat等等。
之前,我曾极力推荐过另外一个解决方法:使用VML,称之为完美解决方案。在这个js里已经封装好代码DD_belatedPNG
但是后来发现,使用VML效率问题比AlphaImageLoader更甚,君当慎之。

2. 解决ie6,7,8下对阴影(box-shadow,text-shadow)效果的不支持
现在很多网站为求美观采用了很多css3的样式,其中box-shadow和text-shadow的使用率最高。
下面我们就利用Blur和dropShadow滤镜在ie6,7,8中实现这种效果:


<!Doctype html> <html> <head> <meta charset="UTF-8" /> <title>Blur滤镜模拟box-shadow,dropShadow滤镜模拟text-shadow</title> <style type="text/css"> body{ position:relative; color:#c00; font-family:'黑体'; font-size:20px; background:#cfc; } .shadow{ width:200px;height:100px; background:#fff; border:1px solid #ccc; } .shadow span{zoom:1;filter:progid:DXImageTransform.Microsoft.dropShadow( Color=cccccc,offX=2,offY=1,positive=true); } .ieShadow{ position:absolute;width:200px;height:100px;z-index:-1; background: #333; top:-5px;left:-5px; filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='6', MakeShadow='true', ShadowOpacity='0.3'); } </style> </head> <body> <div class="wrap"> <div class='ieShadow'></div> <div class='shadow'> <span>文字shadow</span> </div> </div> </body> </html>
提示:您可以先修改部分代码再运行</div>
ie的滤镜是必须要在触发haslayout情况下才能生效的(ie8除外,它已经抛弃了haslayout这个私有属性),这就是为什么我们在那里加了个zoom:1;
另外,当使用dropShadow滤镜做文字阴影时,就不应该使用background,否则阴影效果是对背景起作用了,所以我们将dropShadow滤镜加在了span上而不是class=shadow层上。
做box-shadow效果,我们还多加了一层class=ieShadow,然后使用blur滤镜来模拟的。其实滤镜中还有个Shadow滤镜,可以不需要这个额外层,但是效果并不好,所以我们并没有采用。
下面,我们做一个兼容所有浏览器的demo。


<!Doctype html> <html> <head> <meta charset="UTF-8" /> <title>块阴影(Firefox,Safari, Chrome,opera)与文字阴影(Firefox 3.1,Safari,Opera,chrome)</title> <style type="text/css"> body{ position:relative; color:#c00; font-family:'黑体'; font-size:20px; background:#cfc; } .shadow{ width:200px;height:100px; background:#fff; border:1px solid #ccc; box-shadow: 1px 1px 10px rgba(200,200,200,0.9); -webkit-box-shadow:1px 1px 10px rgba(200,200,200,0.9) ; -moz-box-shadow: 1px 1px 10px rgba(200,200,200,0.9) ; } .shadow span{ zoom:1;filter:progid:DXImageTransform.Microsoft.dropShadow( Color=cccccc,offX=2,offY=1,positive=true); text-shadow: 2px 1px 2px #ccc; } .ieShadow{ display:none; display:block\9; position:absolute;width:200px;height:100px;z-index:-1; background: #ccc; top:-5px;left:-5px; filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='6', MakeShadow='true', ShadowOpacity='0.2'); } </style> </head> <body> <div class="wrap"> <div class='ieShadow'></div> <div class='shadow'> <span>文字shadow</span> </div> </div> </body> </html>
提示:您可以先修改部分代码再运行</div>
3. 解决ie6,7,8下渐变(Gradients)效果的不支持
自从有了gradient渐变这个css3属性后,很多设计效果我们就不需要去切图了,直接使用代码就能实现,并且相对图片来说局限性更小。
为了弥补ie低版本下对gradient的不支持,我们可以使用Gradient滤镜。
ie的Gradient滤镜只支持线性渐变,且只能设置两个渐变色,不过这里注意一下,这个渐变颜色可以设置alpha透明度。


<!Doctype html> <html> <head> <meta charset="UTF-8" /> <title>ie6下的gradient滤镜线性渐变</title> <style type="text/css"> .Box{ width:300px;height:200px; filter:progid:DXImageTransform.Microsoft.gradient(gradientType = 0, startColorstr = #FEFEFE, endColorstr = #E0E0E2); } </style> </head> <body> <div class='Box'>渐变背景</div> </body> </html>
提示:您可以先修改部分代码再运行</div>
我们在看一下各浏览器兼容性的写法,遗憾的是opera并未支持。


<!Doctype html> <html> <head> <meta charset="UTF-8" /> <title>线性渐变(未支持opera)</title> <style type="te

您可能想查找下面的文章:

  • 使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE

相关文章

  • 2017-06-02CSS3弹性盒模型flex box快速入门心得(必看篇)
  • 2017-06-02CSS3制作ajax loader icon实现思路及代码
  • 2017-06-02CSS3实现精美横向滚动菜单按钮
  • 2017-06-02css3 线性渐变和径向渐变示例附图
  • 2017-06-02CSS实现的一闪而过的图片闪光效果
  • 2017-06-02CSS3的Border-radius轻松制作圆角
  • 2017-06-02CSS实现定位元素居中的方法
  • 2017-06-02详解CSS3 Media Queries中媒体属性的使用
  • 2017-06-02CSS3属性box-sizing使用指南
  • 2017-06-02CSS3 优势以及网页设计师如何使用CSS3技术

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 使用CSS3和Checkbox实现JQuery的一些效果
    • 收集的22款给力的HTML5和CSS3帮助工具
    • 用CSS3来实现社交分享按钮
    • 利用CSS3的线性渐变linear-gradient制作边框的示例
    • 50个强大璀璨的CSS3/JS技术运用实例
    • css3实现3d旋转动画特效
    • 使用CSS3设计地图上的雷达定位提示效果
    • 简单介绍CSS3中Media Query的使用
    • css实例教程 一款纯css3实现的超炫动画背画特效
    • 纯CSS3实现自定义Tooltip边框涂鸦风格的教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有