我可以将opacity
属性分配给div
的background
属性而不是它上面的文本吗?
我试过了:
background: #CCC;
opacity: 0.6;
但这不会改变不透明度。
听起来你想使用透明背景,在这种情况下你可以尝试使用rgba()
函数:
rgba(R, G, B, A)
R(红色),G(绿色)和 B(蓝色)可以是
<integer>
s 或<percentage>
s,其中数字 255 对应于 100%。 A(α)可以是 0 到 1 之间的<number>
,或<percentage>
,其中数字 1 对应于 100%(完全不透明度)。RGBa 的例子
rgba(51, 170, 51, .1) /* 10% opaque green */ rgba(51, 170, 51, .4) /* 40% opaque green */ rgba(51, 170, 51, .7) /* 70% opaque green */ rgba(51, 170, 51, 1) /* full opaque green */
一个小例子,展示了如何使用rgba
。
截至 2018 年,几乎每个浏览器都支持rgba
语法 。
最简单的方法是使用 2 个 div,1 个带背景,1 个带文本:
#container {
position: relative;
width: 300px;
height: 200px;
}
#block {
background: #CCC;
filter: alpha(opacity=60);
/* IE */
-moz-opacity: 0.6;
/* Mozilla */
opacity: 0.6;
/* CSS3 */
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#text {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div id="container">
<div id="block"></div>
<div id="text">Test</div>
</div>
仅限少用户:
如果你不喜欢使用 RGBA 设置颜色,而是使用 HEX,那么就有解决方案。
你可以使用 mixin:
.transparentBackgroundColorMixin(@alpha,@color) {
background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}
并使用它像:
.myClass {
.transparentBackgroundColorMixin(0.6,#FFFFFF);
}
实际上这就是内置的 Less 函数也提供了:
.myClass {
background-color: fade(#FFFFFF, 50%);
}