



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒先生、CSSだけでは表現できない、もっと複雑な質感やエフェクトを実装したいんですけど、どうすればいいでしょうか?



よーく聞くんだぞ。今日はSVGフィルタを使った質感表現について詳しく解説するぞい!CSSだけでは難しい液体の揺らぎやガラス質感も実現できるんじゃ!



そうなんですね!ぜひ教えてください!
Webデザインにおいて、視覚的に魅力的な質感表現は、ユーザーの注目を集め、サイトの印象を大きく左右します。通常のCSSフィルタでは実現が難しい複雑な質感やエフェクトも、SVGフィルタを活用することで、JavaScriptを使わずに実装可能です。
本記事では、SVGフィルタを使った質感表現の実装方法について、液体の波紋効果、ガラス質感、メタリック効果など、実例を交えながら基本から応用まで詳しく解説します。
「学習→案件獲得」につなげた受講生のリアルな体験談も公開中!
働き方を変えたい方にも響くストーリーです。
橋本さん
将来に繋がるスキルを身に付けたいと考え、プログラミングに出会う。在学中の大学ではプログラミングの講義がなかったため、独学で学習していたが、限界を感じWithCodeに入学を決意。短期集中カリキュラムでプログラミング学習に打ち込んだ結果、見事卒業テストに合格し、案件を勝ち取りました。現在は、新たな言語の習得に向けて学習を継続しながら就職活動に向けて準備を行っています。
詳しくはこちらの記事をご覧ください。


橋本さんの主な制作実績はこちら


SVGフィルタとは、SVG(Scalable Vector Graphics)で定義される画像処理フィルタのことです。画像やHTML要素に対して、ぼかし、歪み、色調整、ノイズ生成など、さまざまな視覚効果を適用できます。
通常のCSSフィルタ(blur、brightness、contrastなど)と比べて、SVGフィルタはより複雑で高度なエフェクトを実現できます。複数のフィルタプリミティブ(フィルタの基本単位)を組み合わせることで、液体の質感、ガラスの透明感、金属の光沢など、リアルな質感表現が可能になります。
SVGフィルタは、HTML内に<svg>タグと<filter>タグを使って定義します。
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<filter id="myFilter">
<!-- フィルタプリミティブをここに配置 -->
</filter>
</svg>定義したフィルタは、CSSのfilterプロパティで要素に適用します。
.element {
filter: url(#myFilter);
}

SVGフィルタの大きな魅力は、JavaScriptを書かなくてもリッチな視覚表現ができる点です。
例えば、
といった演出も、SVGフィルタのプリミティブ(feTurbulence や feGaussianBlur など)を組み合わせるだけで実装できます。
これにより、
といった構成が不要になります。
結果として、
という、保守性の高いフロントエンド構成が実現できます。
PhotoshopやIllustratorを使った質感表現は、一度書き出してしまうと
「もう少しぼかしたい」
「ノイズを弱めたい」
といった微調整のたびに再エクスポートが必要になります。
SVGフィルタの場合は、
stdDeviation="2"
numOctaves="1"
scale="15"といった数値を変更するだけで、その場で見た目が変わります。
つまり、
というリアルタイムデザインが可能になります。
デザイナーとエンジニアの間で
「もう一回画像ください」
という往復がなくなり、制作スピードが大幅に向上します。
画像ベースのエフェクトは、
といった問題を抱えがちです。
SVGフィルタはベクター&動的処理なので、
すべてで同じクオリティを維持できます。
さらにCSSと組み合わせることで、
といった条件分岐も簡単。
レスポンシブ設計と非常に相性が良いのも大きなメリットです。
SVGフィルタは「静的な効果」だけでは終わりません。
フィルタのパラメータは、
<animate>で動的に変更できます。
これにより、
といったインタラクティブな質感表現が実装可能になります。





SVGフィルタには、さまざまなフィルタプリミティブが用意されている。ここでは、質感表現に特に有効な主要プリミティブを紹介するぞ!
feTurbulenceは、パーリンノイズやフラクタルノイズを生成するフィルタプリミティブです。液体の揺らぎ、雲の質感、大理石模様など、自然な不規則パターンを作り出します。
fractalNoiseまたはturbulence)See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
このコードでは、グラデーション背景にパーリンノイズを適用し、自然な質感を加えています。
feDisplacementMapは、別の画像やフィルタの出力を基に、ピクセルの位置をずらすフィルタプリミティブです。液体の波紋、ガラスの歪み、熱気の揺らぎなどを表現できます。
SourceGraphicなど)See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
このコードでは、feTurbulenceで生成したノイズをfeDisplacementMapに渡し、画像に波打つような歪みを加えています。
feGaussianBlurは、ガウシアンぼかしを適用するフィルタプリミティブです。ガラス質感やソフトフォーカス効果に使用されます。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
feColorMatrixは、色相、彩度、明度などを行列演算で変換するフィルタプリミティブです。グレースケール化、セピア調、色相回転などに使用されます。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
feMorphologyは、形状を膨張または収縮させるフィルタプリミティブです。アウトライン効果や影の調整に使用されます。
erode(収縮)またはdilate(膨張)See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
feBlendは、2つの入力を特定の合成モードでブレンドするフィルタプリミティブです。Photoshopのレイヤー合成モードと同様の効果が得られます。
normal、multiply、screen、darken、lightenなどSee the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.





