[初心者向け]CSSでテキストアニメーションを作ろう

CSS、JavaScript

テキストアニメーションは、ウェブサイトに動きと魅力を追加する素晴らしい方法です。
この記事では、CSSを使って実装できる4つの基本的なテキストアニメーションを紹介します。初心者でも簡単に実装できるので、ぜひお試しください!

文字が左から右へスライドイン

See the Pen Text_Animation_2 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

このアニメーションでは、文字が左から右へ滑らかにスライドインします。初心者にも簡単に実装できます。

HTML

まず、HTMLの構造を見てみましょう。<div>タグでコンテナを作成し、その中に<h1>タグでテキストを配置します。

<div class="container">
  <h1 class="slide-in-text">Hello, World!</h1>
</div>

CSS

次に、CSSを使ってアニメーションを設定します。

/*文字が左から右へスライドイン*/
.container {
  display: inline-block;
}

.slide-in-text {
  overflow: hidden; /* コンテナの範囲外に文字が表示されないようにする */
  white-space: nowrap; /* テキストを1行に表示する */
  border-right: .15em solid orange; /* テキストの右端にカーソルのような線を表示する */
  animation: typing 4s steps(13, end) forwards, blink-caret .75s step-end 4s infinite, hide-caret 1s 4s forwards;
}

/* タイピングアニメーションの定義 */
@keyframes typing {
  from { width: 0 }
  to { width: 100% }
}

/* カーソルの点滅アニメーション */
@keyframes blink-caret {
  from, to { border-color: transparent }
  50% { border-color: orange }
}

/* カーソルを非表示にするアニメーション */
@keyframes hide-caret {
  to { border-color: transparent }
}

ポイントとなるCSSプロパティ

  • overflow: hidden
    コンテナの範囲外に文字が表示されないようにします。
  • white-space: nowrap
    テキストを1行に表示します。
  • border-right
    テキストの右端にカーソルのような線を表示します。
  • animation:
    複数のアニメーションを適用します。

注意点

  • 幅の設定
    typing」アニメーションの幅を適切に設定しないと、テキストが正しく表示されないことがあります。
  • ステップ数
    steps(13, end)」のステップ数はテキストの文字数に応じて調整してください。

テキストが波打つように揺れる

See the Pen Text_Animation_3 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

このアニメーションでは、文字が上下に揺れて波のような動きを表現します。

HTML

<div class="container2">
  <h1 class="wave-text">Hello</h1>
</div>

CSS

/* テキストが波打つように揺れる */
.container2 {
  display: block;
}

.wave-text {
  display: inline-block;
  font-size: 10em;
  animation: wave 2s infinite;
}

/* 波打つアニメーションの定義 */
@keyframes wave {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10%);
  }
}

ポイントとなるCSSプロパティ

  • display: inline-block
    テキストをインライン要素として扱い、幅を持たせます。
  • animation
    アニメーションを適用します。
  • @keyframes
    アニメーションのキーフレームを定義します。

注意点

  • フォントサイズ
    フォントサイズを大きく設定することで、アニメーションの効果がより目立ちます。
  • アニメーション時間
    2s」の部分を変更して、アニメーションのスピードを調整できます。

テキストが拡大しながらフェードイン

See the Pen Text_Animation_4 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

このアニメーションは、テキストが小さく表示されてから徐々に拡大しながらフェードインします。

HTML

<div class="container2">
  <h1 class="zoom-in-text">Welcome</h1>
</div>

CSS

/* テキストが拡大しながらフェードイン */
.zoom-in-text {
  font-size: 2em;
  opacity: 0;
  animation: zoom-in 0.6s ease-out forwards;
}

/* 拡大とフェードインのアニメーションの定義 */
@keyframes zoom-in {
  0% {
    transform: scale(0.5);
    opacity: 0;
  }
  100% {
    transform: scale(2);
    opacity: 1;
  }
}

ポイントとなるCSSプロパティ

  • opacity
    テキストの透明度を設定します。
  • transform
    scale: 要素の拡大・縮小を設定します。
  • animation
    アニメーションを適用します。
  • @keyframes
    アニメーションのキーフレームを定義します。

注意点

  • 初期状態
    opacity: 0」と「transform: scale(0.5)」を設定して、初期状態を隠します。
  • アニメーション時間
    0.6s」の部分を調整して、アニメーションのスピードを変更できます。

スライドバーとフェードイン

See the Pen Text_Animation_5 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

このアニメーションでは、スライドバーが通過した後にテキストがフェードインします。

HTML

<div class="container3">
  <div class="slide-bar"></div>
  <div class="slide-and-fade-in-text delay-1s">Hello, World!</div>
</div>

CSS

/* container3のスタイル */
.container3 {
  position: relative;
  overflow: hidden;
  display: inline-block;
}

/* slide-barのスタイル */
.slide-bar {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: black;
  animation: slide-in 1s forwards;
}

/* slide-and-fade-in-textのスタイル */
.slide-and-fade-in-text {
  position: relative;
  opacity: 0;
  padding: 10px;
  color: white;
  animation: fade-in 0.5s forwards;
}

/* アニメーション遅延用のクラス */
.delay-1s {
  animation-delay: 1s;
}

/* スライドインアニメーションのキーグラフ */
@keyframes slide-in {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(0);
  }
}

/* フェードインアニメーションのキーグラフ */
@keyframes fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

ポイントとなるCSSプロパティ

  • position: relative
    要素を相対位置に配置します。
  • overflow: hidden
    コンテナの範囲外に要素が表示されないようにします。
  • animation-delay
    アニメーションの開始を遅らせます。
  • @keyframes
    アニメーションのキーフレームを定義します。

注意点

  • アニメーションのタイミング
    animation-delay: 1s;」を使って、スライドバーが完了した後にテキストがフェードインするようにします。
  • スライドバーの速度
    slide-in」アニメーションの時間を調整して、スライドバーの速度を変更できます。

まとめ

今回はCSSを使って、テキストをアニメーションさせる方法をご紹介させていただきました。

テキストアニメーションを使用することで、ウェブサイトに動的で魅力的なエフェクトを追加することができますので興味のある方は一度お試しください!

タイトルとURLをコピーしました