首页  >  问答  >  正文

更改背景图像的不透明度,同时保留子元素的可见性

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

示例

页脚中的所有链接都需要自定义项目符号(背景图像),并且自定义项目符号的不透明度应为 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%;
}


P粉354602955P粉354602955399 天前651

全部回复(1)我来回复

  • P粉574268989

    P粉5742689892023-10-11 13:07:40

    您可以将 CSS linear-gradient()rgba() 结合使用。

    div {
      width: 300px;
      height: 200px;
      background: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,.5)), url("https://i.imgur.com/xnh5x47.jpg");
    }
    span {
      background: black;
      color: white;
    }
    <div><span>Hello world.</span></div>

    回复
    0
  • 取消回复