具体的にどんな質感表現ができるんですか?



液体の波紋、ガラス、メタリック、ネオンなど、さまざまな質感を実装できるぞい。一つずつ見ていこう!
液体の波紋効果は、feTurbulenceとfeDisplacementMapを組み合わせて実現します。アニメーションを加えることで、水面のような動的な揺らぎを表現できます。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
baseFrequency="0.01 0.03"で、X軸とY軸で異なる周波数のノイズを生成し、より自然な波紋を作りますbaseFrequencyの値を20秒かけて変化させ、波紋が動いているように見せますscale="15"で歪みの強さを調整。値を大きくすると波紋が強くなりますポイント: baseFrequencyの値を変えることで、波紋の細かさを調整できます。小さい値(0.01など)で大きな波、大きい値(0.1など)で細かい波になります。
フロストガラス(すりガラス)の質感は、feGaussianBlur、feTurbulence、feColorMatrixを組み合わせて実現します。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
mode="screen"でぼかしとノイズを合成し、柔らかいガラス質感を実現ポイント: backdrop-filterとSVGフィルタを併用することで、よりリアルなガラス質感を表現できます。
金属の質感は、光沢とハイライトが重要です。feSpecularLighting(鏡面反射)を使うことで、金属特有の光沢感を表現できます。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
ネオンエフェクトは、feGaussianBlur、feColorMatrix、feBlendを組み合わせて、光が発光しているような効果を作ります。
See the Pen Untitled by せいや (@ddwkeakz-the-reactor) on CodePen.
flickerでネオンが点滅するような動きを追加




SVGフィルタって重くなりませんか?パフォーマンスが心配です…



