【发布时间】:2021-05-07 06:47:29
【问题描述】:
我在 SO 上发现了另一个关于 rgb 与 rgba 非常相似的问题,但它缺少关于 rgb with opacity 用法的答案。
我知道两者之间的区别——rgba 只是 rgb,但使用 alpha 表示不透明度。问题是,我使用具有不透明度值的 rgb 已经几个月甚至几年了。它一直对我有用。 rgb(255, 0, 255, 0.5)
让我想知道如果两者的工作方式相同,使用一个是否有优势? rgb 已经存在了更长时间,所以我认为浏览器兼容性更好?一位同事还告诉我 rgba 值仅适用于背景颜色,但话又说回来,我在 codepen 中做了一些测试,它适用于 Edge 和 Chrome。
(我知道两者都是基于 Chrome 的,这两个都是我下载的)
相关问题:What are differences between RGB vs RGBA other than 'opacity'
这是我的 sn-p
/* texts */
.one {
color: rgba(255, 200, 0, .5);
}
.oneFive {
color: rgb(255, 200, 0, .5);
}
/* backgrounds */
.two {
background-color: rgb(255, 0, 255, 0.5);
}
.three {
background-color: rgba(0, 0, 255, 0.5);
}
/* */
/* settings */
/* */
.two, .three {
height: 50px;
}
.two {
margin-top: 30px;
}
.two, .three, .zero {
color: white;
}
.one, .oneFive {
height: 50px;
font-weight: bold;
font-size: 2em;
padding-left: 40px;
padding-top: 20px;
}
body {
background-color: #444;
color: white;
}
.zero {
background-color: darkgreen;
width: 300px;
height: 350px;
position: absolute;
top: 35px;
z-index: -1;
}
dark grey 100% opacity
<div class="zero">dark green 100% opacity</div>
<div class="oneFive">rgb yellow text 70% opacity</div>
<div class="one">rgba yellow text 70% opacity</div>
<div class="two">rgb 50% background opacity</div>
<div class="three">rgba 50% background opacity</div>
【问题讨论】:
-
我要冒昧地说这是浏览器在翻译
rgb中设置的不正确值,并带有不透明度值。如果您查看计算选项卡下的浏览器开发工具,您会注意到rgb的值被计算为rgba。我认为任何支持 CSS3 的浏览器都会“修复”该属性。 另外一位同事告诉我 rgba 值仅适用于背景颜色你的同事错了。 -
rgb 存在的时间更长,所以我认为浏览器兼容性更好? 我不会这么说。您永远不会注意到性能下降,但如果您的浏览器不必“修复”传递给
rgb集合的不正确值,您将减少浏览器的工作量。 -
@disinfor 感谢您这么快回答。我确实检查了控制台的 rgb 值。 Chrome似乎不需要修复它。 (screencast.com/t/8essnzkacA)。我看到 rgba 是自 CSS Level 4 以来 rgb 的别名。我猜大多数流行的浏览器都是这样。如果您可以将您的回复捆绑为答案,我会接受它,因为它为我提供了我需要的信息。谢谢!
-
我认为 RGBA 用于保存添加不透明度的另一个 CSS 属性。如果我们想为任何元素添加不透明的颜色或不透明的背景,rgba 将是最佳选择,因为我们不会编写不透明属性。所以节省了一行代码。