【CSS】filter
filter
filter
は、ぼかしや色の変化などのグラフィックス効果を要素に適用します。
画像などすべての要素に適用されます。
以下がfilter
のサンプルになります。
各グラフィックス効果をもたらす関数については、以下で説明します。
blur(0px)
brightness(100%)
contrast(100%)
drop-shadow:x(0px)
drop-shadow:y(0px)
drop-shadow:r(0px)
grayscale(0%)
hue-rotate(0deg)
invert(0%)
opacity(100%)
saturate(100%)
sepia(0%)
blur
filter: blur(1px);
blur()
はぼかしを表し、px
などの長さの指定によって効果を変化させます。
デフォルトは0px
となっており、値を大きくすることでより大きなぼかし効果が得られます。
%
は使用することができません。
brightness
filter: blur(100%);
brightness()
は輝度を表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは100%
となっており、0%
に近づくほど暗く、100%
より値を大きくするほど明るい効果が得られます。
contrast
filter: contrast(100%);
contrast()
はコントラストを表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは100%
となっており、0%
に近づくほどグレーに近づき、100%
より値を大きくするほど濃い色となります。
drop-shadow
filter: drop-shadow(2px 2px 2px gray);
drop-shadow()
は影を表し、水平方向(X 軸)、垂直方向(Y 軸)、ぼかし、影の色を指定します。
grayscale
filter: grayscale(0%);
gray-scale()
はグレースケールを表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは0%
となっており、100%
に近づくほどグレーとなる効果が得られます。
hue-rotate
filter: hue-rotate(0deg);
hue-rotate()
は色相環を表し、deg
などの角度を指定することによって効果を変化させます。
デフォルトは0deg
となっており、360deg
までの値を指定することで色相を変化させることができます。
invert
filter: invert(0%);
invert()
は色の反転を表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは0%
となっており、100%
とすると完全に色が反転します。
opacity
filter: opacity(100%);
opacity()
は透過度を表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは100%
となっており、0%
に近づくほど透明となる効果が得られます。
saturate
filter: saturate(100%);
saturate()
は彩度を表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは100%
となっており、0%
に近づくほどグレーに近づき、100%
より値を大きくするほど鮮明な色となります。
sepia
filter: sepia(0%);
sepia()
はセピアを表し、%
または1
を100%
とした数値によって効果を変化させます。
デフォルトは0%
となっており、100%
に近づくほどセピア調の効果が得られます。
複数効果
上記で説明した関数は、スペース区切りで複数指定することが可能です。
filter: blur(2px) contrast(200%);
ダークモードの対応
filter
のinvert()
とhue-rotate()
を使用すれば以下のように簡単にダークモードに対応することができます。
filter: invert(100%) hue-rotate(180deg);
ライトモード
赤 青 緑 黄
ダークモード
赤 青 緑 黄
ただしサンプルからもわかるように、色味が少し変化したり、画像や動画などの要素にも影響を与えてしまいます。
画像などを対象から外す場合は、:not()
を活用しましょう。
*:not(img) {
filter: invert(100%) hue-rotate(180deg);
}