いい質問じゃ!SVGフィルタは確かにCPU/GPUリソースを使うから、適切な最適化が必要なんじゃ。
will-changeプロパティを使うことで、ブラウザに事前に最適化を指示できます。
.filtered-element {
filter: url(#myFilter);
will-change: filter;
}フィルタプリミティブを過度に重ねると、処理負荷が高くなります。必要最小限のプリミティブで効果を実現しましょう。
numOctavesは、4以下が推奨stdDeviationは、10以下が推奨フィルタのアニメーションは、画面全体ではなく特定の要素のみに適用します。
/* 良い例:特定の要素のみアニメーション */
.hero-image {
filter: url(#liquidRipple);
}
/* 悪い例:body全体にアニメーション(避ける) */
body {
filter: url(#liquidRipple);
}モバイルデバイスはデスクトップよりも処理能力が低いため、複雑なSVGフィルタは避けるか、メディアクエリで無効化します。
/* デスクトップのみフィルタを適用 */
@media (min-width: 768px) {
.filtered-element {
filter: url(#myFilter);
}
}
/* モバイルではシンプルなCSSフィルタのみ */
@media (max-width: 767px) {
.filtered-element {
filter: blur(2px) brightness(1.1);
}
}transform: translateZ(0)やtransform: translate3d(0, 0, 0)を追加することで、GPUアクセラレーションを強制的に有効化できます。
.filtered-element {
filter: url(#myFilter);
transform: translateZ(0);
backface-visibility: hidden;
}

SVGフィルタは、すべてのモダンブラウザでサポートされています。
| ブラウザ | SVGフィルタ基本機能 | アニメーション | 備考 |
|---|---|---|---|
| Chrome | 完全対応 | あり | バージョン8以降 |
| Firefox | 完全対応 | あり | バージョン4以降 |
| Safari | 完全対応 | あり | バージョン6以降 |
| Edge | 完全対応 | あり | すべてのバージョン |
| IE11 | 部分対応 | なし | 一部プリミティブ非対応 |
古いブラウザ向けに、フォールバックを用意することをおすすめします。
/* SVGフィルタをサポートしていない場合のフォールバック */
.filtered-element {
/* 基本的なCSSフィルタ */
filter: blur(2px) brightness(1.1);
}
/* SVGフィルタをサポートしている場合は上書き */
@supports (filter: url(#myFilter)) {
.filtered-element {
filter: url(#myFilter);
}
}




SVGフィルタの実践的な活用方法を知りたいです!



うむ。SVGフィルタを使った質感表現は、以下のようなシーンで効果的じゃ!
ファーストビューは、サイトの印象を決める数秒間です。
ここに液体の波紋エフェクトやグラデーションアニメーションを加えることで、静的なサイトとの差別化が可能になります。
特に、
などのブランドと相性が良く、未来感・先進性・没入感を演出できます。
ただし重要なのは、あくまで背景として使うこと。
テキストの可読性を損なわないように、
といったバランスが鍵になります。
適切に設計すれば、「普通のLP」とは一線を画す体験を作れます。
カードUIは、情報の整理と視認性を高めるための定番コンポーネントです。
そこにガラス質感(glassmorphism)やネオンエフェクトを組み込むことで、触りたくなるUIへ進化させることができます。
.card {
transition: filter 0.3s ease;
}
.card:hover {
filter: url(#frostGlass);
}ロゴやメインタイトルは、ブランドの象徴です。
ここにメタリック質感やネオンエフェクトを適用すると、印象は一気に変わります。
例えば:
といった方向性の演出が可能です。
特にランディングページやイベントページでは、
ロゴの質感だけで世界観を一瞬で伝えることができます。
ただし、常に強いエフェクトをかけるのではなく、
といった動きのメリハリをつけることで、上品さを保てます。
ポートフォリオにおいて重要なのは、
「何を作ったか」だけでなく「どう魅せるか」です。
制作物サムネイルに質感エフェクトを適用することで、
といった効果が得られます。
特にフロントエンドエンジニアやWebデザイナーの場合、エフェクト自体がスキル証明になります。
ただし過剰に使うとギャラリーが騒がしくなるため、
といった設計にすると洗練されます。
単なる「作品一覧」から、
体験できるポートフォリオへ昇華させる要素として活用できます。





もし、トラブルがあった時の対処法も知りたいです!



うむ。ここでは、よくあるトラブルと解決法について紹介するぞい!
原因:
url(#myFilter)の#を忘れている)display: noneになっていない(可視化されている)解決法:
<!-- SVGは非表示にする -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<filter id="myFilter">
<!-- ... -->
</filter>
</svg>
<!-- CSSで正確にIDを指定 -->
.element {
filter: url(#myFilter); /* #を忘れずに */
}原因:
<animate>タグの属性指定ミス<animate>をサポートしていない解決法:
<animate> を記述する<!-- 正しいanimate属性の書き方 -->
<feTurbulence type="turbulence" baseFrequency="0.01" numOctaves="2">
<animate
attributeName="baseFrequency"
dur="10s"
values="0.01; 0.02; 0.01"
repeatCount="indefinite"
/>
</feTurbulence>原因:
numOctavesやstdDeviationの値が大きすぎる解決法:
will-changeプロパティを追加<filter id="myFilter">
<!-- numOctaves を小さく -->
<feTurbulence baseFrequency="0.01" numOctaves="1" />
<!-- stdDeviation を小さく -->
<feGaussianBlur stdDeviation="2" />
<feDisplacementMap in="SourceGraphic" scale="15" />
</filter>
.element {
will-change: filter, transform;
}
/* モバイルはフィルタOFF */
@media (max-width: 768px) {
.element {
filter: none;
}
}



SVGフィルタって、思ったより簡単に使えるんですね!これでWebデザインの表現の幅が広がりそうです!



その通りじゃ!SVGフィルタは奥が深いが、基本を押さえればさまざまな質感表現ができるんじゃ。パフォーマンスに気をつけながら、実際のプロジェクトで試してみるんじゃぞ!



はい!まずは液体の波紋効果から実装してみます!ありがとうございました!
本記事では、SVGフィルタを使った質感表現の実装方法について、実例を交えながら詳しく解説しました。
重要なポイントは以下の通りです。
・SVGフィルタの基本:feTurbulence、feDisplacementMap、feGaussianBlurなどのプリミティブを組み合わせることで、複雑な質感を実現
・液体の波紋:ノイズと歪みを組み合わせ、アニメーションで動的な揺らぎを表現
・ガラス質感:ぼかしとノイズを合成し、透明感のある質感を作成
・メタリック質感:鏡面反射を利用して金属の光沢を再現
・ネオンエフェクト:多層的なぼかしと色調整で発光効果を実現
・パフォーマンス最適化:will-change、フィルタの簡素化、モバイル対応が重要
WithCodeで学んだHTML・CSSの基礎知識に、SVGフィルタの技術を組み合わせれば、どんな複雑な質感表現でも実現できます。
SVGフィルタは、JavaScriptを使わずに高度なエフェクトを実装できる強力な技術です。ぜひ実際のプロジェクトで活用し、ユーザーに驚きと感動を与えるWebサイトを作成してください。


副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?
未経験でも心配することありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!
公式サイト より
今すぐ
無料カウンセリング
を予約!