会員ログイン
GSAP

Gsapを使用したテキストアニメーション #1

Gsapでテキストアニメーションを実装
はじめに
概要
Gsapを使用して、Webサイトでよく見かける見出しのアニメーションを実装していきます。サンプルコードもダウンロードできますので、Gsapを取り入れたい方はこちらで理解を深めてください。
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。
疑問を持つ読者のイラスト読者

Gsapを使用したテキストアニメーションは、最初にどこを理解するとよいですか?

著者・木村のプロフィール写真木村

対象要素を取得する処理、動作を始める条件、見た目を変える処理の三つに分けると、コードの流れを追いやすくなります。

話を聞く読者のイラスト読者

実際に試すときは、手順だけでなく確認方法も知っておいた方がよいでしょうか?

著者・木村のプロフィール写真木村

はい。この記事では、作業の目的から実装後の確認までを順番に整理します。自分の環境と照らし合わせながら読み進めてください。

 

実装内容

実装内容では、Gsapを使用したテキストアニメーション #1を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

パターン1

タイトルテキスト

パターン2

タイトルテキスト

パターン3

タイトルテキスト

サンプルコード

サンプルコードでは、Gsapを使用したテキストアニメーション #1を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

上記のコードはこちらからダンロードできます。
 

サンプルコードで押さえたいポイント

サンプルコードは、コードや設定だけを切り離して覚えるより、何を変えるための処理なのかを確認してから試すと理解しやすくなります。変更前の状態を控え、作業を一つずつ反映すると、問題が起きた場所も特定しやすくなります。

サンプルコードの確認方法

ブラウザーのコンソールにエラーがないかを確認し、クリックやスクロールを繰り返してもイベントが重複しないかを試します。スマートフォン幅とキーボード操作も確認してください。

ポイント解説

ポイント解説では、Gsapを使用したテキストアニメーション #1を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

HTML

<div class="main-title">
  <h1 class="js_1">タイトルテキスト</h1>
  <span class="line js_1-2"></span>
</div>
<!-- /.main-title -->
gsapで指定する要素を明確にするために、js独自のクラスを記述します。ここではテキストのアニメーションには.js_1並びに、ラインのアニメーションには.js_1_2としています。(名前は任意)

SCSS

.main-title {
  width: fit-content;
  margin-bottom: 50px;

  &.overflow-hidden {
    overflow: hidden;
  }
}

h1 {
  span {
    will-change: transform;
    font-weight: bold;
    font-size: 30px;
    display: inline-block;
  }
}

.line {
  width: 100%;
  display: block;
  border: 0.5px solid #0c1c24;

  &-center {
    width: 100%;
    display: block;
    border: 0.5px solid #0c1c24;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }

  &-right {
    width: 100%;
    display: block;
    border: 0.5px solid #0c1c24;
    position: absolute;
    right: 0;
  }
}
ラインが消える表現として、main-titleにoverflow: hidden;を使用しています。こちらを指定しないとこのようになります。

パターン2

タイトルテキスト
main-titleをwidthをコンテンツの幅に設定しておくことも重要です。ここではfit-contentを使用しています。

Javascript

export function txtSpan(el) {
  const titleElement = document.querySelector(el),
    titleTexts = titleElement.textContent.split("");

  titleElement.textContent = "";
  let outputTexts = "";
  titleTexts.forEach(
    (text) => (outputTexts += text === " " ? " " : `<span>${text}</span>`)
  );
  titleElement.innerHTML = outputTexts;
}


txtSpan(".js_1");
まずは、タイトルを一つずつspanタグで囲みます。ここでは、上記のような方法で設定しています。そして、spanタグをdisplay:inline-block;に変更し、アニメーションを設定していきます。※spanタグがinlineのままだと、アニメーションがうまく機能しません。
 
const txt = gsap.timeline();
txt
  .from(".js_1 > span", 1, {
    y: "100%",
    opacity: 0,

    stagger: {
      amount: 0.7,
    },

    ease: "back.out(2.5)",
  })
  .from(
    ".js_1-2",
    {
      duration: 1.2,
      ease: "cubic-bezier(0.22, 1, 0.36, 1)",
      width: "0",
    },
    "<=0.6"
  );
spanタグをy: “100%”としてテキストの下に配置し、fromメソッドでアニメーションさせます。staggerを使用することにより、テキストを1文字ずつずらしてアニメーションさせることができます。staggerについてはこちらを参照ください。 ラインアニメーションは、easeに”cubic-bezier(0.22, 1, 0.36, 1)”を指定し、fromメソッドでwidth: 0;に設定します。CSSを使って開始位置を変更すれば、パターン3のように右から左に伸びるアニメーションも同じ値で実現できます。
 

実装前に確認しておきたいこと

ここでは、Gsapを使用したテキストアニメーションを実際の制作へ取り入れる前に、準備しておきたい内容を整理します。先に作業範囲と確認方法を決めておくと、既存ページへの影響を抑えながら進められます。

作業の目的と変更範囲を決める

対象要素を取得する処理、動作を始める条件、見た目を変える処理の三つに分けると、コードの流れを追いやすくなります。 サンプルをそのまま貼り付ける前に、どのページ、どの要素、どの利用者へ影響するのかを書き出してください。目的が明確であれば、必要以上にコードや設定を増やさずに済みます。

元の状態へ戻せるようにする

テーマや設定を変更するときは、対象ファイルや設定値のコピーを残します。複数の変更を一度に行わず、一つ反映するたびに表示と動作を確認すると、問題が起きても原因を切り分けやすくなります。

よくあるつまずきと確認方法

Gsapを使用したテキストアニメーションが期待どおりに動かない場合は、コードを追加し続ける前に、読み込み順、対象要素、設定値、キャッシュの順で確認します。小さな入力ミスや確認条件の違いが原因になることも少なくありません。

変更が反映されない場合

保存したファイルと表示中のページが対応しているかを確認し、キャッシュを消して再読み込みします。ブラウザーの開発者ツールやWordPressのエラーログを確認すると、読み込み失敗や記述ミスを見つけやすくなります。

公開前の最終確認

ブラウザーのコンソールにエラーがないかを確認し、クリックやスクロールを繰り返してもイベントが重複しないかを試します。スマートフォン幅とキーボード操作も確認してください。

まとめ

  • Gsapでリッチなアニメーションが実装できる
  • CSSアニメーションの知識を応用できる
  • 指定する要素を明確にすることが大切
  • timelineでアニメーションをコントロールできる

MEMBER COMMENTS

コメント(0件)

会員ログイン後にコメントできます

記事への質問や感想をコメントで共有できます。無料会員登録後もこの記事へ戻れます。