Skip to content
Technical

レスポンシブSVGデザイン:すべてのデバイスでグラフィックをスケーリング

モダンなウェブデザインのためのレスポンシブSVGテクニックをマスター。viewBox、preserveAspectRatio、CSSスケーリング、アダプティブSVGパターンを学びます。

Robin Monteiro2026年1月23日2026年10月10日6 min
Use this article with an AI assistant:
.md
レスポンシブSVGデザイン:すべてのデバイスでグラフィックをスケーリング
R
Robin Monteiro

Founder of VectoSolve

Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.

How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author

Image vectorizationCutting machine filesEmbroidery filesSVG
Free previewNo signupFull-quality output

Key Takeaways

  • viewBox属性はレスポンシブSVGの基盤です — あらゆるコンテナにスケーリングする内部座標系を定義します
  • 固定のwidth/heightを削除し、CSSでwidth: 100%; height: autoを使用して流動的なSVGスケーリングを実現します
  • preserveAspectRatioはSVGが中央フィット(meet)、クロップフィル(slice)、ストレッチ(none)のいずれかを制御します
  • ブレイクポイント間でスムーズにスケーリングするアイコンやロゴには、CSS clamp()とコンテナクエリを使用します
  • vector-effect: non-scaling-strokeは小さなサイズでストロークが見えなくなることを防ぎます

レスポンシブSVGが重要な理由

SVGは本質的にスケーラブルですが、真にレスポンシブにするには、ブラウザがどのようにレンダリングするか、CSSがどのように動作に影響するかを理解する必要があります。このガイドは完璧なスケーリングに必要なすべてをカバーします。

さまざまなデバイスサイズでのレスポンシブSVGデザインテクニック
レスポンシブSVG:1つのグラフィック、あらゆる画面サイズ、ピクセルパーフェクトなレンダリング

SVGサイズ設定の基礎

ViewBox属性

レスポンシブに不可欠:

html
<svg viewBox="0 0 100 100">
  <!-- コンテンツ -->
</svg>

viewBoxの構成要素:

  • min-x:左端
  • min-y:上端
  • width:座標幅
  • height:座標高さ

幅と高さ

viewBoxとの関係:

html
<!-- 固定サイズ -->
<svg width="200" height="200" viewBox="0 0 100 100">

<!-- レスポンシブ(寸法なし) -->
<svg viewBox="0 0 100 100">

<!-- パーセントベース -->
<svg width="100%" viewBox="0 0 100 100">

PreserveAspectRatio

スケーリング動作の制御:

html
<!-- デフォルト:中央揃えでフィット -->
preserveAspectRatio="xMidYMid meet"

<!-- コンテナを塗りつぶし(クロップ可能性あり) -->
preserveAspectRatio="xMidYMid slice"

<!-- 保持なし(ストレッチ) -->
preserveAspectRatio="none"

Pro Tip: SVGをCSSのbackground-size: coverのように動作させたい場合は、preserveAspectRatio="xMidYMid slice"を使用してください。background-size: containの動作にはデフォルトのxMidYMid meetを使用します。


CSSサイズ戦略

流動的なSVG

最大の柔軟性:

css
svg {
  width: 100%;
  height: auto;
}

コンテナベースのサイズ設定

親要素による制御:

css
.svg-container {
  width: 50vw;
  max-width: 500px;
}

.svg-container svg {
  width: 100%;
  height: auto;
}

アスペクト比の制御

モダンなCSSアプローチ:

css
.svg-wrapper {
  aspect-ratio: 16 / 9;
  width: 100%;
}

.svg-wrapper svg {
  width: 100%;
  height: 100%;
}

A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

レスポンシブパターン

ヒーローアイコン

ビューポートに合わせたアイコンスケーリング:

css
.hero-icon {
  width: clamp(40px, 10vw, 120px);
  height: auto;
}

背景SVG

全幅パターン:

css
.hero {
  background-image: url('pattern.svg');
  background-size: cover;
  background-position: center;
}

インラインSVG

レスポンシブなインライングラフィック:

html
<div class="logo-container">
  <svg viewBox="0 0 200 50" class="responsive-logo">
    <!-- ロゴコンテンツ -->
  </svg>
</div>

<style>
.responsive-logo {
  width: 100%;
  max-width: 200px;
  height: auto;
}
</style>

「レスポンシブSVGの真の力はスケーリングだけではありません — 異なるサイズで異なるレベルの詳細を表示する能力であり、これはラスター形式では実現できません。」 - Jake Archibald、ウェブ標準エキスパート

viewBoxと座標系の基礎を示すSVGフォーマットガイド
viewBoxの理解:SVGスケーリングを可能にする座標系

アダプティブSVGコンテンツ

SVG内のメディアクエリ

ブレイクポイントでコンテンツを変更:

html
<svg viewBox="0 0 100 100">
  <style>
    .detail { display: block; }

    @media (max-width: 400px) {
      .detail { display: none; }
    }
  </style>

  <circle class="main" cx="50" cy="50" r="40"/>
  <circle class="detail" cx="50" cy="50" r="10"/>
</svg>

SVGコンテンツの切り替え

ブレイクポイント別の異なるファイル:

html
<picture>
  <source srcset="logo-wide.svg" media="(min-width: 800px)">
  <source srcset="logo-compact.svg" media="(min-width: 400px)">
  <img src="logo-icon.svg" alt="会社のロゴ">
