CSS背景不透明度

Joh*_*eal 645 html css opacity

我使用类似于以下代码的东西:

<div style="opacity:0.4; background-image:url(...);">
    <div style="opacity:1.0;">
        Text
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我预计这会使背景的不透明度为0.4,文本的不透明度为100%.相反,它们的不透明度均为0.4.

Ali*_*guy 1097

儿童继承不透明.如果他们不这样做,那就太奇怪了.

您可以使用半透明png作为背景图像,或使用RGBa(a表示alpha)颜色作为背景颜色.

例如,50%褪色的黑色背景:

<div style="background-color:rgba(0, 0, 0, 0.5);">
   <div>
      Text added.
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 说"儿童继承不透明"是不正确的.他们没有.只是如果一个孩子包含在具有不透明度的父级中,则该子级将具有不透明度:1,但是父级将其不透明度应用于其自身,包括其所有子级. (19认同)
  • 因为什么时候"奇怪而且不方便"被阻止它成为CSS的默认设置?:d (10认同)
  • 可以在此处找到更深入的教程:http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/ (9认同)
  • 是否可以通过单独的css规则设置alpha? (9认同)
  • 不,它是颜色值的单个通道,颜色值分配给css规则. (3认同)
  • @jayarjo`rgba(255,255,255,0.6)`相当于色彩中性淡出背景. (3认同)
  • @Protectorone 另外,IE11 不支持 rgba(.., .., .., **50%**) 。请改用 0.5。 (2认同)

dan*_*els 171

您可以使用CSS 3 :before具有半透明背景,只需一个容器即可完成此操作.使用这样的东西

<article>
  Text.
</article>
Run Code Online (Sandbox Code Playgroud)

然后应用一些CSS

article {
  position: relative;
  z-index: 1;
}

article::before {
  content: "";
  position: absolute;
  top: 0; 
  left: 0;
  width: 100%; 
  height: 100%;  
  opacity: .4; 
  z-index: -1;
  background: url(path/to/your/image);
}
Run Code Online (Sandbox Code Playgroud)

示例:http://codepen.io/anon/pen/avdsi

注意:您可能需要调整z-index值.

  • 我更喜欢这种解决方案,而不是rgba,因为它适用于图像和背景颜色. (9认同)
  • 接受的答案是正确的,但这个创造性的解决方案更直接地回答了OP.将背景图像编辑为半透明的png/gif /等等更为正确.不透明度需要更多的渲染效果. (4认同)
  • @dudewad OP希望不透明度应用于背景图像. (4认同)

小智 43

可以使用以下方法解决您的问题:

  1. CSS Alpha透明度方法(在IE 8中不起作用)

    #div{background-color:rgba(255,0,0,0.5);}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 根据您的选择使用透明png图像作为背景.

  3. 使用以下css代码段创建跨浏览器Alpha透明背景.以下是#000000@ 0.4%不透明度的示例

    .div {
        background:rgb(0,0,0);
        background: transparent\9;
        background:rgba(0,0,0,0.4);
        filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000,endColorstr=#66000000);
        zoom: 1;
    }
    .div:nth-child(n) {
        filter: none;
    }
    
    Run Code Online (Sandbox Code Playgroud)

有关此技术的更多详细信息,请参阅此文章,其中包含一个在线CSS生成器.

  • @Wilt css规则background-color是背景的子规则.与边框,边距和填充类似,所有背景子规则都可以在一行内设置,而不是单独设置.在这个实例中使用背景是你想要的,所以你可以覆盖其他背景子规则. (5认同)

Pet*_*ada 29

我会做这样的事情

<div class="container">
  <div class="text">
    <p>text yay!</p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container {
    position: relative;
}

.container::before {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background: url('/path/to/image.png');
    opacity: .4;
    content: "";
    z-index: -1;
}
Run Code Online (Sandbox Code Playgroud)

应该管用.这假设你需要有一个半透明的图像btw,而不是一个颜色(你应该只使用rgba).还假设您不能在photoshop中预先改变图像的不透明度.


ila*_*erg 9

你可以使用sass transparentize,我发现它是最有用和简单的使用.

transparentize(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.4)
transparentize(rgba(0, 0, 0, 0.8), 0.2) => rgba(0, 0, 0, 0.6) 
Run Code Online (Sandbox Code Playgroud)

查看更多:http://sass-lang.com/documentation/Sass/Script/Functions.html#transparentize-instance_method


小智 7

.transbg{/* Fallback for web browsers that don't support RGBa */
background-color: rgb(0, 0, 0);
/* RGBa with 0.6 opacity */
background-color: rgba(0, 0, 0, 0.6);
/* For IE 5.5 - 7*/
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
/* For IE 8*/
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";}
Run Code Online (Sandbox Code Playgroud)


zil*_*ods 5

这是因为内部 div 具有其嵌套的 div 的 100% 不透明度(其不透明度为 40%)。

为了规避它,您可以采取一些措施。

您可以创建两个单独的 div,如下所示:

<div id="background"></div>
<div id="bContent"></div>
Run Code Online (Sandbox Code Playgroud)

设置所需的 CSS 不透明度和其他背景属性,并使用 z-index 属性 ( z-index ) 来设置 bContent div 的样式和位置。有了这个,您可以将 div 放置在背景 div 的上方,而不会破坏它的不透明度。


另一种选择是RGBa。这将允许您嵌套 div 并仍然实现 div 特定的不透明度。


最后一个选项是简单地在您选择的图像编辑器中制作您想要的颜色的半透明 .png 图像,将背景图像属性设置为图像的 URL,然后您就不必担心弄乱使用 CSS 并失去嵌套 div 结构的功能和组织。