TOP

投稿一覧

はじめてのCSSアニメーション:JavaScriptなしでサイトに動きをつける方法

はじめてのCSSアニメーション:JavaScriptなしでサイトに動きをつける方法

HTML/CSS

2025.11.19

1. はじめに

Webサイトを見ていると、「ボタンがふわっと大きくなる」「文字が自然に浮かび上がる」など、ちょっとした動きが付いているデザインを見かけることがありますよね。こうしたアニメーションは CSSだけで実装できるものが多く、JavaScriptが不要という手軽さが大きな魅力です。
とはいえ、「JavaScript が不要だから完全に初心者向け」というわけではありません。CSSアニメーションには特有の書き方や考え方があるため、初めて触れる場合は少し戸惑うかもしれません。それでも、アニメーションの仕組みを一度理解してしまえば、難しいコードを書かなくても、サイトに動きを加えることができるようになります。
また、最初から大きく動くアニメーションを作る必要はありません。まずはボタンのホバー時に少しだけ拡大するといった、小さな動きから取り入れるのがおすすめです。この記事では、CSSアニメーションの基本を、初心者の方でも無理なく試せる形で解説していきます。

2. CSSアニメーションの基本的な考え方

CSSでアニメーションを作る場合、主に次の2つのプロパティが挙げられます。

  • transition(トランジション)
    要素が「状態の変化」をするときに、その変化をなめらかにつなげる機能です。
    例:ボタンにカーソルを乗せた瞬間に、0.3秒かけて拡大する。
  • animation(アニメーション)
    複数の変化を組み合わせて、繰り返し動くアニメーションを作れます。
    例:上下にゆっくり揺れるアイコンを作る。

どちらもHTMLとCSSだけで実装できるため、環境さえ整っていればすぐに試せます。

3. transitionの使い方

まずは、これから作るアニメーションの完成形を見てイメージを掴んでいただきます。今回は、一番初歩的なカーソルを乗せたときに少しだけ大きくなるシンプルなボタンを例にします。

3.1. HTML(基本構造)

ここでは、アニメーションをつける対象となる「ボタン部分」のHTMLを用意します。複雑なコードは不要で、シンプルなボタンタグだけで準備できます。

<button class="transition_sample">ボタン</button>

3.2. CSS(アニメーションの書き方)

次に、さきほど用意したボタンに CSS を当てていきます。transitionのポイントは「どのプロパティをどれくらいの時間で変化させるか」です。今回は、ホバー時にボタンが1.1倍かつ0.3秒で拡大するようtransformとtransitionを設定します。

.transition_sample{
 display: inline-block;
 padding: 10px 20px;
 background: #3498db;
 color: #fff;
 border-radius: 4px;
 transition: transform 0.3s;    
}

.transition_sample:hover {
 transform: scale(1.1);
}

3.3. transitionなしとの比較

最後に、transitionを設定しなかった場合の動き比較します。実際にホバーしてみて違いを確かめてみてください。

transitionあり

transitionなし

ここまでで、transition を使ってシンプルなアニメーションを作る流れを確認しました。transitionは「1つの変化を自然につなげる」ための機能で、ホバーなど状態が変わる場面に最適です。ボタンや画像など、ほんの少しの動きでもデザインの印象が大きく変わるので、初心者の方にもまず挑戦していただきたい手法です。

4. animation(@keyframes)で連続した動きを作る

こちらでは、繰り返しの動作を行う本格的なアニメーションの完成形を確認します。今回は待機中の画面によくある簡単なローディングアニメーションを紹介します。

4.1. HTML(基本構造)

アニメーションを付けたい対象となる箱(ボックス)を用意します。

<div class="animation_sample"></div>

4.2. CSS(アニメーションの書き方)

ここでは、animationプロパティと@keyframes を使って「連続した動作」を作ります。

.animation_sample{
 margin: 0 auto;
 width: 32px;
 height: 32px;
 border: 4px solid #ccc;
 border-top-color: #3498db;
 border-radius: 50%;
 animation: spin 1s linear infinite;
}

@keyframes spin {
 0%   { transform: rotate(0deg); }
 100% { transform: rotate(360deg); }
}

animationのプロパティ値は「アニメーションの名前を定義し → 何秒の間に → どのような速度で → 何回繰り返すのか」という順で設定していきます。@keyframesはanimationで定義したアニメーションの名前に具体的にどのような動きをするのかを設定します。今回は白い円状の枠に、上部分だけ色の付いたリングを1秒間の間に360度回転させるという動きにしています。

4.3. @keyframesの発展

@keyframesの記述は必ずしも0% → 50% → 100%の必要はなくさらに細かく設定することでより細かいな動きを実装することができます

@keyframes spin {
 0% {
  transform: rotate(0deg);
 }
 30% {
  transform: rotate(200deg); /* 序盤で一気に回る */
 }
 60% {
  transform: rotate(260deg); /* 減速していく */
 }
 100% {
  transform: rotate(360deg);
 }
}

animationはtransitionよりも表現の幅が広く、複数の動きや繰り返し動作を組み合わせられるのが大きな特徴です。一方で、指定できる項目が多く、最初は複雑に感じるかもしれません。しかし、0%〜100% の動きを段階的に書く仕組みさえ理解すれば難しくありません。バナー、矢印、強調パーツなど、サイトのアクセントに非常に便利な機能です。

5. まとめ

CSSアニメーションは、JavaScriptを使わずにサイトに動きを加えられる便利な機能です。transitionとanimationの仕組みは奥が深く今回は初歩的な解説しかできませんでしたが、今回の記事でCSSアニメーション分野の足がかりになれればと思います。まずは、ボタンのホバー時の動きなど、サイトの小さな箇所から取り入れてみるのがおすすめです。CSSアニメーションに少しずつ慣れていくことで、よりクオリティの高い動きのあるサイトを目指してみてください。

投稿一覧に戻る

プロフィール画像

BugAliKey

IT勉強中、趣味アニメ鑑賞、好きな食べ物カレー