CSS背景不透明度与rgba在IE 8中不起作用

Moo*_*oon 110 css internet-explorer-8 rgba

我使用这个CSS作为背景不透明度<div>:

background: rgba(255, 255, 255, 0.3);
Run Code Online (Sandbox Code Playgroud)

它在Firefox中运行良好,但在IE 8中运行不正常.如何使其工作?

dia*_*o13 241

在IE中模拟RGBA和HSLA背景,你可以使用渐变滤镜,具有相同的开始和结束颜色(alpha通道是HEX值中的第一对)

background: rgba(255, 255, 255, 0.3); /* browsers */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4cffffff', endColorstr='#4cffffff'); /* IE */
Run Code Online (Sandbox Code Playgroud)

  • 透明度的十六进制代码(第一对)可以在这里找到:(http://stackoverflow.com/questions/15852122/hex-transparency-in-colors) (10认同)
  • 这是一种享受,但不幸的是,如果元素被动态隐藏并使用jQuery重新显示,它似乎停止工作... (2认同)
  • 这可以,但可以影响自定义字体的渲染. (2认同)
  • 这些IE自定义十六进制值有一个[计算器](http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/)! (2认同)

Mat*_*Cat 73

创建一个大于1x1像素的png(感谢thirtydot),它与背景的透明度相匹配.

编辑:为了回退IE6 +支持,您可以为png指定bkgd块,如果不支持,这是一种将替换真正的alpha透明度的颜色.你可以用gimp修复它,例如.

  • 在2003年是可以接受的,但不是在2013年.要么在旧的IE中使用-ms-filter进行模拟支持,要么更好的是,忽略它.使用IE8的人 - 应该因​​为没有看到边界半径,透明背景等而受到惩罚. (43认同)
  • @EugeneXa我为我的客户工作,而不是相反.如果他们使用IE8,那么我支持它.惩罚潜在客户并不是一件好事. (21认同)
  • @EugeneXa我的网站上接近10%,他们往往是好客户.这里没有一个正确的答案.做数学并找出适合你的方法.对于某些网站来说,即使6%也是巨大的!没有用户应该受到惩罚.我想你会后悔这种态度. (14认同)
  • 为避免潜在问题,请使用除"1x1"以外的任何尺寸:http://stackoverflow.com/questions/7764751/ie8-shows-gradient-instead-of-background-image/7765128#7765128 (11认同)
  • 对.IE 8中不支持`rgba()`颜色值. (2认同)
  • 我想我们都同意IE8只能得到优雅降级的事实;) (2认同)

ahg*_*ood 14

我相信这是最好的,因为在这个页面上有一个工具来帮助你生成alpha透明背景:

http://hammerspace.co.uk/2011/10/cross-browser-alpha-transparent-background-css

#div {
    background:rgb(255,0,0);
    background: transparent\9;
    background:rgba(255,0,0,0.3);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cFF0000,endColorstr=#4cFF0000);
    zoom: 1;
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 9

透明的png图像在IE 6中不起作用,替代方案是:

用CSS:

.transparent {

    /* works for IE 5+. */
    filter:alpha(opacity=30); 

    /* works for IE 8. */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";

    /* works for old school versions of the Mozilla browsers like Netscape Navigator. */
    -moz-opacity:0.3; 

    /* This is for old versions of Safari (1.x) with KHTML rendering engine */
    -khtml-opacity: 0.3; 

    /* This is the "most important" one because it's the current standard in CSS. This will work in most versions of Firefox, Safari, and Opera. */  
    opacity: 0.3; 
}
Run Code Online (Sandbox Code Playgroud)

或者只是用jQuery做:

// a crossbrowser solution
$(document).ready(function(){ 
    $(".transparent").css('opacity','.3');
});
Run Code Online (Sandbox Code Playgroud)

  • 背景alpha与不透明度不同(它也不会使子元素透明). (24认同)

Cam*_*sto 7

虽然很晚,我今天必须使用它,并在这里找到了一个非常有用的PHP脚本,它允许你动态创建一个png文件,就像rgba的工作方式一样.

background: url(rgba.php?r=255&g=100&b=0&a=50) repeat;
background: rgba(255,100,0,0.5);
Run Code Online (Sandbox Code Playgroud)

该脚本可以在这里下载:http://lea.verou.me/wp-content/uploads/2009/02/rgba.zip

我知道它可能不是每个人的完美解决方案,但在某些情况下值得考虑,因为它节省了大量时间并且完美无缺.希望能帮到别人!

  • 这是如何工作的 - 仅由不支持`rgba`的浏览器请求的rgba.php URL?或者它总是被所有用户请求,并且根本没有显示? (2认同)

Pra*_*020 7

CSS中大多数浏览器都支持RGBa代码,但只有IE8及以下级别不支持RGBa css代码.这是解决方案.对于解决方案,您必须遵循此代码,最好使用它的顺序,否则您将无法获得完美的输出.这段代码由我使用,它几乎是完美的.如果它是完美的,请发表评论.

.class
 {
        /* Web browsers that does not support RGBa */
        background: rgb(0, 0, 0);
        /* IE9/FF/chrome/safari supported */
        background: rgba(0, 0, 0, 0.6);
        /* IE 8 suppoerted */
        /* Here some time problem for Hover than you can use background color/image */
        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000)";
        /* Below IE7 supported */
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000);
 }
Run Code Online (Sandbox Code Playgroud)


Coi*_*_op 5

您使用css来更改不透明度.要应对IE,你需要这样的东西:

.opaque {
    opacity : 0.3;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
    filter: alpha(opacity=30);
}
Run Code Online (Sandbox Code Playgroud)

但唯一的问题是它意味着容器内的任何东西也都是0.3不透明度.因此,您必须更改HTML以使另一个容器(而不是透明容器内容容纳您的内容).

否则png技术会起作用.除了你需要修复IE6,这本身可能会导致问题.

  • 哈哈典型的情况是一个浏览器不像其他浏览器那样,并且该浏览器的每个版本都不像**同一**浏览器的其他版本...只有微软可以实现这一点非常成功... (4认同)
  • @Paul D. Waite:除了呈现内容之外,浏览器还提供了许多功能.偏离规范不是(或不应该)一个功能. (3认同)