IE8下实现兼容rgba

昨天遇到一个问题,要实现一个背景透明的效果,用CSS3用rgba()就能实现,即

background: rgba(0,0,0,.5);

但是要兼容到IE8,就发现没有透明效果,因为IE8不支持rgba()函数。下面我们总结一下rgba()函数的含义。

rgba的含义,r代表red,g代表green,b代表blue,a代表透明度。红绿蓝是三原色,所有颜色都可以由这三种颜色拼合而成。比如rgba(0,0,0,.5)就是透明度为0.5的黑色。现代浏览器是支持rgba的,但是在IE8等古董级浏览器中是不支持rgba的,IE8只能勉强支持rgb()函数(即去掉了透明度,只能表示颜色)。

不过网上有这样的解法

background: rgb(0, 0, 0);    /*不支持rgba的浏览器*/
background: rgba(0,0,0,.5);  /*支持rgba的浏览器*/
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000);    /*IE8支持*/

第二句话的意思就是当上一行的透明度不起作用的时候执行。这句话的意思本来是用来做渐变的,但是这个地方不需要渐变。所以两个颜色都设置成了相同的颜色。

解释下#7f000000,第一部分是#号后面的7f。是rgba透明度0.5的IEfilter值。从0.1到0.9每个数字对应一个IEfilter值。对应关系如下:

第二部分是19后面的六位。这个是六进制的颜色值。要跟rgb函数中的取值相同。比如rgb(0,0,0,)对应#000;都是黑色。

到这里,rgba的用法就可以兼容IE8了。

最近看到,不直接在样式里面添加filter,而是利用来为ie添加filter兼容。在过后又发现IE9同时支持RGBA和filter,导致两个重叠,透明效果变差,所以需要改为,
具体做法如下:

<!--[if lt IE 9]>

   <style type="text/css">

   .color-block {
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000);
       zoom: 1;
    }

    </style>

<![endif]-->
时间: 2024-08-26 15:26:06

IE8下实现兼容rgba的相关文章

解决IE8下不兼容rgba()的解决办法

rgba()是css3的新属性,所以IE8及以下浏览器不兼容,这怎么办呢?终于我找到了解决办法. 解决办法 我们先来解释以下rgba rgba: rgba的含义,r代表red,g代表green,b代表blue,a代表透明度. rgba(0,0,0,.5) 这样就代表了黑色,透明度为0.5 要想解决在IE8下的透明度问题,可以增加这样一句话: filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endC

input 的 placeholder属性在IE8下的兼容处理

placeholder是input标签的新属性,在使用的时候有两个问题: 1.IE8 下不兼容 处理思路: 如果浏览器不识别placeholder属性,给input添加类名placeholder,模仿placeholder属性的样式,并给input 的value赋值placeholder属性的值 2. input的type属性是password的情况,用上面的方法处理提示语为密码文 处理思路: 新添加一个标签,模仿placeholder属性 直接上代码: css部分: 1 .input-item

bootstrap在ie8下,兼容媒体查询

最近使用bootstrap做网站的时候发现,在ie8下的媒体查询一直失效: 后来解决了,做如下记录: 1.必须运行在服务器下 2.hack 条件语法,如下: <!--[if lte ie 9]> <script src="js/html5shiv.min.js"></script> <script src="js/respond.min.js"></script> <![endif]--> 这样

IE8下ajax兼容问题

1 function crossDomainAjax(url, successCallback) { 2 3 // IE8 & 9 only Cross domain JSON GET request 4 if ('XDomainRequest' in window && window.XDomainRequest !== null) { 5 6 var xdr = new XDomainRequest(); // Use Microsoft XDR 7 xdr.open('get

IE8下兼容rgba颜色的半透明背景

在工作中做一个图片半透明遮罩时发现在IE8下不兼容 一查再知道IE8不支持rgba颜色,再搜搜兼容性方法,没想到这么快就解决了. 先说说rgba的含义: r代表red,g代表green,b代表blue,a代表透明度.红绿蓝是三原色,所有颜色都可以由这三种颜色拼合而成.比如rgba(0,0,0,.5)就是透明度为0.5的黑色.现代浏览器是支持rgba的,但是在IE8等古董级浏览器中是不支持rgba的,IE8只能勉强支持rgb()函数(即去掉了透明度,只能表示颜色). 网上的解决方法是: backg

input输入框的border-radius属性在IE8下的完美兼容

在工作中我们发现搜索框大部分都是有圆角的,为此作为经验不足的前端人员很容易就想到,给input标签添加border-radius属性不就解决了嘛.不错方法确实是这样,但是不要忘了border-radius是css3属性,IE8不兼容!!!那么问题来了,怎样在IE8下完美兼容呢? 网上有很多关于css3属性在IE8下兼容的方法,需要引入PIE.htc这个文件,相信很容易搜到并下载该文件,但是用上position:relative;behavoior:url(PIE.htc);后发现圆角是实现了,但

Jquery ajax传递xml方式在ie8下兼容问题

要写的东西是一个工作日志页面,要求不能分页,一天写入一条数据.考虑到服务器的性能问题,使用一次性全从数据库中读出数据在方法,如果时间长了,页面在加载的时候会很慢,而且会造成浪费.所以我采用ajax技术,一次读3条数据,随着滚动条滑动加载.这样就能很好的降低服务器的压力,虽然项目不大. 项目提交的时候才发现,我写的工作日志页面居然在ie8下不能正常显示.按理来说,Jquery应该已经帮我解决了ajax创建xmlDOM时的兼容性的问题,仔细排查了以后发现是ie8对xml解析的问题. 找了资料后解决办

兼容rgba

background:rgba(); 是css3新增的.它非常实用,可以很简单的就做出一个背景透明而内容不透明的遮罩层. 可惜的是IE8及IE8以下并不兼容该属性.但我们可以通过IE下的滤镜来实现rgba的效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

IE8下label不能点击、样式出错

最近又踩了一个坑. 坑的不明显,后果很严重... 公司上月上线了一个网站,主要功能是表单注册那块..今天我收到消息说IE8下有问题.我去看了下表单的那部分,真的是坑啊...我用字体模拟的复选框,套在一个label里面,各大浏览器都好好地可以模拟成功,IE8下直接动也不动了...后来没办法,简单粗暴地把label改成了span(改成其他也可以..) 点击解决了,又发现其他有个地方是插件生成的label,样式直接崩了...改插件?问题是以后还能不能愉快地用label了? 就因为这个label,推广的