CSS不透明度覆盖其他图层

7
我有一个问题...我的头部类(class)如下所示:
.header{
    background-color:#626262;
    width:250px;
    height:745px;
    opacity:0.4;
    filter:alpha(opacity=40); /* For IE8 and earlier */
}

这个类里面包含了以下这些类...

.logo{
    background-color:#626262;
    opacity:1.0;
    filter:alpha(opacity=100); /* For IE8 and earlier */
    color:#FFF;
    font-size:28px;
    padding-top:125px;
    margin-left:20px;
}

.navigation{
    background-color:#626262;
    opacity:1.0;
    filter:alpha(opacity=100); /* For IE8 and earlier */
    color:#FFF;
    margin-left:20px;
    text-align:left;
    margin-bottom: 125px;
}

.navigation ul{
    list-style:none;
    padding-left:0;
    padding-top:35px;
}

.navigation ul li{
    padding-bottom:20px;
    font-size:24px;
}

.navigation li a{
    color:#FFF;
    text-decoration:none;
}

.social{
    width:100%;
    font-size:18px;
    height: 50px;
    line-height: 72px;
    padding-right: 10px;
}

.social ul {
    list-style-type: none;
    margin: 0;
    padding: 0 0 0 8px;
}

.social li {
    float: left;
}

.social ul .facebook a {
    color: #FFFFFF;
    display: block;
    text-decoration: none;
    background-image: url(http://jamessuske.com/karl/images/facebook.png);
    background-position: center right;
    background-repeat: no-repeat;
    padding-right:65px;
}

.social ul .facebook a:hover {
    background-image: url(http://jamessuske.com/karl/images/facebook_hover.png);
}

.social ul .twitter a {
    color: #FFFFFF;
    display: block;
    text-decoration: none;
    background-image: url(http://jamessuske.com/karl/images/twitter.png);
    background-position: center right;
    background-repeat: no-repeat;
    padding-right:70px;
}

.social ul .twitter a:hover {
    background-image: url(http://jamessuske.com/karl/images/twitter_hover.png);
}

.social ul .pinterest a {
    color: #FFFFFF;
    display: block;
    text-decoration: none;
    background-image: url(http://jamessuske.com/karl/images/pinterest.png);
    background-position: center right;
    background-repeat: no-repeat;
    padding-right:70px;
}

.social ul .pinterest a:hover {
    background-image: url(http://jamessuske.com/karl/images/pinterest_hover.png);
}

这些图层的透明度被降低到了0.4…我的问题是如何使这些图层不再有0.4的透明度?希望我的表述清晰…你可以参考http://www.yourthirdeye.ca/上的例子。


所以现在我们已经到了2015年,似乎我们仍然面临着这个普遍问题的远非理想的解决方案?我想要在平铺纹理上创建一个平滑的渐变,以创建一种光照效果,而不必使用大型(或缩放)图像,然后将完全不透明、可变大小和响应式内容放在其上。我应该提出一个新问题吗? - Shavais
1个回答

14

如果只是需要部分透明的背景,您可以使用 rgba(),像这样:

.header{
    background-color: #626262;
    background-color: rgba(98, 98, 98, 0.4);
    width:250px;
    height:745px;
}

这种方法在旧版浏览器(例如IE8及更早版本)中无效,因此background-color设置了两次——第一次是后备方案。

还有一些CSS技巧可供使用,但它们有缺点。如果以上解决方案适用于您,则我建议您采用该方案。

如果不行,可以参考以下链接:

http://css-tricks.com/non-transparent-elements-inside-transparent-elements/

http://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/


1
+1 比我快 :) 如果你想增加兼容性(IE8,IE7),可以使用半透明PNG图像作为背景,而不是使用rgba。然而,rgba更加流畅。 - Jen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接