详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法


Posted in HTML / CSS onDecember 20, 2016

CSS3的透明度属性opacity想必大家都已经用的无处不在了。而对于不支持CSS3的浏览器如何进行透明处理,保持浏览器效果的一致,这个估计谁都会写,但是涉及到filter的具体语法含义和各版本写法的不同区别,很多人都搞不准确,我曾经问过许多群里的大牛,说的都不是很准确,网上的说法就更五花八门了。今天呢,主要是重新温习一下这个属性,并实际测试来说明正确的写法,和IE各版本的支持度和书写区别。

首先,Opacity属性用来设置一个元素的透明度,取值范围是0~1之间,不可为负值。opacity取值为1是完全不透明,取值为0是完全透明,视觉上看不见。关于浏览器对opacity属性的兼容性请继续往下看:

从Firefox3.5+不再支持私有属性-moz-opacity了,在Mozilla 1.7 (Firefox 0.9)之前FF都是使用这个私有属性的,Firefox 0.9-Firefox3同时支持-moz-opacity和opacity这两个属性,现在回想起刚入职场不久那时候,正好是Firefox升级到3.5之后,一些做好的页面透明效果突然没有了,如今已经CSS3铺天盖地,概叹时光荏苒啊。

IE9+才开始支持CSS3 opacity,而对IE6-IE8我们习惯使用filter滤镜属性来进行实现。IE4-IE9都支持滤镜写法progid:DXImageTransform.Microsoft.Alpha(Opacity=xx).

IE8又引入了特殊的-ms-filter,IE认为这种写法是对旧写法的一次更正,更符合规范,这个写法的属性值只是多了一对引号,效果同前。不过,这种写法的寿命也不长,到IE10对filter与-ms-filter都已经不再支持。

Safari 1.2之前的版本,是基于khtml的浏览器内核,1.2版发布后,不再支持-khtml-opacity的写法,-khtml-opacity也随之成为历史。

Konqueror从未支持过-khtml-opacity,从4.0版本开始已经支持opacity。

除IE外,目前主流浏览器 Opera 9.0+,Safari  1.2(WebKit 125) +,chrome等等都支持opacity这个透明度属性。

IE 从4.0版开始,就提供了一些内置的多媒体滤镜特效,具体的使用方法是:

语法:

filter : filter 

参数: 

filter :  要使用的滤镜效果。多个滤镜之间用空格隔开。

说明:

1、设置或检索对象所应用的滤镜效果。

2、要使用该属性,对象必须具有height,width,position三个属性中的一个。

3、滤镜的机制是可扩展的。可以开发和使用第三方滤镜。

4、该属性在MAC平台上不可用。

5、对应的脚本特性为filter。

IE4.0以上版本,支持以下14种滤镜:

①、Alpha     让HTML元件呈现出透明的渐进效果

②、Blur     让HTML元件产生风吹模糊的效果

③、Chroma     让图像中的某一颜色变成透明色

④、DropShadow     让HTML元件有一个下落式的阴影

⑤、FlipH     让HTML元件水平翻转

⑥、FlipV     让HTML元件垂直翻转

⑦、Glow     在元件的周围产生光晕而模糊的效果

⑧、Gray     把一个彩色的图片变成黑白色

⑨、Invert     产生图片的照片底片的效果

⑩、Light     在HTML元件上放置一个光影

⑪、Mask     利用另一个HTML元件在另一个元件上产生图像的遮罩

⑫、Shadow     产生一个比较立体的阴影

⑬、Wave     让HTML元件产生水平或是垂直方向上的波浪变形

⑭、XRay     产生HTML元件的轮廓,就像是照X光一样

Alpha 滤镜参数详解

①、Opacity     不透明的程度,百分比。    从0到100,0表是完全透明,100表示完全不透明。

②、FinishOpacity     这是一个同Opacity一起使用的选择性的参数,当同时Opacity和FinishOpacity时,可以制作出透明渐进的效果,比较酷。    从0到100,0表是完全透明,100表示完全不透明。

③、Style     当同时设定了Opacity和finishOpacity产生透明渐进时,它主要是用赤指定渐进的显示形状。    0:没有渐进;1:直线渐进;2:圆形渐进;3:矩形辐射。

④、StartX     渐进开始的 X 坐标值   

⑤、StartY     渐进开始的 Y 坐标值   

⑥、FinishX     渐进结束的 X 坐标值   

⑦、FinishY     渐进结束的 Y 坐标值   

下面通过一个例子来测试filter和opacity的兼容性:

Html代码

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=utf-8 />  
<title>JS Bin</title>  
</head>  
<body>  
  <div class="transparent_class">测试透明度</div>  
</body>  
</html>

注意:测试不要忘了写DOCTYPE,否则会偏离真实效果。

对应CSS代码:

.transparent_class {  
    /* Required for IE 5, 6, 7 */  
    /* ...or something to trigger hasLayout, like zoom: 1; */  
    width:300px;  
    height:300px;  
    line-height:300px;  
    text-align:center;  
    background:#000;  
    color:#fff;  
    /* older safari/Chrome browsers */  
    -webkit-opacity: 0.5;  
    /* Netscape and Older than Firefox 0.9 */  
    -moz-opacity: 0.5;  
    /* Safari 1.x (pre WebKit!) 老式khtml内核的Safari浏览器*/  
    -khtml-opacity: 0.5;  
    /* IE9 + etc...modern browsers */  
    opacity: .5;  
    /* IE 4-9 */  
    filter:alpha(opacity=50);  
    /*This works in IE 8 & 9 too*/  
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";  
    /*IE4-IE9*/  
    filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);  
}

使用中,我们可以根据要适配的浏览器/版本,从上面选择自己需要的代码行。如果要全面支持所有浏览器,至少需要有关opacity或filter的前5句。需要声明的是,如果你要同时使用filter和-ms-filter,请将-ms-filter写在filter的前面。原文描述如下:

If you want opacity to also work in IE8′s emulating IE7 mode, the order should be:

-ms-filter:”progid:DXImageTransform.Microsoft.Alpha(Opacity=50)”; // first  
filter: alpha(opacity=50); // second

If you don’t use this order, IE8 emulating IE7 doesn’t apply the opacity, although IE8 and IE7 native do.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
HTML5 CSS3给网站设计带来出色效果
Jul 16 HTML / CSS
css3 按钮 利用css3实现超酷下载按钮
Mar 18 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
May 07 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
Jul 12 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
Oct 23 HTML / CSS
HTML5 表单验证失败的提示语问题
Jul 13 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
Jul 29 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
May 28 HTML / CSS
浅谈由position属性引申的css进阶讨论
May 25 HTML / CSS
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
Jul 16 HTML / CSS
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
Nov 11 HTML / CSS
详解CSS3浏览器兼容
Dec 14 #HTML / CSS
Css3新特性应用之视觉效果实例
Dec 12 #HTML / CSS
使用CSS3 制作一个material-design 风格登录界面实例
Dec 12 #HTML / CSS
Css3新特性应用之形状总结
Dec 08 #HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
Dec 08 #HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 #HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 #HTML / CSS
You might like
php微信公众平台示例代码分析(二)
2016/12/06 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
《乌塔》教学反思
2014/02/17 职场文书
德能勤绩工作总结
2015/08/11 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang