Web活のロゴ

Web制作Output&初心者のための徹底ガイド

CSSアニメーション 様々なデザインの実装
–おしゃれなボックス– #4

2023.08.23ボックスの円をうねるようなアニメーションを実装
はじめに
概要

ウェブ制作において活用できるスタイリッシュなデザインを実装します。今回はボックスのアニメーションに焦点を当てます。ボックスの円をうねるように表現したいと考えています。コードをコピペで実装できるようにまとめていますので、ぜひ活用してください。

※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。

実装動画

円をうねるような形にするには、以下のサイトが便利です。
FANCY-BORDER-RADIUS

アニメーションの実装

keyframes

/* `@keyframes`ルールは、アニメーションのシーケンスを定義します。
   `fluidrotate`はこのアニメーションの名前で、.anime-fluidrotate`クラスで参照されます。 */
@keyframes fluidrotate {
  
  /* アニメーションの開始と終了のステート(0%と100%)。
     これにより、アニメーションがループする際にシームレスに見えるように設定されています。 */
  0%, 100% {
    border-radius: 44% 56% 61% 39% / 69% 42% 58% 31%;
  }

  /* アニメーションの14%完了時のステート */
  14% {
    border-radius: 40% 60% 54% 46%/49% 60% 40% 51%;
  }

  /* アニメーションの28%完了時のステート */
  28% {
    border-radius: 54% 46% 38% 62%/49% 70% 30% 51%;
  }

  /* アニメーションの42%完了時のステート */
  42% {
    border-radius: 61% 39% 55% 45%/61% 38% 62% 39%;
  }

  /* アニメーションの56%完了時のステート */
  56% {
    border-radius: 61% 39% 67% 33%/70% 50% 50% 30%;
  }

  /* アニメーションの70%完了時のステート */
  70% {
    border-radius: 50% 50% 34% 66%/56% 68% 32% 44%;
  }

  /* アニメーションの84%完了時のステート */
  84% {
    border-radius: 46% 54% 50% 50%/35% 61% 39% 65%;
  }
}

keyframesを定義した後、アニメーションの名前を記述します。この名前とクラスの値を紐づけて動作させています。

.anime-fluidrotateクラス

/* `.anime-fluidrotate`はクラスセレクタで、このクラスを持つHTML要素に以下のスタイルを適用します */
.anime-fluidrotate {
  /* `animation`プロパティはアニメーションを指定するためのものです */

  /* `fluidrotate`はアニメーションの名前です。この名前は後で`@keyframes`で具体的なアニメーションの内容を定義する際に使います */
  animation-name: fluidrotate;

  /* `30s`はアニメーションの持続時間を示しています。これにより、アニメーションは30秒かけて完了します */
  animation-duration: 30s;

  /* `ease`はアニメーションのタイミング関数を指定します。この関数はアニメーションの進行速度をコントロールします。 
     ここでの`ease`は、アニメーションがゆっくり開始し、その後速度を上げ、ゆっくり終わることを意味します */
  animation-timing-function: ease;

  /* `0s`はアニメーションの開始遅延を指定します。ここでは遅延なし(0秒後に開始)を示しています */
  animation-delay: 0s;

  /* `infinite`はアニメーションの反復回数を指定します。この場合、アニメーションは無限回繰り返されます */
  animation-iteration-count: infinite;
}

上記をまとめて記述したものがこちらです。

.anime-fluidrotate {
  animation: fluidrotate 30s ease 0s infinite;
}

このようにまとめて記述できるため、可読性が高く管理しやすいです。

クラスをHTMLタグに付与

最後まで読んでいただきありがとうございます。こちらからサンプルコードをダウンロードできますので、どうぞご活用ください。

まとめ
  • ボックスをデザインするツール、FANCY-BORDER-RADIUSが便利
  • keyframesの設定を理解する
  • animationプロパティはまとめて記述することができる