logo
コーディング

更新日

アニメーションやグラフ等、SVGを使ったJavaScript&jQueryプラグイン11

今やCSSだけでも多彩なアニメーションを取り入れることができますが、JavaScriptとSVGを使うことで、より美しく自由度のきく表現が可能です。今回はSVGを使った、便利なJavaScriptライブラリーやjQueryプラグインを紹介します。

ラインアート

1. DrawSVG

Web サイトGitHubデモ

SVG のパスを使ってラインをアニメーションさせるためのプラグイン。2kb と軽量です。デモ画面右下の「RETURN」ボタンをクリックして試してみてください。

var mySVG = $("#my_svg_element").drawsvg();

で要素を指定し、

mySVG.drawsvg("animate");

で実行させるだけの手軽さ。オプションを指定してスクロールする毎にラインを描くといった効果も実装できます。

2. Lazy Line Painter

Web サイト・デモGitHub

昔からあるラインアートのプラグイン。レスポンシブにも対応とのこと。線種や色、透明度、遅延、アニメーションの表示方法など、様々なオプションが用意されています。

Web サイトには SVG をラインアートに変換するためのジェネレーターも用意されています!SVG ファイルをドロップすれば、すぐにアニメーションとともに SVG が表示され、コードも生成されます。とっても便利ですね!(適当なサンプル画像で申し訳ない)

3. vivus

Web サイト・デモGitHub

複数のパスを同時に、少し遅らせて、またはひとつひとつ描いていけます。Web サイトで表示方法や動きを確認できますよ。

<svg id="my-svg">
  <path...>
  <path...>
  <path...>
</svg>

こんな感じで HTML に複数のパスを記述した後、

new Vivus("my-svg", { duration: 200 }, myCallback);

JavaScript で id を指定して実行。オプションが必要であれば記述して完成です!

4. Walkway

Web サイトGitHubデモ

こちらは上記のプラグインに比べるととってもシンプル。オプションも遅延とイージング指定のみですが、これだけでも十分きれいなラインアートが描けます。

window.onload = function () {
  var svg = new Walkway({
    selector: "#example",
    easing: "easeInOutCubic",
    duration: 2100,
  }).draw();
};

Web サイトのデモではこんな感じで JavaScript が書かれています。オプションの値はお好みで変更してください。

グラフ

5. Chartist

Web サイトGitHubデモ

折れ線グラフや棒グラフ、円グラフなど、様々な形態のグラフを実装できます。レスポンシブやアニメーションにも対応しており、より豊かに、わかりやすく表示できます。

new Chartist.Line(
  ".ct-chart",
  {
    labels: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    series: [
      [12, 9, 7, 8, 5],
      [2, 1, 3.5, 7, 3],
      [1, 3, 4, 5, 6],
    ],
  },
  {
    fullWidth: true,
    chartPadding: {
      right: 40,
    },
  }
);

例えば 3 つのチャートを表示するなら、ラベルとそれに付随する値を記述すれば OK。デモページにてサンプルグラフとコードが紹介されているので、思い通りの表現が手軽にできるでしょう。

6. xCharts

折れ線グラフ、棒グラフが作成できます。

<figure style="width: 400px; height: 300px;" id="myChart"></figure>

HTML には figure タグで指定。

var data = {
  xScale: "ordinal",
  yScale: "linear",
  main: [
    {
      className: ".pizza",
      data: [
        {
          x: "Pepperoni",
          y: 4,
        },
        {
          x: "Cheese",
          y: 8,
        },
      ],
    },
  ],
};
var myChart = new xChart("bar", data, "#myChart");

JavaScript はラベルや値を指定し、グラフの種類と ID を指定して実行。グラフの種類は bar、cumulative、line、line-dotted から選択できます。

7. Animated Interactive Donut Chart

Web サイトデモ

こちらはドーナツグラフ専用。ローディング中やホバー時のアニメーションがおもしろいです。

<svg id="svg"></svg>

ファイルを読み込ませた後、HTML には SVG 要素を追加するだけ。

var programmingSkills = [
  {
    value: 45,
    label: "jQuery",
    color: "#3399FF",
  },
  {
    value: 35,
    label: "JavaScript",
    color: "#FFC575",
  },
  {
    value: 20,
    label: "Ruby",
    color: "#99CC00",
  },
];

JavaScript には値とラベル、色を必要なだけ追加すれば完成。

8. Dynamic Pie Chart-style Progress Bar

Web サイトデモ

パーセンテージとともに円グラフを表示します。ドーナツグラフやアニメーションにも対応。進歩状況を表すのに最適ですね。

<span class="demo">70</span> %

HTML で数値を記述。

$(function () {
  $(".demo").progressPie();
});

JavaScript はこれだけで OK。オプションで色やグラフのスタイルを変更したり、アニメーションを加えられます。デモページで様々な形態のグラフをコードとともに閲覧できるので、参考にしてみてください。

その他いろいろ

9. Rippler

Web サイト・デモGitHub

ボタンをクリックすると、クリック地点から波紋が広がるようなエフェクト。JavaScript と CSS ファイルを読み込み、付随するクラスを付けて HTML を記述。

<button class="btn btn-primary rippler rippler-default" href="#">
  Nice button
</button>

あとはスクリプトを呼び出せば OK。

$(document).ready(function () {
  $(".rippler").rippler();
});

オプションではエフェクトの大きさや時間の長さを変更できます。

10. Rate Yo!

GitHub

星評価を実装できるスクリプト。Web サービスなどと併用して使えそうです。JavaScript と CSS を読み込んで、星評価を表示したい箇所に div を挿入。

<div id="rateYo"></div>

JavaScript ではクラスか id を指定するだけでデフォルトの星評価が実装できます。

$(function () {
  $("#rateYo").rateYo();
});

オプションで星の数やサイズ、色などの装飾も変更可能。

11. Moves An Element Along A SVG Path

Web サイトデモ

SVG のパス上をオブジェクトが動きます。デザインのポイントに使えそうです。ファイルを読み込んだら HTML に軌道のパスを記述。デモでは赤い div を動かしていますが、画像など自由に変更可能。

<svg>
  <path d="M 436.5 333.5 ..." fill="none" stroke="#fff"></path>
</svg>
<div id="box"></div>

JavaScript にも同様にパスを記述して、オブジェクトが移動する速さやタイミング、動作方法を記述すれば OK。

$(function () {
  var a = new Motion($("#box"), {
    path: "M 436.5 333.5 ...",
  });

  var loop = function () {
    a.to(1, { duration: 10000, easing: "easeOutBounce" })
      .to(0, { duration: 10000, easing: "easeOutQuint" })
      .to(0.5, 2000)
      .to(0.8)
      .to(0.6)
      .to(0.7)
      .to(0, { duration: 3000, complete: loop });
  };
  loop();
});

SVG と JavaScript、CSS を組み合わせれば、様々な表現が可能ですね!素敵なエフェクトを追加して、より楽しめる Web サイトを作っていきましょう!

毎度のことながら、また中途半端な数字になってしまった…。