【问题标题】:Change background image opacity更改背景图像不透明度
【发布时间】:2012-09-18 07:48:59
【问题描述】:

我有一个带有文本块的 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>

但它不起作用。

【问题讨论】:

  • 使用opacity:0.5//or something
  • 你在哪个浏览器上测试这个?
  • 你在测试哪个浏览器呢?以及stackoverflow.com/questions/637921/… 的可能重复项
  • 你在双引号中使用了双引号,试试 style="background-image:url('image.jpg');opacity:0.5;"

标签: html background-image opacity


【解决方案1】:

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

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

【讨论】:

  • 2021 更新:background 现在似乎支持rgba()。请参阅@Nur Nas 或 @Shreyas Shrawage 的答案。
【解决方案2】:

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

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;
}​

【讨论】:

  • 我喜欢它 - 谢谢。唯一的问题是,我认为您不能以编程方式更改背景图像 - 您必须将其硬编码到 css 文件中...
  • 您必须将其硬编码到 css 文件中>>也许您可以将其添加为内联样式 ... style="background-image: url('image.jpg')"
【解决方案3】:

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

filter:alpha(opacity=30);
-moz-opacity:0.3;
-khtml-opacity: 0.3;
opacity: 0.3;

【讨论】:

    【解决方案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>
    

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

    【讨论】:

      【解决方案5】:

      如今,只需使用 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 不透明度)混合到背景图像中。了解更多here (W3S)

      【讨论】:

      • 很好的答案!更清洁的解决方案,但不幸的是不适用于 IE。
      • @tsvikas 在 IE 上没有任何作用。老实说,我在编写网页时已经不再考虑 IE,除非它是关于保护数据的。 :-P
      • @progyammer 拥有 8% 的市场份额,它真的不值得再支持它所需的开销。我想说的是,微软用专有版本垄断了浏览器市场,但他们输了。 (谢天谢地。)我们将看看 Edge 是否会对 Chrome 的位置产生重大影响。
      • @BobRodes 真棒我的客户会理解这一点。
      • 哇——我用background-blend-mode:darken;background-color:rgba(0,0,0,0.6) 这正是我需要的……我不知道我是怎么错过这个css属性的……但这就是我想要的为!
      【解决方案6】:

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

      $bgimage = '[some image url];
      background-image: url('<?php echo $bgimage; ?>');
      

      【讨论】:

        【解决方案7】:

        我所做的是:

        <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;
        }
        

        【讨论】:

          【解决方案8】:

          尝试这样做:

          .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;
          }
          &lt;div class="bg_rgba"&gt;&lt;/div&gt;

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

          【讨论】:

            【解决方案9】:

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

            .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;
            }
            &lt;div class='bg_rgba'&gt;&lt;/div&gt;

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

            【讨论】:

              猜你喜欢
              • 2021-10-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-09-20
              • 2011-11-10
              • 2016-09-06
              • 2011-10-16
              相关资源
              最近更新 更多