particles.jsを使って要素の背景に美しいアニメーションを表示する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
particles.jsはGitにて公開されているJavaScriptの軽量のライブラリになります。ウェブサイトでよく見かける幾何学模様等の美しいアニメーションを簡単に実装することができます。
どのように実装されているのか気になって調べたところ、particles.jsというライブラリにたどり着きました。particles.jsを使えば、グラフィカルなアニメーションを簡単に実装することができますので、本記事にてご紹介できればと思います。
本記事の内容
- particles.jsの使い方
- 設定ファイルで編集してアニメーションを変更する
- particles.jsを使用したアニメーションのサンプル
では、解説していきます。
particles.jsの使い方
particles.jsはGitにて公開・配布されているJavaScriptのライブラリです。下記のページでダウンロードすることができます。
ダウンロードした圧縮ファイルに必要なファイル一式が内包されています。下記のファイルを取り出し、アニメーションを表示するページの</body>タグの直前で読み込むように記述します。
<script src="particles.min.js"></script> <script src="app.js"></script>
次にparticles.jsでアニメーションを表示したい要素に下記のidを付与します。
<div id="particles-js"></div>
もし、上記のファイルを読み込んでidを指定してもアニメーションが表示されない場合、アニメーションを描画する「canvas」の表示順が下になっている可能性があります。親要素に「position: relative」を設定し、「canvas」に下記のスタイルを定義することで解消されます。
canvas { position: absolute; top: 0; left: 0; z-index: 1; }
いかがでしょうか。指定した要素の美しいアニメーションが表示されたかと思います。設定次第ではクリックやマウスオーバーにも反応するアニメーションを実装することができます。
下記は、デフォルトの状態でparticles.jsのアニメーションを実装したデモになります。
デモではメインビジュアルにアニメーションを表示してみました。開発ツールでソースを見ていただければおわかりになると思いますが、指定したid要素の直下にcanvasが追加されていると思います。canvasに描画することで、美しいアニメーションが滑らかに動いていますね。
また、particles.jsでは幾何学模様だけではなく、設定ファイルを変更することで様々な形のアニメーションを描画することができます。下記でparticles.jsで設定可能な項目をご紹介したいと思います。
particles.jsの設定ファイルを編集する
particles.jsでアニメーションを細かく設定するには、上記で読み込んだ「app.js」という設定ファイルを編集します。「app.js」の内容を変更することで、様々な形や色、動きのアニメーションを実装することができます。
下記「app.js」の各項目に日本語のコメントを記載いたしました。設定を変更して色々なアニメーションを実装してみてくださいね。
particlesJS('particles-js', //アニメーションを表示する要素(id)を指定する。同名のclassが存在する場合は動作しない { "particles": { //シェイプ数 "number": { //要素内に表示するシェイプの数 "value": 80, "density": { //シェイプ表示間隔設定 "enable": true, //true:有効, false:無効 //シェイプ表示間隔 "value_area": 1000 } }, //シェイプ色 "color": { "value": "#ffffff" //複数指定["#ff7fbf", "#ff7fff", "#bf7fff"] }, //シェイプの設定 "shape": { //シェイプ形 "type": "circle", //設定値:circle, edge, triangle, polygon, star, image, 複数指定["circle", "triangle", "image"] //シェイプボーダー設定 "stroke": { //ボーダー幅 "width": 0, //ボーダー色 "color": "#000000" }, //シェイプの形でpolygonを指定した場合 "polygon": { //ポリゴン角数指定 "nb_sides": 5 }, //シェイプの形でimageを指定した場合 "image": { //画像パス "src": "img/github.svg", //画像幅 "width": 100, //画像高さ "height": 100 } }, //シェイプ透過率指定 "opacity": { //透過率指定 "value": 0.5, //ランダム設定 "random": false, //true:有効, false:無効 //透過アニメーション設定 "anim": { //アニメーション設定 "enable": false, //true:有効, false:無効 //アニメーション速度 "speed": 1, //アニメーション最小透過率 "opacity_min": 0.1, //アニメーション同期 "sync": false //true:有効, false:無効 } }, //シェイプサイズ "size": { //シェイプサイズ指定 "value": 5, //ランダムサイズ "random": true, //true:有効, false:無効 //サイズアニメーション設定 "anim": { //アニメーション設定 "enable": false, //true:有効, false:無効 //アニメーション速度 "speed": 40, //アニメーション時のシェイプ最小サイズ, "size_min": 0.1, //アニメーション同期設定 "sync": false //true:有効, false:無効 } }, //シェイプを線で繋ぐか "line_linked": { //線の設定 "enable": true, //true:有効, false:無効 //線の間隔 "distance": 150, //線の色 "color": "#ffffff", //線の透過率 "opacity": 0.4, //線の幅 "width": 1 }, //シェイプの動きの設定 "move": { //動きを制御するか "enable": true, //true:有効, false:無効 //動く速度 "speed": 6, //動く方向 "direction": "none", //none, top, top-right, right, bottom-right, bottom, bottom-left, left, top-left //ランダム設定 "random": false, //true:有効, false:無効 //静止状態にする "straight": false, //true:有効, false:無効 //シェイプの動き "out_mode": "out", //ボックス内で動かす bounce ボックス外に逃がす out "attract": { "enable": true, "rotateX": 600, "rotateY": 1200 } } }, "interactivity": { "detect_on": "canvas", //マウスイベント設定 "events": { //マウスオーバー時の処理 "onhover": { "enable": true, //true:有効, false:無効 "mode": "grab" //grad:付近のシェイプと線を繋ぐ, bubble:拡大, repulse:拒絶 }, //クリック時の処理処理 "onclick": { //クリック時の処理 "enable": true, //true:有効, false:無効 //クリック時の処理の設定 "mode": "push" //push:追加, remove:削除, bubble:拡大, repulse:拒絶 }, "resize": true }, //以下でマウスイベント発生時の詳細値を設定 "modes": { "grab": { "distance": 200, "line_linked": { "opacity": 1 } }, "bubble": { "distance": 400, "size": 40, "duration": 2, "opacity": 8, "speed": 3 }, "repulse": { "distance": 1 }, "push": { "particles_nb": 4 }, "remove": { "particles_nb": 2 } } }, //Retina Display対応 "retina_detect": true, //true:有効, false:無効 } );
particles.jsの使用例
最後にparticles.jsを使用したサンプルをご紹介します。色々なパターンのアニメーションを簡単に実装できるので、試して頂ければと思います。
雪
See the Pen Particles - Snows by Ryohei (@intotheprogram) on CodePen.
四角形
See the Pen Particles - Square by Ryohei (@intotheprogram) on CodePen.
ポリゴン
See the Pen Particles - Polygon by Ryohei (@intotheprogram) on CodePen.
もし、canvasのアニメーションについて深く知りたい方は下記の参考書がおすすめです。全体を通してわかりやすい構成で、サンプルスクリプトを使って丁寧に解説されていますので、基本からしっかりと身につけることができる一冊となっています。
以上、particles.jsを使って要素の背景に美しいアニメーションを表示する方法のご紹介でした!素敵なアニメーションを実装していただければ幸いです。