CSSのbackground-colorとbackground-imgを同時に使って、背景画像を暗くする設定

要素の背景画像の上に、文字を配置したときに、その文字を読みやすくするために、CSSで黒の半透明マスク処理をして、 背景画像を暗くしましたが、この設定が意外と手間が必要でした。

困った点は3つ

まず、単に、background-color と background-img を併用しても、背景画像が暗くなりません。これは、背景画像の下に、background-color の色が潜り込んでしまうのが原因。

これだと、:before の擬似要素を使って、背景画像の上に半透明の黒い色を配置できます。ただし、画像の上に配置した文字まで、暗くなってしまいます。これが困った2つ目の点。

そこで見つけたのが、こちらの情報。感謝です。

これを解決するために、上の情報を参考に、CSSを工夫したのですが、すると次に困った(3つ目)のが、display abslute を指定するために、要素の高さが成り行きでは無効になってしまい、次の要素と重なってしまいます。

これについては、要素の高さを直接、CSSに heightで指定して解決しました。パソコン表示と、スマートフォン表示のときでは、要素の高さが変わるので、メディアクエリの条件分岐を行い、指定する高さを切り替えています。