CSS3による要素の「トランジション」と「アニメーション」を利用した動的な要素の操作は、ウェブデザインの魅力的な部分の一つです。これらを活用することで、ウェブページに対してインタラクティブで視覚的に優れた効果を与えることができます。この記事では、CSS3を使用して要素を動かしたり、トランジションやアニメーションを適用する方法について完全かつ包括的に説明します。
1. トランジション(transition)の基本
トランジションは、ある状態から別の状態への変化をスムーズに行うためのCSSプロパティです。主に、要素の状態が変わったときに、その変化が視覚的にどのように行われるかを指定します。例えば、要素の色や位置が変更されたときに、急激に変化するのではなく、徐々に変わるように設定できます。

トランジションの構文
cssselector {
transition: property duration timing-function delay;
}
-
property
: 変化させるプロパティ。例えば、background-color
,transform
など。 -
duration
: 変化の所要時間。通常は秒(s
)またはミリ秒(ms
)で指定します。 -
timing-function
: 変化の速度曲線。ease
,linear
,ease-in
,ease-out
などがあります。 -
delay
: 変化を開始するまでの待機時間。
例:背景色の変更
cssbutton {
background-color: blue;
transition: background-color 0.5s ease;
}
button:hover {
background-color: red;
}
上記のコードでは、button
要素がホバーされたときに、背景色が青から赤にスムーズに変化します。変化の所要時間は0.5秒で、ease
曲線でスムーズに遷移します。
2. アニメーション(animation)の基本
アニメーションは、複数のキーフレームを使用して、要素のスタイルを変化させる方法です。アニメーションを使用すると、トランジションよりも複雑な動きを作成できます。
アニメーションの構文
cssselector {
animation: name duration timing-function delay iteration-count direction;
}
-
name
: アニメーションの名前。後でキーフレームを指定します。 -
duration
: アニメーションが完了するまでの時間。 -
timing-function
: アニメーションの速度曲線。 -
delay
: アニメーションを開始するまでの待機時間。 -
iteration-count
: アニメーションの繰り返し回数。infinite
を指定すると無限に繰り返します。 -
direction
: アニメーションの進行方向(normal
,reverse
,alternate
,alternate-reverse
)。
例:要素の回転アニメーション
css@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
div {
width: 100px;
height: 100px;
background-color: red;
animation: rotate 3s infinite linear;
}
この例では、div
要素が無限に回転します。@keyframes
でアニメーションの進行状況(0%
から 100%
)を指定して、要素の回転を定義しています。
3. トランジションとアニメーションの違い
トランジションとアニメーションは、どちらも要素を動かすために使用されますが、使用する目的や使い方に違いがあります。
-
トランジション: ユーザーのアクション(例えば、ホバー)に反応して、スタイルが変化する場合に使います。基本的に一度だけ変化が発生します。
-
アニメーション: スタイルの変化を繰り返し実行したり、複雑な変化を一貫して繰り返し動かす場合に使います。
4. より高度なアニメーションの作成
4.1. 複数のプロパティを同時に変化させる
アニメーションやトランジションを使用して、複数のプロパティを同時に変化させることもできます。これにより、より複雑で魅力的なアニメーションを作成できます。
css@keyframes complex {
0% {
transform: rotate(0deg);
background-color: red;
left: 0;
}
100% {
transform: rotate(360deg);
background-color: blue;
left: 200px;
}
}
div {
position: absolute;
width: 100px;
height: 100px;
animation: complex 5s ease-in-out infinite;
}
この例では、div
要素が回転し、色が変わり、さらに位置も移動するという複数のプロパティを同時に変化させています。
4.2. @keyframes
を使ったアニメーションの繰り返し
animation-iteration-count
を infinite
に設定すると、アニメーションが無限に繰り返されます。
css@keyframes bounce {
0% {
transform: translateY(0);
}
50% {
transform: translateY(-50px);
}
100% {
transform: translateY(0);
}
}
div {
animation: bounce 1s infinite ease-in-out;
}
この例では、div
要素が上下にバウンスするアニメーションを無限に繰り返します。
5. 実用的なアニメーションとトランジションの例
5.1. ボタンのホバーエフェクト
cssbutton {
padding: 10px 20px;
border: 2px solid transparent;
border-radius: 5px;
background-color: #4CAF50;
color: white;
font-size: 16px;
cursor: pointer;
transition: all 0.3s ease;
}
button:hover {
background-color: white;
color: #4CAF50;
border-color: #4CAF50;
transform: scale(1.1);
}
ボタンがホバーされたときに、色が変わり、境界線が表示され、サイズがわずかに拡大する効果を作成しています。
5.2. 要素のフェードインとフェードアウト
css@keyframes fade {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
div {
animation: fade 2s ease-in-out;
}
このアニメーションでは、div
要素が徐々に表示される(フェードイン)効果を作成しています。
結論
CSS3を使ったトランジションとアニメーションは、ウェブデザインをより魅力的にし、インタラクティブなユーザー体験を提供するための強力なツールです。基本的な使い方から、より複雑な動きや効果まで、CSSだけで多くのことが実現できます。これらのテクニックを駆使することで、視覚的に優れたウェブページを作成し、ユーザーに感動を与えることができるでしょう。