我正在尝试在图像顶部添加一个半透明的颜色层作为 div 的背景。我尝试了以下方法:
background: url('myImage.jpg'), rgba(0,0,0,0.5);
还
background-image:url('myImage.jpg');
background-color:rgba(0,0,0,0.5);
但在这两种情况下,只显示图像。我知道我可以用颜色将这个 div 包装在另一个 div 中,但是有什么方法可以在一个 div 中完成所有操作吗?
我正在尝试在图像顶部添加一个半透明的颜色层作为 div 的背景。我尝试了以下方法:
background: url('myImage.jpg'), rgba(0,0,0,0.5);
还
background-image:url('myImage.jpg');
background-color:rgba(0,0,0,0.5);
但在这两种情况下,只显示图像。我知道我可以用颜色将这个 div 包装在另一个 div 中,但是有什么方法可以在一个 div 中完成所有操作吗?
使用:after
选择器。它可以解决你的问题。
.container:after {
content: "";
display: block;
width: 300px;
height: 200px;
background-color:rgba(0,0,0,0.5);
}
示例在这里 - http://jsfiddle.net/ecYrS/2/
CSS 不支持您在本地尝试执行的操作 - 您需要在图像上放置一个 RGBa 层。您基本上想要在背景图像上添加一个半透明层,但 CSS 将在背景图像上设置优先级,基本上覆盖任何背景颜色。
一个想法是你可以尝试一个 alpha 透明的 PNG,但我不是 100% 的。
@Flynn 面临与您提到的相同的问题。我想出了一个非常方便的解决方案。
不过有办法!
我们可以使用渐变,而不是使用 rgba() 或 hsla() 使用透明泛色。渐变在技术上是背景图像,因此不受堆叠顺序中它们不能排在首位(位于顶部)的规则的约束。
/* Working method */
.tinted-image {
background:
/* top, transparent red, faked with gradient */
linear-gradient(
rgba(255, 0, 0, 0.45),
rgba(255, 0, 0, 0.45)
),
/* bottom, image */
url(image.jpg);
}
欲了解更多信息,请浏览以下链接: