rgba() 的颜色 IE 后备不起作用

发布于 2024-09-09 09:57:57 字数 1062 浏览 5 评论 0原文

为什么 IE color: red; 的以下后备不起作用?
在 IE7 中,颜色为黑色,而不是红色
现场演示

HTML:

<div>
    <span>Hello</span>
</div>

CSS:

div {
    width: 200px;
    height: 100px;
    background-color: blue;
    text-align: center;
}
span {
    font-size: 2em;
    color: red;
    color: rgba(250, 250, 97, 0.9);
}

第 3 方编辑

mozilla mdn on css color 列出了 color: value 的不同选项

  • CSS 2 规范颜色:<值> 值可以是关键字 redrgb(255,0,0)
  • CSS 颜色模块级别 3(建议 2017-12)添加了 SVG 颜色、rgba()、hsl() 和 hsla() 函数,例如: rgba(0,0,0,0)

Why the following fallback for IE color: red; does not work ?
In IE7, the color is black rather than red.
Live demo here

HTML:

<div>
    <span>Hello</span>
</div>

CSS:

div {
    width: 200px;
    height: 100px;
    background-color: blue;
    text-align: center;
}
span {
    font-size: 2em;
    color: red;
    color: rgba(250, 250, 97, 0.9);
}

3rd party edit

The mozilla mdn on css color lists the different options for color: value

  • CSS 2 specification: color: <value> and value can be a keyword red or rgb(255,0,0)
  • CSS Color Module Level 3 (Recommendation 2017-12) added SVG colors, the rgba(), hsl(), and hsla() functions for example: rgba(0,0,0,0)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尹雨沫 2024-09-16 09:57:57

IE 不支持 RGBA。

但是,当它看到您的 color: 样式时,它会尝试对其进行评估并恢复为默认颜色 (#00000000)。
可以在这里使用特定于IE的技巧,例如

*color: red;

但是,假设您试图仅影响背景颜色,而不是整个元素的不透明度,那么您最好使用一个过滤器将所需的 rgba 值设置为渐变的开始和结束颜色 - 创建 rgba 背景。

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

-ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000050,endColorstr=#99000050);

但请记住 - IE 假定 Alpha 是第一个,而不是最后一个,所以不要只是转换和复制您的值。
双滤镜分别适用于 IE6 和 IE7。

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

RGBA is not supported in IE.

However, as it sees your color: style, it attempts to evaluate it and reverts to the default color (#00000000).
You could use an IE specific hack here, such as

*color: red;

But, assuming that you are trying to affect only the background color, and not the opacity of the entire element, you're best off with a filter that sets the desired rgba value as the start and end color of a gradient - creating an rgba background.

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

-ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000050,endColorstr=#99000050);

But remember - IE assumes that the Alpha is first, not last, so don't just convert and copy your values.
The double filter is for IE6 and IE7 respectively.

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

无法回应 2024-09-16 09:57:57

将这两个颜色声明拆分为单独的 CSS 规则集可以解决此问题:

span {
    font-size: 2em;
    color: red;
}
span {
    color: rgba(250, 250, 97, 0.9);
}

现在 IE 获得红色文本,更好的浏览器获得 RGBA 声明。

Splitting those two color declarations into separate CSS rulesets cures this problem:

span {
    font-size: 2em;
    color: red;
}
span {
    color: rgba(250, 250, 97, 0.9);
}

Now IE gets red text, better browsers get the RGBA declaration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文