[ペチパーの大冒険] ゲーム制作#30「CSS 間違い探しクイズ(中級編3 : アニメーション)」

2025/05/30

CSS ゲーム 開発

t f B! P L
eyecatch CSSをコーディングしていると、意図しない表示がされてそれを調べるためにたくさんの時間を費やしてしまう事がたまにあります。 慣れていて技術を熟知していてもそれだけ時間がかかると言うことは、初学者の人はもっと膨大ないな時間を費やしてしまうに違いない。 そうか、そんな時間を楽しめるようなゲームを作れば良いんだ! という趣旨のゲーム作りシミュレーションブログです。 今回もCSSの間違い探しクイズをお楽しみください。

Q1. アニメーションが動かない?

[html] <div class="box"></div> [css] .box { width: 100px; height: 100px; background-color: red; animation-name: moveBox; animation-duration: 2s; } @keyframes movebox { 0% { transform: translateX(0); } 100% { transform: translateX(200px); } }

Q. 上記の .box はアニメーションしません。原因はどれ?

  1. animation-duration が短すぎる
  2. transform の使い方が間違っている
  3. @keyframes の名前が間違っている
  4. <div>position が指定されていない

正解

正解を見る。
3. @keyframes の名前が間違っている

解説

animation-name: moveBox; なのに @keyframes movebox(小文字)と書いてあり、名前が一致していない。CSSは大文字小文字を区別するので一致が必要。

Q2. アニメーションが1回しか動かない?

[css] .ball { animation-name: bounce; animation-duration: 1s; }

Q. このアニメーションを常に繰り返し続けたい場合は、どうすればいい?

  1. animation: bounce 1s ease-in; にすればよい
  2. animation-timing-function: infinite; をつける
  3. animation-iteration-count: infinite; を追加する
  4. animation-direction: alternate; にすればよい

正解

正解を見る。
3. animation-iteration-count: infinite; を追加する

解説

animation-iteration-count はアニメーションの繰り返し回数を制御するプロパティ。 infinite を指定すれば無限ループになる。

Q3. アニメーションの途中でカクつく?

[css] .spinner { animation: rotate 2s linear; } @keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

Q. このスピナーをスムーズに常時回転させたい。どうすればよい?

  1. animation-delay: 0s; をつける
  2. animation-fill-mode: both; を追加する
  3. animation-direction: reverse; にする
  4. animation-iteration-count: infinite; を追加する

正解

正解を見る。
4. animation-iteration-count: infinite; を追加する

解説

animation-iteration-count が指定されていないため、1回転で止まってしまう。 スピナーのような継続動作には infinite が必要。

Q4. 終了後に元の状態に戻ってしまう?

[css] .text { animation: fadeIn 2s; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

Q. アニメーション終了後もopacity: 1 のままにしたい。どうする?

  1. animation-iteration-count: 1; をつける
  2. animation-fill-mode: forwards; をつける
  3. opacity: 1; を別で書いておく
  4. animation-delay: 0s; を設定する

正解

正解を見る。
2. animation-fill-mode: forwards; をつける

解説

animation-fill-mode: forwards を使うと、アニメーション終了後も最後の状態を保持できる。 何も指定しない場合は初期状態に戻ってしまう。

あとがき

CSSアニメーションは、Webページで強力なインターフェイスの武器になります。 上手く使いこなすと、ビックリするような表現ができてしまいます。 アイデア次第で、かなりの表現が可能になってくるぐらい最近のバージョンは使いやすくもなっていますが、 CSSがプログラミングチックになって、戸惑っているコーダーさんも増え始めているという話も耳に入ります。 思った通りに使えるようになると、楽しさも倍増するんですよね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