wow.jsをWordPressでも簡単に設定するカスタマイズ方法

鹿児島WordPressサポート

簡単にアニメーションを実装できる便利なライブラリ「wow.js」

WordPressでもさくっと追加できちゃうのでよく使わせてもらっております。ただ、Gutenbergを使う時はちょっと困った事が起こります。

wow.jsは、data-属性で「duration(スピード)」や「delay(遅延)」を個別に設定することができるのですが、Gutenbergではそれが容易に設定できません。

たとえば、横に並んだブロックを遅延しながらフェードインしたいとかですね。今回はそちらに対応する方法をご紹介したいと思います。

プラグインで対応する方法

一応、data属性が追加できるプラグインはないか?と探してみはみたものの、いまひとつ。

wow.js以外のWordPressプラグインに「animation.it」などもありますが、wow.jsの方が個人的に使いやすいので今回はパス。

やはり、独自でJavaScriptでカスタマイズするのがてっとり早そうと判断しました。

JavaScriptソース

ソースがこちら↓JavaScriptファイルの適当なところに追加してください。

jQueryとwow.jsを先に読み込んで置く必要があります。


   /**
    * *nana.hp scripts*
    * wow.js class→data変換
    * wow-delay-0.1s → data-wow-delay="0.1s"
    * wow-duration-0.1s → data-wow-duration="0.1s"
    */
   $("[class*='wow-']").each(function (i){

        const attrs = ["delay", "duration"];
        
        let obj = $(this);
        let classAttr = obj.attr("class");
        let classAttrs = classAttr.split(" ");
        let check = 0;
        for( let i=0; i<classAttrs.length; i++) {
            let classValue = classAttrs[i];
            for( let j=0; j<attrs.length; j++) {
                let wowKey = "wow-" + attrs[j];
                if(classValue.indexOf(wowKey + "-") >= 0) {
                    let wowValue = classValue.replace(wowKey + "-", "");
                    obj.attr("data-" + wowKey, wowValue);
                    check++;
                }
            }
            if (check == attrs.length) break;
        }
    });

WordPressの管理画面の設定

アニメーションしたいブロックの「class」に以下を入れます。(「高度な設定」ー「追加 CSS クラス」)

wow fadeInUp wow-delay-0.5s wow-duration-0.5s

「wow fadeInUp」はwow.jsの標準仕様ですね。その後ろが今回独自に追加するクラスになります。

ソースの解説

画面が読み込まれると、wow-●●●がセットされているタグを探して、みつかったらclassを解析して、「wow-delay-0.5s」などが設定されていれば、そのタグにdata属性「data-delay-●●●」を追加する仕様になっています。

ちなみに、上のサンプルは「delay」と「duration」だけが対象になっていますが、他の設定を追加したい場合は、以下のように2行目の配列に追加したいパラメーターを設定してあげてください。

const attrs = ["delay", "duration", "offset", 'iteration'];

参考にしていただければ幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です