您现在的位置是:网站首页> 编程资料编程资料
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用通过css3的filter滤镜改变png图片的颜色的示例代码CSS3 中filter(滤镜)属性使用详解jquery和CSS3图片排序过滤搜索插件Filterizr详解CSS3中强大的filter(滤镜)属性使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法css3背景图片透明叠加属性cross-fade简介及用法实例
2021-09-07
1262人已围观
简介 跨浏览器兼容性是网页制作永恒的难题,所以在未来一段时间里,样式表里的-moz-,-webkit-,(-ms-,-o-)等等前缀将长期存在,除了考虑各家浏览器之间的兼容性外,我们还有必要向前兼容老式浏览器
跨浏览器兼容性是网页制作永恒的难题。别看各浏览器厂商都努力在自己的浏览器中实现新式的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
提示:您可以先修改部分代码再运行
使用这个滤镜之后,仍然是有一些问题没法弥补的,比如图片的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中实现这种效果:
提示:您可以先修改部分代码再运行
ie的滤镜是必须要在触发haslayout情况下才能生效的(ie8除外,它已经抛弃了haslayout这个私有属性),这就是为什么我们在那里加了个zoom:1;
另外,当使用dropShadow滤镜做文字阴影时,就不应该使用background,否则阴影效果是对背景起作用了,所以我们将dropShadow滤镜加在了span上而不是class=shadow层上。
做box-shadow效果,我们还多加了一层class=ieShadow,然后使用blur滤镜来模拟的。其实滤镜中还有个Shadow滤镜,可以不需要这个额外层,但是效果并不好,所以我们并没有采用。
下面,我们做一个兼容所有浏览器的demo。
提示:您可以先修改部分代码再运行
3. 解决ie6,7,8下渐变(Gradients)效果的不支持
自从有了gradient渐变这个css3属性后,很多设计效果我们就不需要去切图了,直接使用代码就能实现,并且相对图片来说局限性更小。
为了弥补ie低版本下对gradient的不支持,我们可以使用Gradient滤镜。
ie的Gradient滤镜只支持线性渐变,且只能设置两个渐变色,不过这里注意一下,这个渐变颜色可以设置alpha透明度。
提示:您可以先修改部分代码再运行
我们在看一下各浏览器兼容性的写法,遗憾的是opera并未支持。
提示:您可以先修改部分代码再运行
4. 解决ie6,7,8下对rgba的不支持(一般用来做半透明层)
这第四个问题,非常普遍,而且ie低版本下的解决方法在网上也是随处可见,就是半透明层的效果。
因为ie不支持rgba色,所以我们一般都使用ie的alpha滤镜来达到半透明效果,但是,同我们上面举的box-shadow的模拟例子一样,这个alpha滤镜和上面的blur滤镜都是针对层元素内所有子元素且包括文本节点的。所以,一旦使用了alpha滤镜,那么这个元素下面的所有东西都透明了,这常常和我们要的效果不一致。
网上一般的解决方法同上面的模拟box-shadow的blur滤镜一样,将透明层单独提取成一个层。
提示:您可以先修改部分代码再运行
这种方法使用的比较普遍,但是多加的一层实在有些多余,并且有时候控制起来还比较麻烦。
我们可以换一个滤镜方法:在上面的渐变的滤镜里,我们提到了渐变色也可以使用alpha半透明值,并且这个渐变滤镜是针对于元素背景的,元素内容并不会受其影响。
那么我们可以这样实现:
提示:您可以先修改部分代码再运行
显然结构,样式简单多了,再做一下其他浏览器的兼容性:
提示:您可以先修改部分代码再运行
虽然我们以上解决了四种ie低版本下的不足,但在解决的过程中某些地方还是稍显繁复了,且在具体应用当中的情况或许并没有这么简单,读者当理解之后再做延伸。
除了以上四种问题被解决之外,还是有太多的css3效果在ie低版本下是无法实现的,我们不得不(在低版本浏览器中)放弃之,其中最最最遗憾的就是css3圆角效果了,当然使用VML也是能解决,封装的方法:Curved corner,同DD_belatedPNG一样,我还是建议读者谨慎采用。
ie各个Filters静态滤镜演示Demo:DXTidemo
另外,虽说各家有志于扩张自己市场的浏览器厂商都提供了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
提示:您可以先修改部分代码再运行
使用这个滤镜之后,仍然是有一些问题没法弥补的,比如图片的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中实现这种效果:
提示:您可以先修改部分代码再运行
ie的滤镜是必须要在触发haslayout情况下才能生效的(ie8除外,它已经抛弃了haslayout这个私有属性),这就是为什么我们在那里加了个zoom:1;
另外,当使用dropShadow滤镜做文字阴影时,就不应该使用background,否则阴影效果是对背景起作用了,所以我们将dropShadow滤镜加在了span上而不是class=shadow层上。
做box-shadow效果,我们还多加了一层class=ieShadow,然后使用blur滤镜来模拟的。其实滤镜中还有个Shadow滤镜,可以不需要这个额外层,但是效果并不好,所以我们并没有采用。
下面,我们做一个兼容所有浏览器的demo。
提示:您可以先修改部分代码再运行
3. 解决ie6,7,8下渐变(Gradients)效果的不支持
自从有了gradient渐变这个css3属性后,很多设计效果我们就不需要去切图了,直接使用代码就能实现,并且相对图片来说局限性更小。
为了弥补ie低版本下对gradient的不支持,我们可以使用Gradient滤镜。
ie的Gradient滤镜只支持线性渐变,且只能设置两个渐变色,不过这里注意一下,这个渐变颜色可以设置alpha透明度。
提示:您可以先修改部分代码再运行
我们在看一下各浏览器兼容性的写法,遗憾的是opera并未支持。
提示:您可以先修改部分代码再运行
4. 解决ie6,7,8下对rgba的不支持(一般用来做半透明层)
这第四个问题,非常普遍,而且ie低版本下的解决方法在网上也是随处可见,就是半透明层的效果。
因为ie不支持rgba色,所以我们一般都使用ie的alpha滤镜来达到半透明效果,但是,同我们上面举的box-shadow的模拟例子一样,这个alpha滤镜和上面的blur滤镜都是针对层元素内所有子元素且包括文本节点的。所以,一旦使用了alpha滤镜,那么这个元素下面的所有东西都透明了,这常常和我们要的效果不一致。
网上一般的解决方法同上面的模拟box-shadow的blur滤镜一样,将透明层单独提取成一个层。
提示:您可以先修改部分代码再运行
这种方法使用的比较普遍,但是多加的一层实在有些多余,并且有时候控制起来还比较麻烦。
我们可以换一个滤镜方法:在上面的渐变的滤镜里,我们提到了渐变色也可以使用alpha半透明值,并且这个渐变滤镜是针对于元素背景的,元素内容并不会受其影响。
那么我们可以这样实现:
提示:您可以先修改部分代码再运行
显然结构,样式简单多了,再做一下其他浏览器的兼容性:
提示:您可以先修改部分代码再运行
虽然我们以上解决了四种ie低版本下的不足,但在解决的过程中某些地方还是稍显繁复了,且在具体应用当中的情况或许并没有这么简单,读者当理解之后再做延伸。
除了以上四种问题被解决之外,还是有太多的css3效果在ie低版本下是无法实现的,我们不得不(在低版本浏览器中)放弃之,其中最最最遗憾的就是css3圆角效果了,当然使用VML也是能解决,封装的方法:Curved corner,同DD_belatedPNG一样,我还是建议读者谨慎采用。
ie各个Filters静态滤镜演示Demo:DXTidemo
相关内容
- 一些常用的DIV+CSS的网页布局所用的代码段网页切图的CSS和布局经验与要点适合新手的CSS网页布局小技巧整理CSS网页布局时常犯的几种小错误小结CSS网页布局中的最小高度问题的解决方法CSS 网页布局排版实例CSS 使用table布局网页是不明智CSS网页布局25个实用小技巧浅谈css网页的几种布局
- css实现瀑布流空白处背景粉色背景块css3 column实现卡片瀑布流布局的示例代码用CSS3实现瀑布流布局的示例代码CSS3实现瀑布流布局与无限加载图片相册的实例代码CSS3使用多列制作瀑布流基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享css和js实现瀑布流效果示例详解纯css实现瀑布流(multi-column多列及flex布局)
- div+css实现类似winxp桌面图标布局(至上而下从左往右)HTML中利用div+CSS实现简单的箭头图标的代码jQuery页面固定div可拖动图标导航菜单html+css制作div标签增加右上角删除图标的示例代码
- ie9崩溃现象当js设置tr元素样式为display:noneIE/火狐/Chrome操作display:none对象所遇问题解答css元素隐藏原理及display:none和visibility:hiddenIE7下父元素及子元素的隐藏顺序不当带来的display:none出现BUGdisplay:none和visibility:hidden的差别比较与演示代码如何通过 display:olck/none 完成一个菜单栏
- div层调整z-index属性在IE中无效原因分析及解决方法IE6 select z-index无效,遮挡div bug的解决方法z-index ie6下的解决方案 css设置z-index 失效的解决方法ie6 z-index不起作用的完美解决方法
- css 省略号 css3让多余的字符串消失并附加省略号的实现代码CSS3截取字符串实例代码【推荐】
- 纯css实现的六边形(蜂窝)导航效果(支持hover/兼容浏览器)css3实现六边形边框的实例代码css画正六边形的两种方法css实现六边形图片的示例代码CSS实现图片背景填充的六边形的示例代码CSS3绘制六边形的简单实现纯css绘制蜂巢六边形效果CSS 实现蜂巢/六边形图集的示例代码
- word-wrap与word-break 属性的概述及浏览器默认处理css word-break word-wrap 前台显示自动换行css中强制换行word-break、word-wrap、white-space区别实例说明CSS word-wrap同word-break的区别 word-break:break-all和word-wrap:break-word区别总结CSS属性探秘系列(一):word-break与word-wrap
- 7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口CSS3实现的具有超强立体感的3D菜单效果源码CSS3实现的菜单有立体动画视觉的垂直菜单效果源码纯CSS3实现的立体动画菜单效果源码 菜单项按下有内阴影CSS3实现的蓝色淡雅风格立体3D菜单效果源码基于CSS3制作立体效果导航菜单
- 利用css3制作3D样式按钮实现代码css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果