CSS不透明度只对背景颜色而不是文字就可以了吗?

Jay*_*Jay 771 css opacity

我可以将opacity属性分配给仅background属性div而不是文本吗?

我试过了:

background: #CCC;
opacity: 0.6;
Run Code Online (Sandbox Code Playgroud)

但这不会改变不透明度.

Tim*_*per 1333

听起来你想要使用透明背景,在这种情况下你可以尝试使用这个rgba()功能:

rgba(R, G, B, A)

R(红色),G(绿色)和B(蓝色)可以是<integer>s或<percentage>s,其中数字255对应于100%.A(α)可以是<number>介于0和1之间,或a <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 */ 
Run Code Online (Sandbox Code Playgroud)

一个小例子,展示了如何rgba使用.

截至2018年,几乎每个浏览器都支持rgba语法.

  • Dang ..为什么它总是让IE破坏乐趣?! (88认同)
  • 它在IE9 +中工作正常; o) (17认同)
  • @adam只是你知道,这在IE中不起作用. (8认同)
  • 是的,在大多数情况下使用rgba()都可以,但如果在css中有"background-opacity:"属性会很好,因为当"background-color:"动态设置(动态)作为输入时到管理外观面板中的设置功能,该面板已被编码为仅使用rgb(),并且您不希望在您的css中覆盖它,因为您的函数中的动态输入将无法工作.在这种情况下,添加不透明度的唯一方法是修改html.如果存在"background-opacity"属性,则不需要修改HTML代码...... (7认同)
  • background-color:rgba(54,25,25,.5); 适用于Chrome,Mozilla,IE 10 (6认同)
  • 提到rgb后备真是太棒了! (5认同)
  • 如果您使用 SASS,“透明化”允许您重用 RGB 颜色变量并仍然应用不透明度:https://codepen.io/timharbour/pen/cBLqi (3认同)
  • 如果背景是图像并且您想调整其不透明度而不影响其所有子项,该怎么办? (2认同)
  • 还有其他方法可以将其与十六进制代码一起使用吗? (2认同)

Kos*_*tas 75

最简单的方法是使用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%;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
  <div id="block"></div>
  <div id="text">Test</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 以下属性 - "position:absolute;" 必须在#text类中才能使效果起作用. (2认同)

Seb*_*ber 21

仅限LESS用户:

如果你不喜欢使用RGBA设置颜色,而是使用HEX,那么就有解决方案.

你可以使用mixin:

.transparentBackgroundColorMixin(@alpha,@color) {
  background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}
Run Code Online (Sandbox Code Playgroud)

并使用它

.myClass {
    .transparentBackgroundColorMixin(0.6,#FFFFFF);
}
Run Code Online (Sandbox Code Playgroud)

实际上这就是内置的LESS功能还提供了:

.myClass {
    background-color: fade(#FFFFFF, 50%);
}
Run Code Online (Sandbox Code Playgroud)

请参阅如何使用Less编译器将HEX颜色转换为rgba?


Hus*_*ein 16

这适用于每个浏览器

div {
    -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;
}
Run Code Online (Sandbox Code Playgroud)

如果您不希望透明度影响整个容器及其子容器,请检查此解决方法.您必须拥有一个绝对定位的孩子,并且父母位置相对较低才能达到此目的 http://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/

查看http://www.impressivewebs.com/demo-files/css-opacity/css-opacity-demo.html上的工作演示

  • 这会影响前景.OP专门询问背景. (15认同)

小智 12

我的诀窍是用颜色和用法创建一个透明的.png background:url().

  • 如果要使用旧版浏览器IMO,那是最佳解决方案。 (2认同)

小智 8

我有同样的问题.我想要100%透明的背景色,只需使用这段代码,它对我来说很有用:

rgba(54, 25, 25, .00004);
Run Code Online (Sandbox Code Playgroud)

您可以在此网页左侧看到示例(联系表单区域)

  • 如果您实际上希望100%透明,为什么不使用`rgba(54,25,25,0);`?大多数现代浏览器都不会舍入到小数点后15位,但是在99.996%透明与仅使用100%透明之间,视觉差异很可能很小。 (3认同)

小智 5

一个很好的方法是使用css3.

创建一个div宽度类 - 例如页面顶部的超级化器:

然后设置以下css-properties:

  .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;
  }
Run Code Online (Sandbox Code Playgroud)
<div class="supersizer"></div>
Run Code Online (Sandbox Code Playgroud)