時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解説】SVG画像をHTML・CSSで表示する方法【アニメーションあり】

記事内に広告を含みます

パソ君
パソ君

・SVG画像を表示する方法は?

こんな疑問にお答えします。

SVGはベクターベースの形式であり、画像の拡大・縮小に影響を受けません。そのため鮮明な表示が可能。

ロゴとかに使われやすいですね。

ただどうやって表示すればよいかわからない人もいるはず。

実は表示方法は何種類かあるんですよね。

ジト
ジト

覚えれば簡単に使えるよ!

ということで、この記事では「SVG画像をHTML・CSSで表示する方法」について解説していきます!

この記事でわかること

・SVG画像をHTML・CSSで表示する方法
・SVG画像のアニメーション

【解説】SVG画像をHTML・CSSで表示する方法

SVG画像を表示する方法は、主に4つあります。

  1. imgタグで表示
  2. svgタグで表示
  3. objectタグで表示
  4. cssにて表示

順に見ていきましょう!

表示方法①:imgタグで表示

See the Pen ➀SVG by jito-coder (@jito-coder) on CodePen.

<img src="./img/name.svg">

通常通りimgタグを用いて、パスを合わせて表示するやりかたです。

pngやjpgと同じ方法なので、わかりやすいかと!

表示方法②:svgタグで表示

See the Pen ➁SVG by jito-coder (@jito-coder) on CodePen.

下記のように<svg>タグを使って表示します。そのタグに対してCSSを当てれば大きさの変更も可能。

<div class="img">
    <svg id="~~~" data-name="~~~" xmlns="http://www.w3.org/2000/svg" viewBox="~~~">
        ~~~~~
    </svg>
</div>
.img svg {
  width: 150px;
  height: 100px;
}

svgタグのコードは、画像をエディターで表示すれば見ることができます。下記の感じに↓

これをHTMLの反映したい部分にコピペすればOK。

反映されない??

場合によってChromeだと表示されないことがあります。

そんな時はsvgタグにあるxlink:href=部分を見直しましょう。

<!-- 修正前 -->
xlink:href="data:img/png;

<!-- 修正後 -->
xlink:href="data:image/png;

「img」を「image」に変更してあげると、表示されるようになります。

表示方法➂:objectタグで表示

See the Pen ➂SVG by jito-coder (@jito-coder) on CodePen.

<object data="./img/name.svg" type="image/svg+xml"> </object>

こちらはobjectというタグで表示するやり方です。data属性でファイルを読み込んで表示しています。

svgタグで記述するより、コードが少ないので見やすくなりますね。

読み込んでるので、検証ツールで見るとsvgタグが埋め込まれてるのがわかります↓

svg画像を再利用する場合は、objectタグで表示するのがオススメな感じですね。

表示方法➃:cssにて表示

See the Pen ➃SVG by jito-coder (@jito-coder) on CodePen.

.img {
  background-image: url(../img/name.svg);
  background-repeat: no-repeat;
  background-size: contain;
  width: 150px;
  height: 100px;
}

cssにてbackground-imageを用いて、背景画像として表示する方法です。

これもpngやjpgと同じやり方ですね。

【解説】SVG画像をアニメーションで表示する方法

最後にSVG画像を使った簡単なアニメーションを紹介していきますね。

サンプルがこちら↓

See the Pen ➃SVG by jito-coder (@jito-coder) on CodePen.

<div class="img">
    <svg id="name" data-name="name" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 83.97 49.18">
        <g id="name2" data-name="name2">
            <g>
                <!-- ここにpathが入ります -->
                <!-- ここにpathが入ります -->
                <!-- ここにpathが入ります -->
            </g>
        </g>
    </svg>
</div>
.img svg {
  width: 150px;
  height: 100px;
  fill: transparent;
  stroke: #303c7c;
  stroke-width: 2px;
  animation: name 3s ease infinite;
}

@keyframes name {
  0%{
    stroke-dasharray:0 50;
    fill: transparent;
  }
  50%{
    stroke-dasharray:50 0;
    fill: transparent;
  }
  100%{
    stroke-dasharray:50 0;
    fill: #303c7c;
  }
}

コードの意味として重要な点がこちら↓

  • 「fill」を指定
  • 「stroke」を指定
  • animationで「fill」と「stroke」をカスタマイズ

順に見ていきましょう。

「fill」を指定

まずSVG画像に対して「fill」を指定します。

fillとは簡単に説明すると、塗りつぶしプロパティですね。

例えば「fill: pink」と指定すると下記になります↓

.img svg {
  fill: pink;
}

で、そんなfillを今回の例では透明色にしてあげました↓

.img svg {
  fill: transparent;
}

「stroke」を指定

次に「stroke」を指定します。

strokeとは簡単に説明すると、輪郭線の色や太さを指定するプロパティですね。

今回は下記のように「#303c7c」を輪郭線に色づけました。太さは2pxですね。

.img svg {
  fill: transparent;
  stroke: #303c7c;
  stroke-width: 2px;
}
ジト
ジト

透明色に塗りつぶして、紺色の輪郭線がある状態だね!

animationで「fill」と「stroke」をカスタマイズ

あとはanimationを使って、塗りつぶし色と輪郭線をいじればOK。

animation: name 3s ease infinite;
@keyframes name {
  0%{
    stroke-dasharray:0 50;
    fill: transparent;
  }
  50%{
    stroke-dasharray:50 0;
    fill: transparent;
  }
  100%{
    stroke-dasharray:50 0;
    fill: #303c7c;
  }
}

「fill」を使って透明色から#303c7cに変化。

「stroke-dasharray」を使って、「実線0+間隔50」⇒「実線50・間隔0」に変化させています。

別サンプル

一筆書きのようなSVGアニメーションもサンプルとして作ってみました!

See the Pen ➄SVG by jito-coder (@jito-coder) on CodePen.

.img svg {
  width: 150px;
  height: 100px;
  fill: transparent;
  stroke: #303c7c;
  stroke-width: 2px;
  stroke-dasharray: 200px;
  animation: name 3s ease infinite;
}

@keyframes name {
  0%{
    stroke-dashoffset: 200px;
    fill: transparent;
  }
  50%{
    fill: transparent;
  }
  100%{
    stroke-dashoffset: 0px;
    fill: #303c7c;
  }
}

「stroke-dasharray」を使い、間隔200pxにして指定。

「stroke-dashoffset」を使い、始まりを200pxに指定しました。

【解説】SVG画像をHTML・CSSで表示する方法【アニメーションあり】:まとめ

  1. imgタグで表示
  2. svgタグで表示
  3. objectタグで表示
  4. cssにて表示
ジト
ジト

SVG画像を表示したいときは試してみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA