CSSで回転アニメーションを作る方法

CSS回転アニメーションの書き方のサムネイル
目次

回転アニメーションの見本

下のCodePenのような回転アニメーションはCSSで簡単に作ることができます。

See the Pen 回転アニメーション|歪んだ円 by Satoru Shimizu (@sat-simizu) on CodePen.

では、どのようなHTMLとCSSを書けば実装できるのか説明していきます。

正方形を回転させる

まずは簡単な図形を例に回転アニメーションのご説明します。下のCodePenは正方形の回転アニメーションです。

See the Pen 正方形の回転アニメーション by Satoru Shimizu (@sat-simizu) on CodePen.

HTMLとCSSを見ていきましょう。

HTML

正方形を回転させるだけなら、下のようにタグは1個あれば実装できます。

<body>

    <!-- 正方形 -->
    <div class="shape-1">
    </div>

</body>

CSS

CSSで回転アニメーションに関係する箇所を抜粋したのが下のコードです。

// 正方形
.shape-1{
  margin: 100px auto;
  width: 200px;
  height: 200px;
  background-color: rgba(240, 230, 140);
  
  //  回転アニメーション設定
  animation: 20s linear infinite rotation1;
}

//  回転アニメーション設定
@keyframes rotation1{
  0%{ transform:rotate(0);}
  100%{ transform:rotate(360deg); }
}

個別に説明していくと、最初に下のように「@keyframes + キーフレーム名」で回転エフェクトを設定します。

//  回転アニメーション設定
@keyframes rotation1{
  0%{ transform:rotate(0);}
  100%{ transform:rotate(360deg); }
}
コード解説
  • キーフレーム名:自由に命名してよい。この例は「rotation1」としている。
  • 0%{}:{}内にアニメーション始点の状態を「プロパティ:値」のように書く。
  • 100%{}:{}内にアニメーション終点の状態を「プロパティ:値」のように書く。
  • 回転アニメーションの場合は0%{}と100%{}の行はコピペで実装できます。

つづいて、回転させる要素(正方形)に回転エフェクトの下記の記述を加えます。

// 正方形
.shape-1{

  //  回転アニメーション設定
  animation: 20s linear infinite rotation1;
}
コード解説
  • 20s:キーフレーム0%から100%までにかかる時間(秒)
  • linear:等速(動きの加減速:他にease-in、ease-out、ease-in-outがある)
  • infinit:無限再生(1回だけ再生なら、「1」と書く)
  • rotation1:キーフレーム名(アニメーションさせたいキーフレームの名前を書く)

文字情報の背景図形のみを回転させる

つづいて、最初に紹介した文字情報の背景図形のみが回転するアニメーションの作り方を紹介します。下にCodePenを置いて置きますので、必要に応じて動作やコードをご確認下さい。

See the Pen 回転アニメーション|歪んだ円 by Satoru Shimizu (@sat-simizu) on CodePen.

この背景の歪んだ円形はCSSで書いています。作り方は別記事にまとめましたので参照願います。

あわせて読みたい
CSSで歪んだ円をつくる方法|border-radiusの応用 border-radiusを応用して歪ん円形を作る方法を紹介します。 歪んだ円の見本 歪んだ円形をCSSで書いた例を下のCodePenに載せておきます。表示やコードをご確認下さい。 S...

そして、アニメーション動作に関わるキーフレーム関係のCSSの書き方も、上で説明したものと全く同じですので、説明は省略します。

では、何が違っているのかというと、文字は不動で、背景画像のみを回転させる場合はHTML構造を少し工夫する必要があるだけです。

HTML

下にHTML全文を載せておきます。HTML構造自体はシンプルです。

<body>
  
  <!--  文字情報と図形を囲う親タグ  -->
  <div class="shape-wrapper">
    <!--  文字情報  -->
    <p class="shape-text">
     回転アニメーション
    </p>
    <!-- 不定形図形 -->
    <div class="shape-1"></div>
  </div>

</body>
コード解説
  • 文字情報と図形を囲う親タグ:子要素に文字情報タグと図形タグを含む
  • 文字情報:図形タグとの関係は兄弟要素
  • 不定形図形:文字情報タグとの関係は兄弟要素

CSS

下にCSSの抜粋を載せておきます。アニメーションの設定は上で説明した正方形の場合と全く同じです。

// 図形と文字全体を囲うタグ
.shape-wrapper{
  margin: 100px auto;
  width: 300px;
  height: 300px;
  position: relative;
}
// 文字のスタイル
.shape-text{
  position:absolute;
  width: 100%;
  height: 100%;
  font-size: 18px;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1; //図形より上のレイヤーになるように設定
}

// 不定形図形
.shape-1{
  width: 300px;
  height: 300px;
  background-color: rgba(240, 230, 140);
  border-radius:62% 38% 63% 37% / 40% 60% 40% 60%;
  
  //  回転アニメーション設定
  animation: 10s linear infinite rotation1;
}

//  回転アニメーション設定
@keyframes rotation1{
  0%{ transform:rotate(0);}
  100%{ transform:rotate(360deg); }
}

文字情報が配置される場合のCSSの特徴をまとめると下のようになります。

コード解説
  • 図形と文字全体を囲うタグposition: relative;
  • 文字情報position:absolute;およびz-index: 1;。z-index値は背景図形よりも上のレイヤーになるように設定して下さい。

要は、文字情報をz-indexで浮かせているのですが、z-indexを未設定にすると背景図形の裏側に文字情報が配置され、見えなくなります。

一応、これらの部分の抜粋も載せておきます。

// 図形と文字全体を囲うタグ
.shape-wrapper{
  position: relative;
}
// 文字のスタイル
.shape-text{
  position:absolute;
  z-index: 1; //図形より上のレイヤーになるように設定
}

画像の図形を回転させる場合

細かい説明を省きますが、図形タグに対して疑似要素(::beforeまたはafter)で図形画像を読み込ませ。その疑似要素に対して、animationプロパティを書けば実装できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次