向壁虚造

WEBサイト作成のためのプログラミング備忘録

CSSで画像を暗くしてみよう

編集ソフトを使わずにCSSで画像を暗くするテクニック

サイトのヘッダーや広告など画像の上にテキストを配置する時、文字色が目立たず読みづらくなってしまうことがあります。

image_white_text

そんな時は、画像を暗くし、文字色を明るくすることで、テキストをくっきりと目立たせることができます。

CSSで背景を暗くすれば文字が見やすくなる

しかし、編集ソフトでいちいち暗く加工しながら、見栄えを調整するのは非常に面倒くさい。

実は画像を暗くする程度であれば、CSSで簡単に操作可能です。

今回は、CSSで画像を暗くする方法についてまとめてみました。

※画像を明るくしたり別の色に調整したい…という方も、基本的に方法は同じなので、このまま読み進めてみてください。

1.CSSで画像を暗くする方法

画像を暗く表示させる場合、CSSでは画像を直接操作するのではなく、暗い色の背景に画像を透過させる…といった方法を取るのが一般的です。

暗い背景に画像を透過

上のようなイメージにするには、まず画像タグimgdiv等で囲んでおきます。

次にCSSで、imgを囲んでいるdivに暗い背景色を指定しましょう。

このままでは、画像は暗くなりません。

divで作った暗い背景に画像を透過させるにはopacityプロパティを使います。

opacityは適用した要素を透明にするCSSプロパティです。

値は「0.1」~「0.9」間で調整し、「0」に近づくほど透明度が高くなります。

opacityで透明度を調整

あまり透明度を高くしすぎると、肝心の画像が目立たなくなるため「0.6」~「0.8」付近がおすすめです。

CSSで暗くした画像の上にテキストを置くにはpositionプロパティを活用します。

まず、先ほど透過したimgが入っているdivの中にpを追加しておきましょう。

次にCSSでテキストの位置調整をします。

positionで位置調整する場合は、前提として親要素(div)のpositionstatic以外の値に変更しておく必要があります。

最後にテキスト(p)のpositionabsoluteに指定し、topleftなどで好きな位置に配置してください。

画像の中央にテキストを持っていきたい場合は、上記のコードのようにtopleftを50%に指定し、さらにtransform: translateで基準位置を整えます。

CSSで暗くした画像の上にテキストを配置

上のようになれば成功です。

2.CSSで背景画像を暗くする方法

画像をimgではなくbackgroundで表示させている場合、暗くする方法が異なります。

imgの場合は背後の暗い親要素に画像を透過させていましたが、backgroundの場合は暗い色で透過させたフィルターを上から被せるイメージです。

背景画像に暗いフィルターを重ねる

imgを暗くする方法とは発想が逆なので注意してください。

順を追って解説します。

まず、背景画像を指定した要素を準備してください。

上のコードのように、あらかじめpositionralativeに指定しておきましょう。

次に疑似要素::beforeを使って、暗い色のフィルターを上から重ねます。

上のコードではpositionおよびtoprightで位置・サイズを調整しています。

toprightの値を0にしているのは、背景画像の大きさピッタリになるようフィルターを広げるためです。

backgroundをCSSで暗くした結果

ちなみに::beforeを使う時はcontentプロパティの設定を忘れないように。

要素の中身が無くても必ず「content: ""」を指定してください。

では、今度は暗くした背景画像の上にテキストを置いてましょう。

まず、背景画像が指定されている要素の中に段落を入れます。

これだけでも画像の上にテキストが表示されます。

すでにdiv.bg_imagepositionrelativeに指定されているので、テキストを位置調整する場合はpositionを使います。

上のコードでは、テキストを画像の中央に配置するように指定しています。

暗くした背景画像の上にテキストを表示

また複数行にしたい場合には、以下のように複数テキストを包括する要素を挿入してください。

個々のテキストではなく、新たに挿入したテキストを囲む要素(div)に位置調整を適用させます。

CSSで暗くした背景画像の上に複数テキスト

このままでは少し味気が無いので、個別のテキストに強弱をを加えてみましょう。

画像の上のテキストをアレンジ

ちょっとした広告やアイキャッチ画像ならCSSで手軽で出来ますね。

まとめ

今回はCSSで画像を暗くする方法について解説しました。

暗い背景に透過させたり、暗いフィルターを重ねたり…といった感じに画像を直接操作できるわけではありませんが、数行のコードで済むため画像をいちから編集し直すよりは効率的かと思います。

最後にCSSで画像を暗くする方法を以下にまとめておきます。

  • 画像(img)を暗くするには、opacityを使って暗い背景の親要素に透過させる
  • テキストを配置する時はpositionを使おう
  • 背景画像(background)を暗くするには、疑似要素::beforeを使って暗いフィルターを重ねる