我有一个通过CSS设置的背景图像。
html {
background-image: url('../img/cello.jpg');
background-attachment: fixed;
background-size: 100%;
}
我计划有一个不同的背景图像为网站的不同页面:所以上面的文字要清晰易读,这一点很重要。现在我在中间的#main content框中使用了半透明的黑色背景,这样可以确保易读性:
#main {
background: rgba(0, 0, 0, 0.5);
}
我真正想做的是在整个背景图像上有一个半透明的背景,因为黑盒子看起来有点笨重,我试过做一个<div id=#tint>
,它包含整个HTML文档,并给rgba(0,0,0,0.5)到#色调,但那根本不起作用--我可以不做任何改变,也可以让整个背景变成一个简单的灰色,没有任何背景图像可见。这是完全不可能的吗?
6条答案
按热度按时间xxb16uws1#
使用
background-blend-mode
进行简单着色可以使用
background-blend-mode
css属性:把它放在任何有背景图像的元素上,你就可以开始了。
该属性在现代浏览器中得到了很好的支持,不支持包括IE 11。对于不支持的浏览器,您可以使用polyfill。
其他选项
使用
filter
进行复杂色调可以使用
filter
css属性:一个二个一个一个
把它放在任何有背景图片的元素上,你就可以开始了。为了改变颜色,改变
hue-rotate
的值。该属性在现代浏览器中得到了很好的支持不支持,包括IE 11。
使用平坦线性渐变和多重背景叠加
我认为这是最广泛使用的技术,但它有硬编码的缺点,也就是说,你不能只取一个类,把它粘在一个元素上,然后进行着色。
你可以把它做成一个比较简单的混音,比如:
使用透明背景
这个方法的优点是可以在大多数浏览器上工作,并且是一个可以添加到任何元素的很好的类,缺点是如果你在那个元素中有任何其他内容,你必须将它 Package 在一个div中,并带有某种定位
position: relative
将是最好的。示例:
9wbgstp72#
我认为你需要创建一个覆盖元素(可能是
div
),它具有所需的半透明背景。当然,还有一个小演示:little link .
11dmarpk3#
这对我来说非常有效:
https://css-tricks.com/tinted-images-multiple-backgrounds/
根据另一个答案,你可以用现有的颜色来做这件事,比如:
jfewjypa4#
可能是
overlay
属性https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blendingoverlay但这只是个草稿,不要依赖它zlwx9yxi5#
尝试不透明度:
62lalag46#
在我看来,这是解决这个问题最简单的办法.
要增加背景色的可读性:黑色和不透明度百分比在50%到60%的范围内似乎工作得很好。