• 最終更新日
  • Java Script / jQuery

幾何学模様が変化する「particles.js」をご紹介!クールな動きが印象に残る

ホームページならではの動きっていうのがたくさんあるんですよ。チラシなんかの紙媒体では表現できないWebだからこそ表現できる動きです。

この動きもかなり注目されている動きなので、いくつかのサイトでカッコ良く取り入れられているのを目にした事があります。比較的クールなサイトなどにこの幾何学模様は合いますね。

今回は「particles.js」で変化しながら浮遊する幾何学模様を実装していきます。「particles.js」はこの他にも、雪を降らせたり、グラデーションを変化させたり、といろいろ使えます。

particles.jsのダウンロード方法

Vincent Garreau

Vincent Garreau

こちらが「particles.js」を制作した「Vincent Garreau」のサイトです。ここのサイトを見てもらうと幾何学模様のサンプルが表示されているので、動きも合わせてご確認ください。

ファイルをダウンロードするには「GitHab」のページからおこなえます。

particles.jsのダウンロード

①の「Code」をクリックするとボックスが表示されるので、その中にある②の「Download ZIP」からダウンロードします。

ZIPファイルをダウンロードしたら解凍して「particles.js-master」フォルダの中にある「particles.min.js」を取り出しておきましょう。

ファイルは「particles.js」と「particles.min.js」がありますがどちらも同じ内容です。ただ「min」となっている方がファイルの容量が小さいのでこちらを使用します。

あと「demo」フォルダの中の「js」フォルダ内にある「app.js」も取り出しておきます。

「particles.js」を使用する際にはjQueryが必要ありません。なので必要なファイルは「particles.min.js」と「app.js」の2点でOKです。

particles.jsの記述方法とカスタマイズ

それではHTMLの記述方法を見ていきますので、こちらをコピペしてみてください。導入方法はめちゃめちゃ簡単なので、実際に幾何学模様のアニメーションを実装しちゃいましょう。

