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

这样的标题在百度和google搜索下很多篇文章,讲解IE8下兼容rgba的。

这些文章全部都是使用IE下的filter来使元素透明,但是这个里面会有bug。

它们的如下:

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

简答评论下这个代码的问题,首先这代码在IE9+上就会有颜色叠加的bug,fliterIE9+也同样支持的

其次IE8上确实是可以运行,但是这个元素对css的:hover,js的click事件(其他事件没有测试)支持将变得怪异,这个bug我的理解是IE对使用了filter的对象将会降低它的层次,就想是使用的z-index的感觉,只是视觉上没有变化,看 例子

注意,在例子中只有有文字的地方才能触发hover事件和点击事件,没有文字的地方点击事件就直接穿这个div点击到了下面一层的div了。这里才是重点。

我的解决方式

代码先行

// css
.a1{
margin: 10px auto 0;
width: 200px;
height: 200px;
position: relative;
overflow: hidden;
background: lightblue
}
.a2{
width: 130px;
height: 160px;
margin-left: 20px;
margin-top: 20px;
background: pink
}
.a3{
position: absolute;
right: 0;
top: 50%;
margin: 20px;
height: 120px;
width: 110px;
margin-top: -60px; background: no-repeat, rgba(128,128,128,.5);
color: black;
font-size: 12px;
z-index: 2
}
.a3 > .background-mask{
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7F808080,endcolorstr=#7F808080);
zoom: 1;
}
.a3:hover{
color: white;
}
//html
<div class="a1">
<div onclick="a2(this)" class="a2"></div>
<div onclick="a3(this)" class="a3">
我是a3,我用IE的filter属性的,我有hover看我的颜色,我还有click事件,分别点击文字和我的空白的地方
<!--[if IE 8]><div class="background-mask"></div><![endif]-->
</div>
</div>

可以看 例子 方便点

关键的地方是background: no-repeat, rgba(128,128,128,.5);用background的多个属性让background在IE8上永不生效,然后IE8用<!--[if IE 8]><div class="background-mask"></div><![endif]-->来生成背景

对于文字会被filter影响的问题,可以把文字和filter分开放,然后用z-index把文字内容放在filter上层,这样filter就不会把文字内容影响到了。

这次主要是说明了下ie8上兼容透明背景的使用,还是一个观点问题,背景就应该在内容的下方,这样就不会出怪异问题。使用了filter属性的元素注定只有当背景。

真~让IE8支持background: rbga; ,IE8下兼容rgba颜色的半透明背景的更多相关文章

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

    在工作中做一个图片半透明遮罩时发现在IE8下不兼容 一查再知道IE8不支持rgba颜色,再搜搜兼容性方法,没想到这么快就解决了. 先说说rgba的含义: r代表red,g代表green,b代表blue ...

  2. 让ie8支持 placeholder 属性

    一.  ie8支持 placeholder 属性 /* * ie8支持 placeholder 属性 */ $(function(){ if( !('placeholder' in document. ...

  3. 让IE7 IE8支持CSS3 background-size属性

    简介 CSS3 新增的 background-size 是一个很有用的属性,用于定义背景图片的尺寸,有了这个属性,你就可以任意指定背景图片的大小.其中最常用的值应该要数 cover 了,该值能让背景图 ...

  4. 让IE8支持HTML5及canvas功能!chart.js图表绘制工具库IE8上兼容方案

    第一步,我们加上对html5的支持. <!--[if IE]> <script src="/public/html5.js" type="text/ja ...

  5. IE8下实现兼容rgba

    昨天遇到一个问题,要实现一个背景透明的效果,用CSS3用rgba()就能实现,即 background: rgba(0,0,0,.5); 但是要兼容到IE8,就发现没有透明效果,因为IE8不支持rgb ...

  6. 让IE8支持HTML5及canvas功能!

    微软出的IE9支持HTML5,但因为不支持XP系统,暂时我还用不了. 即使能用,现阶段如果开发HTML5页面,并考虑到兼容性问题的话,恐怕也得让自己的界面支持IE6-8吧. 首先,需要让IE支持HTM ...

  7. CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8

    CSS判断不同分辨率浏览器(显示屏幕)显示不同宽度布局CSS3技术支持IE6到IE8.将用到css3 @media样式进行判断,但IE9以下版本不支持CSS3技术,这里DIVCSS5给大家介绍通过JS ...

  8. 【学习】ie8支持rgba()透明度颜色

    (我的博客网站中的原文:http://www.xiaoxianworld.com/archives/285,欢迎遇到的小伙伴常来瞅瞅,给点评论和建议,有错误和不足,也请指出.) rgba()函数可以用 ...

  9. 让IE8支持html5中的video标签

    这是一篇综合几个前辈的解决方案. 使用video的时候,要遇到的问题. ①不兼容ie9及其以下版本 在<head>里添加两行, 参考张鑫旭前辈的博客,但是在ie8中薄播放. <!-- ...

随机推荐

  1. crawler4j 学习

    crawler4j 学习(一) crawler4j是一个轻量级多线程网络爬虫,开发者可以调用相应的接口在短时间内创建一个多线程网络爬虫. 前期准备 使用maven 为了使用最近版本的crawler4j ...

  2. CSS居中布局总结【转】

    居中布局 <div class="parent"> <div class="child">demo</div> </d ...

  3. php 执行程序分析

    记录程序运行细节 记录程序运行时间 <?php $start = microtime(true); //index.php $end = microtime(true); $time = num ...

  4. 关于rc.local

    1.rc.loacl的启动 /etc/rc.d/rc.local

  5. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  6. O(n) 筛法求素数

    var tot,i,j,k,m,n:longint; prime:array[0..100000] of boolean; p:array[0..100000] of longint;begin re ...

  7. Sublime Text 使用笔记

    常用快捷键 command+shift+d   # 复制当前行到下一行 .

  8. php取整函数ceil,floor,round,intval函数的区别

    开发过程中,遇到数据处理取整的时候,你会用哪个呢,小涛来介绍一下:PHP取整函数有ceil,floor,round,intval,下面详细介绍一下: 1.ceil — 进一法取整说明float cei ...

  9. quicksort

    快排.... void quicksort(int *a,int left,int right){ if(left >= right){ return ; } int i = left; int ...

  10. exit和return的区别

     主要有几下几个不同点:     1. return返回函数值,是关键字:exit是一个函数.     2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个 ...