用于background-blend-mode
简单的色调
您可以使用background-blend-mode
css 属性:
.background-tint {
background-color: rgba(200,100,0,.5); /* Tint color */
background-blend-mode: multiply;
}
将它放在任何带有背景图像的元素上,你就可以开始了。
该属性在不包括 IE 11 的现代浏览器中得到很好的支持。对于不支持的浏览器,您可以使用polyfill。
工作演示
其他选项
用于filter
复杂的色调
您可以使用filter
css 属性:
.background-tint {
filter: sepia(100%) saturate(200%) brightness(70%) hue-rotate(330deg);
}
将它放在任何带有背景图像的元素上,你就可以开始了。为了改变颜色改变hue-rotate
值。
该属性在不包括 IE 11 的现代浏览器中得到很好的支持。
工作演示
使用平面线性渐变和多背景叠加
.background-tint {
background-image:
linear-gradient( rgba(0,0,0,.5), rgba(0,0,0,.5) ),
url('http://placehold.it/420')
}
我认为这是最广泛使用的技术,但它具有硬编码的缺点,即您不能只上课,将其粘贴在元素上并进行着色。
你可以把它变成一个 less 或 sass mixin,比如:
less
.background-tint(@tint-color, @image-url) {
background-image:
linear-gradient( @tint-color, @tint-color ),
url( @image-url )
}
sass
@mixin background-tint($tint_color, $image_url) {
background-image:
linear-gradient( $tint_color, $tint_color ),
url( $image_url )
}
工作演示
使用透明背景
.background-tint { position: relative; }
.background-tint::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.5);
}
此方法具有适用于大多数浏览器的优点,并且只是您添加到任何元素的一个不错的类。不利的一面是,如果您在该元素中还有其他任何内容,则必须将其包装在具有某种定位的 div 中position: relative
效果最好。
例子:
<div class="background-tint">
<div class="u-relative">Some text here</div>
</div>
.u-relative { position: relative; }
工作演示