【问题标题】:rgba() not working in IE8rgba() 在 IE8 中不起作用
【发布时间】:2013-05-03 23:26:57
【问题描述】:

我只是坚持使用 IE 8 在 jQuery 中进行 RGBA() 操作

到目前为止,我有这个:

$('.set').click(function (e) {
      var hiddenSection = $('div.hidden');
      hiddenSection.fadeIn()
      .css({ 'display': 'block' })
      .css({ width: $(window).width() + 'px', height: $(window).height() + 'px' })
      .css({ top: ($(window).height() - hiddenSection.height()) / 2 + 'px',
           left: ($(window).width() - hiddenSection.width()) / 2 + 'px'
       })
       .css({ 'background-color': 'rgba(0,0,0,0.5)' })  //Problem here in IE8
       .appendTo('body');
       $('span.close').click(function () { $(hiddenSection).fadeOut(); });
});

它适用于所有其他浏览器,不知道为什么它在 IE 8 中失败 我收到了这个错误!

Invalid property valuejquery.min.js 中。

非常感谢任何帮助!

谢谢

【问题讨论】:

  • RGBA 不能在 IE8 中工作,因为它是 CSS 的新手。您可以使用稍微透明的 PNG24,它可以在 IE8 中使用
  • 对于未来:caniuse.com 在这方面真的很有帮助。

标签: jquery css internet-explorer


【解决方案1】:

简单回答:IE8 不支持 RGBA 属性。它只知道RGB。

RGBA 支持仅在 IE9 中添加。

其他非常旧的浏览器也可能不支持 RGBA。但是,除了 IE8 之外,仍然在使用的旧浏览器并不多。

有一些方法可以解决这个问题:

  • 使用诸如 CSS3Pie 之类的 polyfill。这将允许您在 CSS 中指定 RGBA 背景颜色。您仍然无法像拥有它一样直接在 JS 代码中使用它,但您可以更改类来处理它。

  • 使用 Modernizr 之类的工具来检测浏览器是否支持此功能,如果不支持,则提供不同的功能。

  • 使用IE8的-ms-filter样式实现透明效果。这允许您设置一系列特殊效果,包括不透明度。这是一个非标准 IE 功能,在 IE9/10 中被标准 CSS 取代,但在某些情况下对旧 IE 版本仍然有用。

  • 请改用带有 Alpha 通道的小型 PNG 图像作为背景。这些天使用背景图像作为纯色背景有点可惜,但它会达到您在所有浏览器中寻找的结果。

【讨论】:

  • 正确。我想知道。 OP 可以使用 rgba() 并同时使用 IE 替代渐变属性?filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#VALOR,endColorstr=#VALOR);
  • IE8(失败),发布于 2009 年 3 月 19 日。 FF3(作品),2008 年 6 月 17 日发布。 Safari 3(作品),发布于 2007 年 6 月 11 日。谷歌浏览器(任何,工作),发布于 2008 年 9 月 2 日。 (source)
  • @PaulS。 - 哇,Chrome 真的那么老吗?感觉就像昨天一样。嗯,现在你让 感觉自己老了 :-(
  • 感谢 Spudley.. +1 的解释.. 我会尝试解决你建议的那些事情。
【解决方案2】:

`rgba 不受 ie8 支持。

然而,在 i.e8 中有一个透明技巧

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000);

#7F000000 的前 2 位数字是不透明度,接下来的 6 位数字是十六进制颜色代码。

7f 相当于 50%

所以你的代码应该是这样的:

.css({ 'background-color': 'rgba(0,0,0,0.5)' })  //Problem here in IE8
.css({'filter' : 'progid:DXImageTransform.Microsoft.gradient(startColorstr=#50000000,endColorstr=#50000000);'}) //IE Fallback

来源:http://css-tricks.com/rgba-browser-support/

编辑:在 Derek Henderson 发表评论后,我不会编写代码,但如果您仍想在 IE8 时添加,请查看jQuery.browser

【讨论】:

  • 我认为最好只根据需要添加 IE8 后备,而不是为所有浏览器指定它。
  • 确实是这样,但这不是这里的问题......我只是向他展示了 IE 中存在透明度的后备
【解决方案3】:

你有一个错字。应该是:

rgba(0,0,0,0.5)

你错过了“a”部分。

但是,我不确定 IE8 是否支持 rgba() ...然后,jQuery 可能对此有一个包装器?

为了安全起见,我会尝试将背景图片设置为具有透明度的 png 格式。

.css({ 'background-image': 'http://example.com/myimage.png' })

米奇。

【讨论】:

    【解决方案4】:

    而不是这个:

    .css({ 'background-color': 'rgba(0,0,0,0.5)' }) 
    

    你可以这样做:

    .css({ 'background-color': 'rgb(0,0,0)', 'opacity': '0.5' }) 
    

    这适用于所有浏览器。

    【讨论】:

    • 里面的文字会怎样?如果元素没有任何子元素或文本或任何边框颜色,这是一个解决方案。
    • 不,抱歉。不错的尝试,但 IE8 也不支持 CSS opacity。另外opacity会影响元素前景,而原来的rgba代码只会影响背景。
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2013-12-01
    • 2015-12-19
    • 2012-05-23
    • 2015-06-07
    • 2013-05-07
    • 2012-05-12
    • 2012-04-03
    相关资源
    最近更新 更多