是否可以设置背景图像的不透明度而不影响子元素的不透明度?

例子

页脚中的所有链接都需要一个自定义项目符号(背景图像),自定义项目符号的透明度应该是50%。

HTML

<div id="footer">
    <ul>
        <li><a href="#">Link 1</a></li>
        <li><a href="#">Link 2</a></li>
        <li><a href="#">Link 3</a></li>
        <li><a href="#">Link 4</a></li>
        <li><a href="#">Link 5</a></li>
    </ul>
</div>  

CSS

#footer ul li {
    background: url(/images/arrow.png) no-repeat 0 50%;
}  

我的努力

我尝试将列表项的不透明度设置为50%,但随后链接文本的不透明度也是50% -似乎没有一种方法来重置子元素的不透明度:

#footer ul li {
    background: url(/images/arrow.png) no-repeat 0 50%;
    /* will also set the opacity of the link text */        
    opacity: 0.5;
}

我也尝试使用rgba,但这对背景图像没有任何影响:

#footer ul li {
    /* rgba doesn't apply to the background image */
    background: rgba(255, 255, 255, 0.5) url(/images/arrow.png) no-repeat 0 50%;
}

当前回答

不幸的是,在写这个答案的时候,没有直接的方法来做到这一点。你需要:

使用半透明图像作为背景(容易得多)。 在你想要不透明的子元素旁边添加一个额外的元素(如div),添加背景,使其半透明后,将其定位在提到的子元素后面。

其他回答

你可以把图片放在div:after或div:before中,并设置虚拟div的不透明度

div:after {
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
  opacity: 0.25;
}

在这里找到 http://css-tricks.com/snippets/css/transparent-background-images/

只是为了补充以上..你可以使用alpha通道与新的颜色属性,例如。Rgba(0,0,0,0)好的,这是黑色的但不透明度为零所以作为父元素它不会影响子元素。这只适用于Chrome, FF, Safari和....我瘦O。

将你的十六进制颜色转换为RGBA

我们可以通过使用rgba color来解决不透明度问题

例如"background-color: rgba(0,0,0,0.5)"

示例:

以前的Css:

 .login-card {
  // .... others CSS
  background-color: #121e1b;
  opacity: 0.5;
}

To :

 .login-card {
      // .... others CSS
      background-color: rgba(0, 0, 0, 0.5);
    }
#footer ul li
     {
       position:relative;
       list-style:none;
     }
    #footer ul li:before
     {
       background-image: url(imagesFolder/bg_demo.png);
       background-repeat:no-repeat;
       content: "";
       top: 5px;
       left: -10px;
       bottom: 0;
       right: 0;
       position: absolute;
       z-index: -1;
       opacity: 0.5;
    }

您可以试试这段代码。我认为这是可行的。您可以访问演示

你可以使用CSS线性梯度()与rgba()。

div { 宽度:300 px; 身高:200 px; 背景:线性梯度(rgba(255,255,255,.5), rgba(255,255,255,.5)), url("https://i.imgur.com/xnh5x47.jpg"); } 跨度{ 背景:黑色; 颜色:白色; } < div > < span > Hello world。< / span > < / div >