カテゴリー: ウェブ制作
タグ:JS(6) アニメーション(1)
SVGとVivus.jsを使ってペンで描画する様なアニメーションを作る方法
Webサイトで画像に動きを付けたい場面、みなさんも何度か経験したことがあると思います。画像に動きがあると、大きなアクセントになりますよね。
今回はレスポンシブなサイトでも使いやすい、SVGとJavascript『Vivus.js』を使用したアニメーションについて書いて行こうと思います!
ちなみに、今回の完成図はこちら。
See the Pen SVGアニメーション by tipdip (@tipdip_blog) on CodePen.
『Vivus.js』はここからダウンロードできますので、始めに取得しておいてください。
SVG画像を用意する
まずは画像を用意しましょう。
SVGファイルはAdobe illustratorで作成することができます。
今回はサンプルでチップディップのロゴを用意しました。

画像を作成する際、テキストはアウトラインに変換しておいてください
『ファイル』から『別名で保存』を選択し、ファイル形式『SVG(svg)』を選択します。

これでSVGファイルを用意することができました。
作成したSVGファイルの中身を整理する
作成したSVGファイルをテキストエディタで開くと、中身はこんな感じになっています。
このコードを少し弄っていきます。
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="-278 198.3 283.5 101.9" style="enable-background:new -278 198.3 283.5 101.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#231815;}
.st1{fill:#E8C229;}
.st2{fill:#D61518;}
</style>
<g>
<g>
<g>
<path class="st0" d="M-156.6,260h-5.4v-39.5h-14.8v-4.9h35v4.9h-14.8V260z"/>
<path class="st0" d="M-135.3,221.1v-5.7h5.1v5.7H-135.3z M-135.2,260v-31.5h5.1V260H-135.2z"/>
・
・
・
今回はここから少し手を加えて、この形にしています。
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="-278 198.3 283.5 101.9"> <g> <g> <g> <path class="path_black" fill="none" stroke="#666" d="M-156.6,260h-5.4v-39.5h-14.8v-4.9h35v4.9h-14.8V260z"/> <path class="path_black" fill="none" stroke="#666" d="M-135.3,221.1v-5.7h5.1v5.7H-135.3z M-135.2,260v-31.5h5.1V260H-135.2z"/> ・ ・ ・
<path>部分の『stroke』は初めに引かれる線の色です。最後に塗られるロゴの色はcssで指定するので、今回class名は『path_(色)』としています。
HTMLを記述
HTMLはこの様になります。
特に難しいことはしていないので、説明は簡単に。
<head>
・
・
・
<script type="text/javascript" src="js/vivus.js"></script>
<style type="text/css">
path {
fill-opacity: 0;
transition: fill-opacity 1s;
}
.fill path.path_black{
fill: #000;
fill-opacity: 1;
}
.fill path.path_yellow{
fill: #E9C229;
fill-opacity: 1;
}
.fill path.path_red{
fill: #D71518;
fill-opacity: 1;
}
.fill path{
stroke:none;
}
</style>
</head>
<body>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="-278 198.3 283.5 101.9">
<g>
<g>
<g>
<path class="path_black" fill="none" stroke="#666" d="M-156.6,260h-5.4v-39.5h-14.8v-4.9h35v4.9h-14.8V260z"/>
<path class="path_black" fill="none" stroke="#666" d="M-135.3,221.1v-5.7h5.1v5.7H-135.3z M-135.2,260v-31.5h5.1V260H-135.2z"/>
・
・
・
</svg>
<script>
new Vivus('Layer_1', { duration: 100 , start: 'autostart', pathTimingFunction: Vivus.EASE_OUT,}, function(obj){
obj.el.classList.add('fill');
});
</script>
</body>
- <head>内で『Vivus.js』を読み込む
- styleを記述(ロゴの黄色部分を『path_yellow』、赤色部分を『path_red』としています。)
- <body>内の表示したい場所にsvgをコピペ
- その下に<script>を記述
やり方さえ判ってしまえば記述は簡単ですね!
サイトの動きの付け方のアプローチの一つとして、ぜひ活用してみてください!
See the Pen SVGアニメーション by tipdip (@tipdip_blog) on CodePen.
2017.02.27

