ToolPal
CSSフィルター変換を表現するカラフルな光の筋と視覚効果

CSSフィルター完全ガイド:blur、grayscale、hue-rotateの使い方と実践例

📷 Denys Nevozhai / Pexels

CSSフィルター完全ガイド:blur、grayscale、hue-rotateの使い方と実践例

CSS filterプロパティを使えば、画像編集ソフトなしでblur、グレースケール、明度調整、色相回転などを純粋なCSSで実現できます。各フィルターの実用的な活用法と性能のポイントを解説します。

2026年4月15日2分で読了

CSS filterプロパティは、多くの開発者が一度見て「面白い」と思い、その後しばらく忘れてしまうプロパティの一つです。そして画像編集ソフトで一時間作業した後に、CSSの数行で解決できたと気づくことになります。

filterプロパティは、blur、grayscale、brightness、contrast、sepia、hue-rotateなどのグラフィック効果を、画像ファイルを変更したりCanvas APIを使ったりすることなく、純粋なCSSで適用します。画像だけでなくすべてのHTML要素に作用し、複数の効果を組み合わせたりtransitionでアニメーション化したりすることも簡単です。

CSS Filter Generatorを使えば、各値をスライダーで視覚的に調整しながらリアルタイムでプレビューし、そのままCSSをコピーできます。

filterプロパティの仕組み

技術的には、CSS filterはSVGフィルター効果を要素のレンダリング出力に適用します。ただし、SVGを直接扱う必要はありません。複数のフィルターはスペースで区切られ、左から右の順に適用されます:

img {
  filter: grayscale(1) brightness(1.1);
}

重要な点として、filterは要素とそのすべての子要素に適用されます。カードにfilter: blur(4px)を設定すると、カード内のテキストも含めてすべてがぼやけます。背景画像だけをぼかしたい場合は別のアプローチが必要です。

各フィルターと実際の活用事例

blur()

最も視覚的に目立つフィルターです。ピクセル単位でガウシアンブラーを適用します。

.background-image {
  filter: blur(8px);
}

活用事例:ヒーロー背景画像のブラー処理。 背景画像だけぼかしてコンテンツを鮮明に保ちたい場合:

.hero-bg {
  position: absolute;
  inset: 0;
  background-image: url('/hero.jpg');
  background-size: cover;
  filter: blur(6px);
  transform: scale(1.05); /* ブラーの端が見えないように */
  z-index: 0;
}

scale(1.05)のトリックにより、ブラー処理された端が画面に表示されることを防げます。

grayscale()

要素の色をグレースケールに変換します。1が完全なグレースケール、0が元の色です。

活用事例:無効状態の表現。 不透明度だけでは伝わりにくい場合、grayscaleと組み合わせると無効状態をより明確に伝えられます:

.product-card.disabled img {
  filter: grayscale(1);
  opacity: 0.7;
}

活用事例:hoverでカラー表示。 デフォルトはグレースケール、hoverでカラーに切り替わる効果は、ポートフォリオやチーム紹介ページでよく使われます:

.team-photo {
  filter: grayscale(1);
  transition: filter 0.4s ease;
}

.team-photo:hover {
  filter: grayscale(0);
}

brightness()とcontrast()

brightness()は明度を調整します。1が元の状態、1未満で暗くなり、1超で明るくなります。contrast()はコントラストを調整します。

二つを組み合わせることで、画像の雰囲気を大きく変えられます:

/* 強くパンチの効いたルック */
.editorial-image {
  filter: brightness(1.05) contrast(1.4);
}

/* ソフトでヴィンテージなルック */
.vintage-image {
  filter: brightness(1.1) contrast(0.85) sepia(0.3);
}

活用事例:ボタンのインタラクションフィードバック。

.cta-button {
  transition: filter 0.15s ease;
}

.cta-button:hover {
  filter: brightness(1.1);
}

.cta-button:active {
  filter: brightness(0.9);
}

sepia()

すべての色に温かみのある茶色がかった色調を加え、古い写真のような雰囲気を作り出します。

.retro-photo {
  filter: sepia(0.8) brightness(1.05) contrast(0.9);
}

CSSで完結するため、別の画像ファイルなしにテーマ切り替えが可能です。

hue-rotate()

すべての色の色相を指定した角度だけ回転させます。彩度と明度を保ったまま色相だけ変わるのが特徴です。

活用事例:1つの画像で複数のテーマを実現。

.theme-blue .logo-icon { filter: hue-rotate(0deg); }
.theme-purple .logo-icon { filter: hue-rotate(60deg); }
.theme-green .logo-icon { filter: hue-rotate(120deg); }

活用事例:レインボーアニメーション効果。

@keyframes rainbow {
  from { filter: hue-rotate(0deg); }
  to { filter: hue-rotate(360deg); }
}

.rainbow-element {
  animation: rainbow 4s linear infinite;
}

drop-shadow()

要素の実際の形状に沿って影を適用します。box-shadowとの大きな違いは、透明PNGやSVGなど、長方形でない形状でも正しく機能する点です。

img {
  filter: drop-shadow(4px 4px 8px rgba(0, 0, 0, 0.4));
}

透明背景のPNGにbox-shadowを使うと長方形の影になってしまいますが、drop-shadow()はその問題を解決します。

invert()

すべての色を反転させます。ダークモードのアイコン対応に便利です:

@media (prefers-color-scheme: dark) {
  .icon {
    filter: invert(1);
  }
}

モノクロアイコンには信頼できる方法です。

filterとbackdrop-filterの違い

混同されやすい二つのプロパティです:

  • filter:要素自体とその内容に効果を適用します。
  • backdrop-filter:要素の背後にある領域に効果を適用します。要素自体は通常通りレンダリングされます。
/* フロストガラスパネル */
.glass-panel {
  background: rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px); /* Safari用 */
}

-webkit-backdrop-filterは2026年初頭時点でSafariがまだ必要としています。常に一緒に記述してください。

filterのアニメーション

フィルターはtransitionとanimationでアニメーション化できます:

/* カラーreveal効果 */
.portfolio-item img {
  filter: grayscale(1) brightness(0.9);
  transition: filter 0.4s ease;
}

.portfolio-item:hover img {
  filter: grayscale(0) brightness(1);
}

/* blur-inの登場効果 */
@keyframes blurIn {
  from {
    filter: blur(12px);
    opacity: 0;
  }
  to {
    filter: blur(0px);
    opacity: 1;
  }
}

.hero-content {
  animation: blurIn 0.8s ease-out forwards;
}

パフォーマンスの考慮事項

CSS filterはGPUアクセラレーションを使用しますが、注意点があります:

  • blur()が最もコストが高いです。半径が大きく要素が大きいほど負荷が増します。
  • 大きな要素でのfilterアニメーションは中級のモバイル端末でフレームドロップを引き起こす可能性があります。
  • フィルターの組み合わせはコストが積み重なります。チェーン内の各フィルターが順番に適用されます。
  • will-change: filterは必要な場合のみ使用してください。GPUメモリを消費します。

まとめ

CSS filterは画像編集機能のように見えるため、スタイリングツールとして認識されにくいことがあります。しかし、スタイリングの基本要素として考えると活用範囲が広がります。

無効状態のためのgrayscaleパターン、形状に沿うdrop-shadow、テーマ適用のためのhue-rotate、フロストガラスのためのbackdrop-filter——これらはすべて、モダンなCSSで実用的に使えるテクニックです。

CSS Filter Generatorで実際の画像に各フィルターがどのような影響を与えるか、視覚的に確認してみてください。

よくある質問

この記事を共有

XLinkedIn

関連記事