WordPressでかっこいいMV(メインビジュアル)を作りたい! particles.js編

トップページのMVを作りたいと思います。

メインビューを作り込めていないトップページのスクショ


テック系のWebサイトで稀によく見る、点と点が線でつながって動いているアニメーション(力学モデルのネットワークグラフ的な??)を作ってみます。

点と点が線でつながって動いているアニメーションのラフ

調べてみると、particles.jsというライブラリを使用しているようでしたので、こちらをWordPressに導入していこうと思います。

・HTMLにアニメーションを表示するエリアを追加

HTML
<div class="bl_mv">
    <!-- ここにparticles-jsを表示 -->
    <div id="particles-js" class="bl_mv_canvas"></div>
    <div class="bl_mv_txt">
        <h1 class="bl_mv_heading">たららんたるの個人サイトです</h1>
        <p class="bl_mv_note">仕事でつかうフロントエンド技術やWordPressの実験場であり、趣味ブログです</p>
    </div>
</div>

・cssでアニメーション表示エリアを調整

Sass
.bl_mv {
  background-color: #000;
  height: 100vh;
  width: 100%;
  position: relative;
  &_canvas {
    height: 100%;
    width: 100%;
    object-fit: contain;
    background-color: black;
  }
...省略

・functions.phpでparticles.jsの読み込み設定

functions.php
add_action('wp_enqueue_scripts', 'tararan_enqueue_scripts');
function tararan_enqueue_scripts()
{
    //フロントページだけで読み込む
    if (is_front_page()) {

        wp_enqueue_script(
            'particles',
            "https://cdn.jsdelivr.net/npm/particles.js@2.0.0/particles.min.js",
            array(),
            wp_get_theme()->get('Version'),
            true //フッターで読み込む
        );

        wp_enqueue_script(
            'mv',
            get_theme_file_uri('assets/js/mv.js'),
            array('particles'), //particles.jsに依存
            wp_get_theme()->get('Version'),
            true //フッターで読み込む
        );
        
        //JavaScriptでjsonの読み込みをするために、テンプレートのURIを渡しておく
        wp_localize_script('mv', 'wp_props', [
            'template_directory_uri' => get_template_directory_uri()
        ]);
    }
}

・mv.js (アクセシビリティを考慮し、prefers-reduced-motion で アニメーションを無効化できるよう設定 )

/assets/js/mv.js
//アクセシビリティ対応 アニメーションを無効にできるよう設定
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
if (!mediaQuery.matches) {
  particlesJS.load(
    "particles-js",
    wp_props.template_directory_uri + "/assets/js/particlesjs-config.json",
    function () {
      console.log("callback - particles.js config loaded");
    }
  );
}

・particles.jsの設定ファイルを設置(particles.jsのサイトからダウンロード)

/assets/js/particlesjs-config.json
{
  "particles": {
    "number": {
      "value": 80,
      "density": {
        "enable": true,
        "value_area": 800
      }

...省略

デフォルトだと点が多くて速くてうっ…ってなったので調整します。particles.jsのサイトから、プレビューを見ながらアニメーションの設定をして、設定ファイルをダウンロードします

https://vincentgarreau.com/particles.js/ でプレビューを見ながらアニメーションの設定ができる

完成! → トップページ