html - PNG 图像的透明度与 CSS 背景属性重叠

标签 html css

PNG图像是侧边栏,黑色部分是CSS背景,PNG的alpha似乎覆盖了黑框。

enter image description here

当我更改图像的不透明度时,您可以看到该框贯穿整个图像,但仍被覆盖,我仔细检查了边栏的透明度,但它设置正确。

enter image description here

它在 Google Chrome 和 Firefox 上执行此操作。

相关 CSS:

.sidebar{
    background: url('side1.png') lightgray 10% 50%;
    background-repeat: no-repeat;
    background-size: 100%;
    height: 600px;
    width: 173px;
    z-index:1;
    float:left;
    position:relative;
    opacity:0.5;
}

.header{
    background: black;
    background-position: top right;
    float:right;
    width:100%;
    height: 200px;
    z-index:0;
    position:absolute;
}

相关的 HTML:

<div class="sidebar">
    <img src="images/pic1.png" class="icon">
</div>

<div class="header"></div>

最佳答案

这似乎只是在 float 内容后面进行除法的一个简单案例。大多数人没有意识到,仅仅因为那里有 float 内容,分区仍然向后扩展一直到边缘,就像没有 float 内容时的正常情况一样 那里。

该部门也像预期的那样占用了最大可用空间。 float 内容只是推送内容,此时还没有。使您的侧边栏部分不透明,这个问题变得明显,因为您现在可以看到图像后面的那个框。比如说,一个快速的解决方法是为分区添加一个边距,以将其从侧边栏后面推出,如下所示:

.header {
    margin-left: 173px; /* The width of your sidebar */
}

但是请注意,您必须将此边距应用到所有需要从下方推出的 block 级元素的左侧。因此,将所有正确的内容放入一个被推出的盒子中是有意义的,以防止混淆。


编辑:您的黑色背景没有在侧边栏图像上显示的原因是您在此处将其背景设置为浅灰色:

background: url('side1.png') lightgray 10% 50%;

这会在图像后面放置一个浅灰色背景,而不是让图像的透明部分穿过它后面的任何部分。尝试删除它:

background: url('side1.png') 10% 50%;

参见 jsFiddle example .

关于html - PNG 图像的透明度与 CSS 背景属性重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202028/

相关文章:

javascript - 使用 JavaScript 插入元素的最佳方式

html - 添加 style.css 后 Wordpress 不工作

javascript - 使用 jQuery 悬停时工具提示的 CSS 动态位置

c# - ASP.NET MVC 4 应用程序中的 CSS 问题

javascript - 使用 jquery 查找位置为 top > x 的对象

html - 为 HTML5 Canvas 上的透明圆弧修改渐变的透明度

javascript - 中间的 Ion.RangeSlider 颜色

css - 在 HTA 中失去焦点时,按钮的虚线边框变为两条实线边框

css - 在文本修饰中包含子跨度元素

css 在悬停时切换背景图片