HTML/CSS
初心者でもスッキリ分かる!nth-childとnth-of-typeの基本と実践例
2025.12.15
はじめてのCSSアニメーション:JavaScriptなしでサイトに動きをつける方法
2025.11.19
Webサイトを見ていると、「ボタンがふわっと大きくなる」「文字が自然に浮かび上がる」など、ちょっとした動きが付いているデザインを見かけることがありますよね。こうしたアニメーションは CSSだけで実装できるものが多く、JavaScriptが不要という手軽さが大きな魅力です。
とはいえ、「JavaScript が不要だから完全に初心者向け」というわけではありません。CSSアニメーションには特有の書き方や考え方があるため、初めて触れる場合は少し戸惑うかもしれません。それでも、アニメーションの仕組みを一度理解してしまえば、難しいコードを書かなくても、サイトに動きを加えることができるようになります。
また、最初から大きく動くアニメーションを作る必要はありません。まずはボタンのホバー時に少しだけ拡大するといった、小さな動きから取り入れるのがおすすめです。この記事では、CSSアニメーションの基本を、初心者の方でも無理なく試せる形で解説していきます。
CSSでアニメーションを作る場合、主に次の2つのプロパティが挙げられます。
どちらもHTMLとCSSだけで実装できるため、環境さえ整っていればすぐに試せます。
まずは、これから作るアニメーションの完成形を見てイメージを掴んでいただきます。今回は、一番初歩的なカーソルを乗せたときに少しだけ大きくなるシンプルなボタンを例にします。
ここでは、アニメーションをつける対象となる「ボタン部分」のHTMLを用意します。複雑なコードは不要で、シンプルなボタンタグだけで準備できます。
<button class="transition_sample">ボタン</button>
次に、さきほど用意したボタンに 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);
}
最後に、transitionを設定しなかった場合の動き比較します。実際にホバーしてみて違いを確かめてみてください。
transitionあり
transitionなし
ここまでで、transition を使ってシンプルなアニメーションを作る流れを確認しました。transitionは「1つの変化を自然につなげる」ための機能で、ホバーなど状態が変わる場面に最適です。ボタンや画像など、ほんの少しの動きでもデザインの印象が大きく変わるので、初心者の方にもまず挑戦していただきたい手法です。
こちらでは、繰り返しの動作を行う本格的なアニメーションの完成形を確認します。今回は待機中の画面によくある簡単なローディングアニメーションを紹介します。
アニメーションを付けたい対象となる箱(ボックス)を用意します。
<div class="animation_sample"></div>
ここでは、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度回転させるという動きにしています。
@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% の動きを段階的に書く仕組みさえ理解すれば難しくありません。バナー、矢印、強調パーツなど、サイトのアクセントに非常に便利な機能です。
CSSアニメーションは、JavaScriptを使わずにサイトに動きを加えられる便利な機能です。transitionとanimationの仕組みは奥が深く今回は初歩的な解説しかできませんでしたが、今回の記事でCSSアニメーション分野の足がかりになれればと思います。まずは、ボタンのホバー時の動きなど、サイトの小さな箇所から取り入れてみるのがおすすめです。CSSアニメーションに少しずつ慣れていくことで、よりクオリティの高い動きのあるサイトを目指してみてください。
投稿一覧に戻る