先日、TOFUラボにてCSSアニメーションの勉強会をさせていただきました!
ありがとうございました!
そこでタイピング風のテキストアニメーションを作りたい、というお声があったので
本日はElementor + ちょこっとコード(CSSとJS)を加えて作る方法を解説してまいります。
もちろんコピペOKです!ご活用くださいませ〜
こんなアニメーションを作ります
See the Pen タイピング風アニメーション by Maeda (@tasogare-design-office) on CodePen.
ちょこっとCSSとJava Script コードを追加すればできますよ〜
まずはElementor で構築
見出しを追加します。

HTMLタグをお好みのものに変えてください!
今回はpにしてます。
コードを追加しよう!
コードの紹介
CSSはカーソルを点滅させるだけで、JavaScriptでアニメーションをかけています!
(コードはもちろんChatGPTに手伝ってもらってます〜)
<style>
.cursor {
  display: inline-block;
  height: 1.2em; 
  vertical-align:-0.18em; 
  border-right: 1px solid currentColor;
  animation: blink 1s step-end infinite;
}
@keyframes blink {
  50% { border-color: transparent; }
}
</style>
<script>
document.querySelectorAll('.typing p').forEach((p) => {
  const originalNodes = Array.from(p.childNodes);
  const elements = [];
  
  originalNodes.forEach((node) => {
    if (node.nodeType === Node.TEXT_NODE) {
      elements.push(...node.textContent.split(''));
    } else if (node.nodeName === 'BR') {
      elements.push('<br>');
    }
  });
  p.textContent = '';
  const cursor = document.createElement('span');
  cursor.className = 'cursor';
  cursor.innerHTML = ' ';
  p.appendChild(cursor);
  let index = 0;
  let animationStarted = false;
  function typeNextChar() {
    if (index < elements.length) {
      const item = elements[index];
      if (item === '<br>') {
        cursor.insertAdjacentHTML('beforebegin', '<br>');
      } else {
        cursor.before(document.createTextNode(item));
      }
      index++;
      setTimeout(typeNextChar, 80); // ←表示速度
    }
  }
  const observer = new IntersectionObserver(
    (entries) => {
      entries.forEach((entry) => {
        if (entry.isIntersecting && !animationStarted) {
          animationStarted = true;
          typeNextChar();
          observer.unobserve(entry.target);
        }
      });
    },
    {
      root: null,
      rootMargin: '0px 0px -30% 0px', // ←位置調整
      threshold: 0
    }
  );
  observer.observe(p);
});
</script>
※見出しのタグがpではない場合、変更が必要なのでご注意ください!
※タイピングの速度は46行目、開始タイミング62行目で、お好みで調整してください!
どこに入れる?
Elementor Proの方
Elementor > custom code > new code から入れましょう!

※今回JSメインなので、位置はbody endの方が確実に作動するので、そうしています〜
Elementor無料版の場合
単体のページに適用させるなら、該当ページのelementor画面でコンテンツの一番下に
HTMLウィジットに入れちゃうのが早いです!

これでもちゃんと動きますよ〜
複数ページで使いたい場合には、WP code などのプラグインを使うのがおすすめです!
無料でCSSもJSもPHPもかけますよ!
どうしてもノーコードでやりたい人へ
コードアレルギーの方で、crocoblockをお持ちの方に朗報です!
crocoblock の JetElementsのAnimated Text Widget を使えば同じようなアニメーションをつけることができます。
まとめ
コードは長いですが、コピペするだけなので簡単に実装できます〜!ぜひお試しください!
本日もお疲れ様でした!
 
															