</picture>

JavaScriptベースの適応

動的なコンテンツ切り替え:

javascript
function updateSVG() {
  const svg = document.querySelector('.adaptive-svg');
  const details = svg.querySelectorAll('.detail');

  if (window.innerWidth < 600) {
    details.forEach(el => el.style.display = 'none');
  } else {
    details.forEach(el => el.style.display = 'block');
  }
}

window.addEventListener('resize', updateSVG);

<svg>要素内のメディアクエリはブラウザのビューポートではなく、SVG自体のサイズに応答します。つまり、1200pxのビューポートで300px幅のSVGはmax-width: 400pxのメディアクエリをトリガーします — コンポーネントレベルのレスポンシブのための強力な機能です。


アイコンシステム

レスポンシブアイコンサイズ

一貫したスケーリング:

css
:root {
  --icon-sm: 16px;
  --icon-md: 24px;
  --icon-lg: 32px;
  --icon-xl: 48px;
}

.icon-sm { width: var(--icon-sm); height: var(--icon-sm); }
.icon-md { width: var(--icon-md); height: var(--icon-md); }
.icon-lg { width: var(--icon-lg); height: var(--icon-lg); }
.icon-xl { width: var(--icon-xl); height: var(--icon-xl); }

ストロークスケーリング

ストロークの細りを防止:

css
svg {
  vector-effect: non-scaling-stroke;
}

/* またはSVG内で */
<path vector-effect="non-scaling-stroke" d="..."/>

Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

エッジケースの処理

オーバーフローの防止

SVGコンテンツの制限:

css
svg {
  overflow: hidden;
}

最小サイズ

可読性の維持:

css
.icon {
  min-width: 16px;
  min-height: 16px;
}

最大サイズ

過度な拡大の防止:

css
.logo {
  width: 100%;
  max-width: 300px;
}

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

スケールでの複雑さ

パフォーマンスガイドライン:

  • 小さなサイズでは簡素化
  • モバイルではノードを削減
  • 適切な場合はシンプルなバージョンを使用

読み込み戦略

読み込みの最適化:

html
<!-- クリティカルなSVGはインライン -->
<svg class="logo">...</svg>

<!-- 装飾的なものは遅延読み込み -->
<img src="decoration.svg" loading="lazy">

レスポンシブSVGのテスト

ブラウザテスト

確認対象:

  • Chrome、Firefox、Safari、Edge
  • モバイルブラウザ
  • 異なるピクセル密度

ビューポートテスト

テスト対象:

  • モバイル:320px - 480px
  • タブレット:768px - 1024px
  • デスクトップ:1280px以上
  • 大画面:1920px以上

デバイステスト

確認対象:

  • iOSデバイス
  • Androidデバイス
  • 高解像度ディスプレイ(HiDPI)
  • 古いブラウザ

A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

レスポンシブデザインのためのVectoSolve

クリーンな出力

VectoSolveはレスポンシブ利用に対応したSVGを生成します:

  • 正しいviewBox設定
  • クリーンなパスデータ
  • CSSで簡単にスタイリング

変換後

ベクター化の後:

  1. viewBoxが設定されていることを確認
  2. 必要に応じて固定のwidth/heightを削除
  3. レスポンシブCSSを追加
  4. すべてのブレイクポイントでテスト

まとめ

レスポンシブSVGはスケーラブルグラフィックの力とモダンなCSSテクニックを組み合わせます。viewBox、preserveAspectRatio、CSSサイズ設定を理解することで、あらゆるデバイスで完璧に見えるグラフィックを作成できます。VectoSolveのクリーンなベクターから始めて、これらのレスポンシブパターンを適用し、真にアダプティブなグラフィックを実現しましょう。

レスポンシブSVGを作成


SVG属性 / テクニック目的レスポンシブ動作ブラウザサポート
viewBox内部座標系を定義コンテンツをあらゆるコンテナサイズにスケーリングすべてのモダンブラウザ
preserveAspectRatioフィットと配置を制御スケーリング時の歪みを防止すべてのモダンブラウザ
width: 100%; height: auto流動的なCSSサイズ設定SVGが親要素を埋め、比率を維持すべてのモダンブラウザ
SVG内メディアクエリビューポート別にSVGコンテンツを適応ブレイクポイントごとに要素を表示/非表示すべてのモダンブラウザ
clamp()(font-size用)流動的なSVGテキストサイズ設定テキストがmin–max間でスムーズにスケーリング95%以上(2026年)

参考資料

  • MDN Web Docs — SVG — viewBox、preserveAspectRatio、SVG座標系の決定版リファレンス
  • W3C SVG 2仕様 — レスポンシブSVGレンダリング動作の公式仕様
  • CSS-Tricks: Using SVG — 流動的スケーリングとメディアクエリを含む実践的なレスポンシブSVGテクニック
  • web.dev — SVGを含むレスポンシブ画像戦略のパフォーマンスへの影響
  • Smashing Magazine — 高度なレスポンシブSVGパターン、アクセシビリティ、クロスデバイステストガイド
Tags:
レスポンシブデザイン
SVG
CSS
ViewBox
モバイル
Share:

Try VectoSolve Now

Convert your images to high-quality SVG vectors with AI

AI-Powered Vectorization

Ready to vectorize your images?

Convert your PNG, JPG, and other images to high-quality, scalable SVG vectors in seconds.