ReactでLoadingアニメーションのComponentを作成する方法

React_Loading

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、ReactでLoadingアニメーションのComponentを作成する方法について解説していきます。

ReactでLoadingアニメーションのComponentを作成する方法

ReactでLoadingアニメーションのComponentを作成するために、今回は、次のようなSVGを使用します。

これをアニメーションで回転させていくようにすると、Loadingアニメーションが実装できます。

ReactでLoadingアニメーションのComponentのSampleCodeは、次のようになります。

/** @jsxImportSource @emotion/react */
import { css, keyframes } from "@emotion/react";

export const Loading = () => {
  return (
    <svg
      width="48"
      height="48"
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      css={styles.circl}
    >
      <path
        opacity="0.2"
        fillRule="evenodd"
        clipRule="evenodd"
        d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z"
        fill="currentColor"
      />
      <path
        d="M2 12C2 6.47715 6.47715 2 12 2V5C8.13401 5 5 8.13401 5 12H2Z"
        fill="currentColor"
      />
    </svg>
  );
};

const animations = {
  rotateText: keyframes`
  0% {
    transform: rotate(360deg);
  }
  100% {
    transform: rotate(0deg);
  }
`,
};

const styles = {
  circl: css({
    animation: `1s linear infinite ${animations.rotateText}`,
  }),
};

ポイントをまとめると次のとおりです。

  1. transform は CSS のプロパティで、与えられた要素を回転、拡大縮小、傾斜、移動することができます。
    • 今回は、transform: rotate(deg);で回転させています。
  2. keyframesは、アニメーションの流れに沿ったキーフレーム(または中間地点)のスタイルを定義することによって、一連の CSS アニメーションの中間ステップを制御します。
    • アニメーションの中間ステップをtransitionよりも詳細に制御できるのが特徴です。
      • transitionは、特定の CSS プロパティの値の間でスムーズな変化を作り出す方法を定義します。

JavaScript書籍 Ver. 中級-上級者向け

JavaScript書籍 Ver. 初級者向け

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

参考・引用

  1. MDN: CSS @keyframes
  2. MDN: CSS transform

最近の投稿