46

我有一个带有文本块的 div 元素和一个在其中设置背景图像的父 div。现在我想降低背景图像的不透明度。请建议我如何做到这一点。

提前致谢。

编辑:

我希望通过编辑 html 内容来改变我的博客文章查看 blogger.com 的方式。html 代码如下所示:

<div>
 //my blog post
</div>

我试图用一个 div 元素包围上面的整个代码,并分别设置每个 div 的不透明度,如下所示:

<div style="background-image:url("image.jpg"); opacity:0.5;">
<div style="opacity:1;">
 //my blog post
</div>
</div>

但它不起作用。

4

9 回答 9

70

如今,只需使用 CSS 属性"background-blend-mode"就可以做到这一点。

<div id="content">Only one div needed</div>

div#content {
    background-image: url(my_image.png);
    background-color: rgba(255,255,255,0.6);
    background-blend-mode: lighten;
    /* You may add things like width, height, background-size... */
}

它将背景颜色(白色,0.6 不透明度)混合到背景图像中。在此处了解更多信息 (W3S)

于 2016-11-01T19:09:37.307 回答
31

您不能直接在背景图像上使用透明度,但您可以通过以下方式实现此效果:

http://jsfiddle.net/m4TgL/

HTML:

<div class="container">
    <div class="content">//my blog post</div>
</div>​

CSS:

.container {  position: relative; }

.container:before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1;
    background-image: url('image.jpg');
   opacity: 0.5;
}

.content {
    position: relative; 
    z-index: 2;
}​
于 2012-09-26T16:35:58.030 回答
16

尝试这样做:

.bg_rgba {
  background-image: url(https://picsum.photos/200);
  background-color: rgba(255, 255, 255, 0.486);
  background-blend-mode: overlay;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
<div class="bg_rgba"></div>

在我的情况下工作。您可以根据需要减少或增加背景颜色的 alpha 值。

于 2020-08-19T09:54:27.093 回答
11

没有什么叫做背景不透明度。不透明度应用于元素、其内容及其所有子元素。并且这种行为不能仅仅通过覆盖子元素的不透明度来改变。

孩子与父母的不透明度一直是一个长期存在的问题,最常见的解决方法是使用rgba(r,g,b,alpha)背景颜色。但在这种情况下,由于它是背景图像,因此该解决方案将不起作用。一种解决方案是将图像生成为具有图像本身所需不透明度的 PNG。另一种解决方案是将子 div 取出并使其绝对定位。

于 2012-09-26T16:19:20.113 回答
4

您可以创建多个 div 并执行以下操作:

<div style="width:100px; height:100px;">
   <div style="position:relative; top:0px; left:0px; width:100px; height:100px; opacity:0.3;"><img src="urltoimage" alt=" " /></div>
   <div style="position:relative; top:0px; left:0px; width:100px; height:100px;"> DIV with no opacity </div>
</div>

我做了几次......简单但有效......

于 2015-03-18T20:29:22.413 回答
4

你也可以简单地使用这个:

.bg_rgba {
  background: linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.9)), url('https://picsum.photos/200');
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
<div class='bg_rgba'></div>

您可以根据自己的喜好更改颜色的不透明度。

于 2021-01-30T03:54:36.403 回答
0

响应先前的评论,如果 CSS 在您的 php 页面中而不是在 css 样式表中,您可以在“容器”示例中通过变量更改背景。

$bgimage = '[some image url];
background-image: url('<?php echo $bgimage; ?>');
于 2017-04-27T20:03:18.003 回答
-1

我所做的是:

<div id="bg-image"></div>
<div class="container">
    <h1>Hello World!</h1>
</div>

CSS:

html {
    height: 100%;
    width: 100%;
}
body {
    height: 100%;
    width: 100%;
}
#bg-image {
    height: 100%;
    width: 100%;
    position: absolute;
    background-image: url(images/background.jpg);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    opacity: 0.3;
}
于 2017-07-07T01:47:02.850 回答
-3

你可以通过简单的代码做到这一点:

filter:alpha(opacity=30);
-moz-opacity:0.3;
-khtml-opacity: 0.3;
opacity: 0.3;
于 2013-04-27T05:28:26.090 回答