CSSフィルター生成器

次へ

CSS の filter は、ぼかし、明るさ、コントラスト、彩度などの画像処理効果を、画像だけでなく任意の要素に適用します。複数のフィルターを連結し、単位を正しく設定するのが難しいところです。このジェネレーターは、よく使われる5つの関数、ぼかし、明るさ、コントラスト、グレースケール、彩度の filter 宣言を作成します。値を入力して、生成された CSS をコピーしてください。

フィルターチェーンの作成方法

  1. 1

    値を入力する

    ぼかしはピクセル、明るさ、コントラスト、グレースケール、彩度はパーセントで入力します。

  2. 2

    数値の意味を理解する

    明るさとコントラストは100%で変化なし、0%で要素が黒またはグレーになります。グレースケールは0%(フルカラー)から100%(完全に無彩色)まで。彩度は100%で色がそのまま維持されます。

  3. 3

    CSS を生成する

    ボタンをクリックすると、5つの関数をまとめた `filter` ルールが出力されます。

  4. 4

    ルールをコピーする

    結果をコピーしてスタイルシートに貼り付けます。

  5. 5

    順序を確認する

    関数は左から右へ適用されます。期待と違う効果になったら、値を調整してください。

フィルター関数

関数 単位 効果
blur() px ガウスぼかし。0 = ぼかしなし
brightness() % または小数 100% = 変化なし、0% = 黒、200% = 2倍
contrast() % または小数 100% = 変化なし、0% = グレー、200% = 2倍
saturate() % または小数 100% = 変化なし、0% = グレースケール
grayscale() % または小数 0% = 変化なし、100% = 完全に彩度を除去
sepia() % または小数 0% = 変化なし、100% = 完全なセピア
hue-rotate() deg 0deg = 変化なし。色相環を回転します
invert() % または小数 0% = 変化なし、100% = 完全に反転
opacity() % または小数 opacity プロパティと同じ
drop-shadow() x y ぼかし 色 box-shadow に似ていますが、不透明度や clip-path に追従します

連結する順序が重要

filter: brightness(0.5) saturate(2) はまず明るさを適用し、その後で彩度を適用します。2つのフィルターは合成されて作用します。

filter: saturate(2) brightness(0.5) はまず彩度を適用します。画像が暗くされる前に明るいため、色の彩度がより際立ちます。

視覚的な違いはわずかですが確かに存在します。フィルターチェーンが思いどおりに見えないときは、両方の順序を試してみてください。

よく使うレシピ

/* 色あせた写真風 */
filter: contrast(0.9) saturate(0.85) brightness(1.05);

/* ヴィンテージ / 色あせ */
filter: sepia(0.3) contrast(1.1) brightness(0.95);

/* デュオトーン近似 */
filter: grayscale(1) sepia(1) hue-rotate(180deg) saturate(1.5);

/* ヒーロー画像を暗く */
filter: brightness(0.6);

/* 無効状態 */
filter: grayscale(1) opacity(0.6);

/* すりガラス風オーバーレイ */
filter: blur(12px) saturate(1.3);

すりガラス効果のための backdrop-filter

filter は要素自体に適用されます。backdrop-filter は半透明の要素の背後にあるものに適用され、iOS が広めたすりガラス効果を生み出します。

.modal-backdrop {
  background: rgba(255, 255, 255, 0.5);
  backdrop-filter: blur(20px) saturate(1.2);
}

対応状況: すべての最新ブラウザ。Firefox は 103 以降でフラグなしでようやく対応しました。

パフォーマンスに関する注意

  • blur() は、すべてのピクセルをカーネルで畳み込む必要があるため、最もコストの高いフィルターです。4K のヒーロー画像に 30px のぼかしをかけると、フレーム落ちが目に見えて発生します。
  • grayscalesepiabrightness などはピクセル単位の色変換であり、軽量です。
  • 最新ブラウザではフィルターは GPU で高速化されますが、blur() のアニメーションは低スペック端末では依然としてカクつきます。
  • アニメーションさせる前に will-change: filter を指定するとよいでしょう。

filter: drop-shadow()box-shadow の違い

  • box-shadow は要素のボーダーボックスに従います(border-radius を尊重します)。
  • filter: drop-shadow() は要素の不透明なピクセルに従うため、clip-path の形状、PNG の透過、SVG パスの輪郭をなぞります。

切り抜かれた画像や透過のある画像の影には drop-shadow を使い、標準的なカードやボックスには高速な box-shadow を使いましょう。

よくある質問

はい、フィルターは要素およびそのすべての子要素をグループとして適用されます。親要素をフィルターすると、子要素も含まれます。親要素の背景のみをフィルターする場合は、コンテンツを別のスタッキングコンテキストに配置するか、backdrop-filterを使用してください。

ぼかしは、レンダリングされたテキストを含む要素全体に適用されるためです。単純な filter だけでは、背景をぼかしつつテキストを鮮明に保つことはできません。半透明のオーバーレイに backdrop-filter を使い、テキストはフィルターをかけた要素の外側に配置してください。

はい、すべてのフィルター関数はアニメーションできます。モバイルでのぼかしのパフォーマンスには注意してください。ぼかし半径をアニメーションさせるとコストが目に見えて高くなります。grayscalesepiabrightness は軽量にアニメーションできます。

はい、CSSのfilterは他のどのDOM要素と同様にSVG要素にも適用されます。また、SVGには独自のより充実した<filter>要素システムが存在し、これはより強力ですが、記述量が大幅に増加します。

関連ツール