index.html

            
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>幾何学模様のアニメーション</title>
  6. <style>
  7. * {
  8.   margin: 0;
  9.   padding: 0;
  10.   box-sizing: border-box
  11. }
  12. .bg {
  13.   background: linear-gradient(-135deg, #e4a972, #9941d8)
  14. }
  15. </style>
  16. </head>
  17. <body>
  18.   <div class="bg">
  19.     <div id="particles-js"></div>
  20.   </div>
  21. <script type="text/javascript" src="js/particles.min.js"></script>
  22. <script type="text/javascript" src="js/app.js"></script>
  23. </body>
  24. </html>

簡単ですねぇ、デフォルトのままじゃ白背景に白い幾何学模様が表示される事になるので、アニメーションを確認するために「bg」のクラスを付けたdivを追加して背景色を指定しています。

            
  1. <div id="particles-js"></div>

HTMLに必要な記述は上記の1行のみです。あとは「particles.min.js」と「app.js」のファイルを読み込めば幾何学模様のアニメーションが表示されます。

particles.jsの設置場所

ちなみに各ファイルはこのように設置しておきましょう。続いては「app.js」内の記述も確認しておきます。ここの値を変更する事によってカスタマイズする事が可能です。

app.js

            
  1. particlesJS('particles-js',
  2.   {
  3.     "particles": {
  4.       "number": {
  5.         "value": 80,
  6.         "density": {
  7.           "enable": true,
  8.           "value_area": 800
  9.         }
  10.       },
  11.       "color": {
  12.         "value": "#ffffff"
  13.       },
  14.       "shape": {
  15.         "type": "circle",
  16.         "stroke": {
  17.           "width": 0,
  18.           "color": "#000000"
  19.         },
  20.         "polygon": {
  21.           "nb_sides": 5
  22.         },
  23.         "image": {
  24.           "src": "img/github.svg",
  25.           "width": 100,
  26.           "height": 100
  27.         }
  28.       },
  29.       "opacity": {
  30.         "value": 0.5,
  31.         "random": false,
  32.         "anim": {
  33.           "enable": false,
  34.           "speed": 1,
  35.           "opacity_min": 0.1,
  36.           "sync": false
  37.         }
  38.       },
  39.       "size": {
  40.         "value": 5,
  41.         "random": true,
  42.         "anim": {
  43.           "enable": false,
  44.           "speed": 40,
  45.           "size_min": 0.1,
  46.           "sync": false
  47.         }
  48.       },
  49.       "line_linked": {
  50.         "enable": true,
  51.         "distance": 150,
  52.         "color": "#ffffff",
  53.         "opacity": 0.4,
  54.         "width": 1
  55.       },
  56.       "move": {
  57.         "enable": true,
  58.         "speed": 6,
  59.         "direction": "none",
  60.         "random": false,
  61.         "straight": false,
  62.         "out_mode": "out",
  63.         "attract": {
  64.           "enable": false,
  65.           "rotateX": 600,
  66.           "rotateY": 1200
  67.         }
  68.       }
  69.     },
  70.     "interactivity": {
  71.       "detect_on": "canvas",
  72.       "events": {
  73.         "onhover": {
  74.           "enable": true,
  75.           "mode": "repulse"
  76.         },
  77.         "onclick": {
  78.           "enable": true,
  79.           "mode": "push"
  80.         },
  81.         "resize": true
  82.       },
  83.       "modes": {
  84.         "grab": {
  85.           "distance": 400,
  86.           "line_linked": {
  87.             "opacity": 1
  88.           }
  89.         },
  90.         "bubble": {
  91.           "distance": 400,
  92.           "size": 40,
  93.           "duration": 2,
  94.           "opacity": 8,
  95.           "speed": 3
  96.         },
  97.         "repulse": {
  98.           "distance": 200
  99.         },
  100.         "push": {
  101.           "particles_nb": 4
  102.         },
  103.         "remove": {
  104.           "particles_nb": 2
  105.         }
  106.       }
  107.     },
  108.     "retina_detect": true,
  109.     "config_demo": {
  110.       "hide_card": false,
  111.       "background_color": "#b61924",
  112.       "background_image": "",
  113.       "background_position": "50% 50%",
  114.       "background_repeat": "no-repeat",
  115.       "background_size": "cover"
  116.     }
  117.   }
  118. );

はい、ちょっと長いですけど「app.js」の中にはこのような記述があります。ザックリですけどそれぞれの項目がどういう意味なのかを一覧で紹介しておきます。

number
シェイプの数と密度を設定します。
color
シェイプのカラーを設定します。
shape
シェイプの形状をを設定します。
opacity
透明度を設定します。
size
シェイプの大きさを設定します。
line_linked
線を設定します。
move
動きを設定します。
events
アクションのきっかけを設定します。
modes
アクションの方法を設定します。

各項目の数値などを変更してもらうと、どのように変化するのかをご確認頂けるかと思います。個人的には、幾何学模様で使用する場合はデフォルトでも特に問題ないので、マウスオーバー時の設定を変更するぐらいで良いかと思います。

particles.jsの動きを確認をしよう

「particles.js」を設置してみましたのでご確認ください。こちらがデフォルトの状態です。マウスを近づけるとシェイプが逃げていきますので遊んでみてください(笑)。

どうでしょうか?意味もなくマウスをグルグル回してしまいますね(笑)。あとクリックしてもイベントが起こりますので試してみてください。デフォルトでは「push」が設定されているので、クリックするとシェイプが増えていきます。

            
  1. "events": {
  2.   "onhover": {
  3.     "enable": false,
  4.     "mode": "repulse"
  5.   },
  6.   "onclick": {
  7.     "enable": true,
  8.     "mode": "remove"
  9.   },
  10.   "resize": true
  11. },

ひとつだけカスタマイズした例もご紹介します。

マウスオーバー時にアクションを起こさないように「enable」の値を「true」から「false」に変更します。これでマウスを乗せてもシェイプが逃げません。

あとは参考のためにクリック時のアクションの部分で「mode」が「push」だったのを「remove」に変更してみました。今度は増えるんじゃなくてシェイプが減っていきます。

デフォルトのマウスが近づくとシェイプが逃げるという動きは面白いんですが、サイトをクールに魅せたいなら後者のようにアクションを起こさない方が良いかなと思います。

「particles.js」には幾何学模様の他にもいろんな動きを作る事ができますので、遊びながらご自身で試してみてください。

ホームページの簡単な作り方以外にも
お得な情報や日常を紹介するブログも是非どうぞ!
Webに関連するレンタルサーバーなどの特徴・料金比較や、
個人的に挑戦している資格取得についての勉強法やグルメなどを紹介しています。