css.svg

【CSS】filter

CSS

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()は輝度を表し、%または1100%とした数値によって効果を変化させます。 デフォルトは100%となっており、0%に近づくほど暗く、100%より値を大きくするほど明るい効果が得られます。

contrast

filter: contrast(100%);

contrast()はコントラストを表し、%または1100%とした数値によって効果を変化させます。 デフォルトは100%となっており、0%に近づくほどグレーに近づき、100%より値を大きくするほど濃い色となります。

drop-shadow

filter: drop-shadow(2px 2px 2px gray);

drop-shadow()は影を表し、水平方向(X 軸)、垂直方向(Y 軸)、ぼかし、影の色を指定します。

grayscale

filter: grayscale(0%);

gray-scale()はグレースケールを表し、%または1100%とした数値によって効果を変化させます。 デフォルトは0%となっており、100%に近づくほどグレーとなる効果が得られます。

hue-rotate

filter: hue-rotate(0deg);

hue-rotate()は色相環を表し、degなどの角度を指定することによって効果を変化させます。 デフォルトは0degとなっており、360degまでの値を指定することで色相を変化させることができます。

invert

filter: invert(0%);

invert()は色の反転を表し、%または1100%とした数値によって効果を変化させます。 デフォルトは0%となっており、100%とすると完全に色が反転します。

opacity

filter: opacity(100%);

opacity()は透過度を表し、%または1100%とした数値によって効果を変化させます。 デフォルトは100%となっており、0%に近づくほど透明となる効果が得られます。

saturate

filter: saturate(100%);

saturate()は彩度を表し、%または1100%とした数値によって効果を変化させます。 デフォルトは100%となっており、0%に近づくほどグレーに近づき、100%より値を大きくするほど鮮明な色となります。

sepia

filter: sepia(0%);

sepia()はセピアを表し、%または1100%とした数値によって効果を変化させます。 デフォルトは0%となっており、100%に近づくほどセピア調の効果が得られます。

複数効果

上記で説明した関数は、スペース区切りで複数指定することが可能です。

filter: blur(2px) contrast(200%);

ダークモードの対応

filterinvert()hue-rotate()を使用すれば以下のように簡単にダークモードに対応することができます。

filter: invert(100%) hue-rotate(180deg);

ライトモード

ダークモード

ただしサンプルからもわかるように、色味が少し変化したり、画像や動画などの要素にも影響を与えてしまいます。 画像などを対象から外す場合は、:not()を活用しましょう。

*:not(img) {
  filter: invert(100%) hue-rotate(180deg);
}