我可以仅将opacity
属性分配给div
的background
属性,而不是应用于其上的文本吗?
我已经尝试过:
background: #CCC;
opacity: 0.6;
但这并没有改变不透明度。
看起来你想使用透明背景,如果是这样的话,你可以尝试使用 rgba()
函数:
rgba(R, G, B, A)
R(红色)、G(绿色)和 B(蓝色)可以是整数或百分比,其中数字 255 对应于 100%。A(Alpha 通道)可以是介于 0 和 1 的数值或百分比,其中数字 1 对应于 100%(完全不透明)。
RGBa 示例
background: rgba(51, 170, 51, .1) /* 10% opaque green */ background: rgba(51, 170, 51, .4) /* 40% opaque green */ background: rgba(51, 170, 51, .7) /* 70% opaque green */ background: rgba(51, 170, 51, 1) /* full opaque green */
这是一个小的示例,展示了如何使用
rgba
。截至2018年,实际上每个浏览器都支持
rgba
语法。
#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>
仅适用于Less用户:
如果您不喜欢使用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%);
}
background-color: rgba(red($primary), green($primary), blue($primary), 0.25);
- TinyTiger我也遇到了同样的问题。我想要一个完全透明的背景颜色。只需使用此代码即可;对我来说效果很好:
我遇到了同样的问题。我想要一个完全透明的背景颜色。只需使用这段代码,它对我非常有效:
rgba(54, 25, 25, .00004);
您可以在此网页的左侧(联系表格区域)查看示例。
rgba(54, 25, 25, 0);
?大多数现代浏览器直到第15个小数位才会四舍五入,但视觉上你的99.996%透明度和使用100%透明度之间的差别很可能非常小。 - Ryandiv {
-khtml-opacity: .50;
-moz-opacity: .50;
-ms-filter: ”alpha(opacity=50)”;
filter: alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity: .50;
}
我的技巧是创建一个带有颜色的透明.png,并使用background:url()
。
对于任何阅读这个帖子的人,我写了一个名为thatsNotYoChild.js的脚本,可以自动解决这个问题:
http://www.impressivewebs.com/fixing-parent-child-opacity/
基本上,它将子元素分离出来,但保持元素在页面上相同的位置。
一个很好的方法是确实使用CSS 3。
在页面顶部创建一个带有类名(例如supersizer)的div:
然后设置以下CSS属性:
.supersizer {
background: url("http://fc06.deviantart.net/fs70/f/2012/099/d/f/stackoverflow_16x16_icon_by_muntoo_stock-d4vl2v4.png") no-repeat center center fixed;
width: 100%;
height: 100%;
position: fixed;
z-index: -1;
opacity: 0.5;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
top: 0;
}
<div class="supersizer"></div>
使用:
background:url("location of image"); // Use an image with opacity
这个方法在所有浏览器中都有效。
rgba
,但可以在任何地方运行。 - thirtydot