• HOME > 
  • CSS > 
  • CSSで写真の階調を反転させる方法【filterプロパティi...

CSSで写真の階調を反転させる方法【filterプロパティinvert】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2025年01月06日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

CSSだけで写真の色を反転できる?

CSSのfilterプロパティのinvert()関数を使うと、画像(要素)の階調を反転させて表示することができます。

階調の反転とは元の画像の明るい部分が暗く、暗い部分が明るくなるような効果を指します。

画像編集ソフトを使うことなくCSSだけで写真をネガフィルムのように加工できます。

filterプロパティのinvertの例

filterプロパティとは?

CSSのfilterプロパティは、画像や要素に様々な視覚効果を加えることができるプロパティです。

階調の反転以外にも、セピア化や、色調変更、明るさの調整など、画像編集ソフトで加工するような処理をCSSだけで簡単に実装できるのが特徴です。

filterプロパティならびに他の関数についてはこちらのページにまとめています。

filter:invertの使い方

filterプロパティのinvert()関数は以下のように記述して使います。

filterプロパティのinvertの書き方

階調の反転度合いはパーセンテージで指定します。元の状態を0%とし、完全に反転する100%までの間で自由に数値を設定できます。

下の例ではinvertを100%に設定しているので、表示される画像は階調が完全に反転した状態になっています。

HTML

<img src="sample1.png" class="myFilter invert100">

CSS

img.myFilter.invert100{
    filter: invert(100%);
}
filterプロパティのinvert100%の例

数値による表示結果の違い

invert関数のパーセンテージによる表示結果の違いの例は下図の通りです。

filterプロパティのinvertのパーセンテージによる表示結果

grayscaleと組み合わせて白黒反転させる

filterプロパティには階調反転以外にもさまざまな効果が用意されていると言いましたが、それらは同時に使用することも可能です。

用意された関数の中のひとつであり、画像をグレースケールに変換するgrayscale関数とinvert関数を同時に適用させると画像を白黒反転させたように表示できます。

filterプロパティのinvertとgrayscaleを合わせた表示結果

下記のように複数の関数を半角スペースを空けて記述すると同時に適用させることができます。

HTML

<img src="sample1.png" class="myFilter invert100 grayscale100">

CSS

img.myFilter.invert100.grayscale100{
    filter: invert(100%) grayscale(100%);
}

filterプロパティのgrayscale関数について詳しくはこちらにまとめています。

画像をアニメーションさせながらぼかす

filterプロパティの利点のひとつとして、transitionやanimationプロパティと組み合わせることで効果をアニメーションで見せることができるという点が挙げられます。

下図のような写真を徐々にぼかすようなアニメーションは、CSSだけであっという間に実装できます。

今回作成したコードは以下の通りです。

CSS

img.myFilter.invert-anime{
    animation: invertAnime 5s infinite;
}
@keyframes invertAnime{
    0%{
        filter:invert(0%);
    }
    50%{
        filter: invert(100%);
    }
    100%{
        filter: invert(0%);
    }
}

2行目animationプロパティを使ってアニメーションを設定します。(今回は例としてアニメーションがわかりやすいようにinfiniteを指定してアニメーションが繰り返されるようにしています)

4行目@keyframesでアニメーションの動きを設定します。

5行目~徐々に画像の階調が変化していき、完全に反転したら再び元の状態へ戻るように指定しました。

animationプロパティの使い方について詳しくはこちらのページにまとめています。

まとめ

以上が、filterプロパティのinvert()関数を使ってCSSだけで写真の階調を反転させる方法です。

画像編集ソフトいらずで手軽に写真に効果与えられるので表現の幅が広がりそうですね。

広告
広告

関連する記事

サムネイル

CSSでPNG画像に影を落とす方法【filterプロパティd……

2025年01月15日
CSSでドロップシャドウをつけるには? CSSで要素に影(ドロップシャドウ)を付ける手段としては「box-shadow」や「text-shadow(テキストの場 […]
サムネイル

CSSのfilterプロパティの関数の種類と効果をまとめ【フ……

2025年01月06日
最終更新日:2025年01月15日
IEのサポートが終了したので、これまで使う機会の少なかったfilterプロパティを改めて調べたところ、CSSでの表現の幅を広げてくれる画期的なプロパティだと気づ […]
サムネイル

CSSで写真にぼかし加工を加える方法【filterプロパティ……

2025年01月06日
CSSだけで写真をぼかせる? CSSのfilterプロパティのblur()関数を使うと、画像(要素)にぼかしを加えることができます。 画像編集ソフトを使うことな […]
サムネイル

CSSで写真の明るさ(明度)を調整する方法【filterプロ……

2025年01月06日
CSSだけで画像の明度を調整できる? CSSのfilterプロパティのbrightness()関数を使うと、画像(要素)の明るさを変更することができます。 画像 […]
サムネイル

CSSで写真のコントラストを変更する方法【filterプロパ……

2025年01月06日
CSSだけで写真のコントラストを調整できる? CSSのfilterプロパティのcontrast()関数を使うと、画像(要素)のコントラストを変更することができま […]
サムネイル

CSSで写真を白黒に変更する方法【filterプロパティgr……

2025年01月06日
CSSだけで写真を白黒にできる? CSSのfilterプロパティのgrayscale()関数を使うと、画像(要素)を白黒に変更することができます。 グレースケー […]
サムネイル

CSSで写真をセピアに加工する方法【filterプロパティs……

2025年01月06日
CSSで写真をセピアに加工できる? CSSのfilterプロパティのsepia()関数を使うと、画像をセピア色に変換できます。 画像編集ソフトを使うことなくCS […]