background-blend-mode
シンプルな色合いに使用
background-blend-mode
cssプロパティを使用できます。
.background-tint {
background-color: rgba(200,100,0,.5); /* Tint color */
background-blend-mode: multiply;
}
背景画像のある要素に配置すれば、準備は完了です。
このプロパティは、IE 11を含まない最新のブラウザーで十分にサポートされています。サポートされていないブラウザーの場合は、ポリフィルを使用できます。
作業デモ
別のオプション
filter
複雑な色合いに使用
filter
cssプロパティを使用できます。
.background-tint {
filter: sepia(100%) saturate(200%) brightness(70%) hue-rotate(330deg);
}
背景画像のある要素に配置すれば、準備は完了です。色を変更するには、hue-rotate
値を変更します。
このプロパティは、IE11を含まない最新のブラウザーで十分にサポートされています。
作業デモ
フラットな線形グラデーションと複数の背景オーバーレイを使用する
.background-tint {
background-image:
linear-gradient( rgba(0,0,0,.5), rgba(0,0,0,.5) ),
url('http://placehold.it/420')
}
これは最も広く使用されている手法だと思いますが、ハードコーディングされるという欠点があります。つまり、クラスを取得して要素に貼り付けて色合いを付けることはできません。
これをlessまたはsassミックスインにすることができます。
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; }
作業デモ