※本ページはプロモーションが含まれています。
- HTMLとCSSの基礎知識
- CSSのトランスフォーム(transform)プロパティとアニメーション(animation)プロパティの使い方
- アニメーションのタイミングやトランジションのカスタマイズ方法
- @keyframesルールを使ったアニメーションの作成方法
@uihack ♬ Dj Slow Yang Lagi Viral Dear Diary – Sihuun
CSSアニメーションは、CSSのスタイルを指定した要素に対して、時間の経過とともに変化させることができる機能です。
アニメーションを実現するには、CSSのアニメーションプロパティを使用します。
これにより、HTML要素の位置やサイズ、色などのスタイルを時間の経過と共に変化させることができます。
CSSアニメーションは、WebサイトやWebアプリケーションのユーザーエクスペリエンスを向上させるためによく使用されます。
アニメーションの種類 | 説明 |
---|---|
トランジション(Transition)アニメーション | スタイルの変化を滑らかにするために使用されます。 |
トランスフォーム(Transform)アニメーション | 要素の位置やサイズ、回転などをアニメーションさせるために使用。 |
@keyframes ルールによるアニメーション | スタイルの変化をフレームごとに指定してアニメーションを作成するために使用されます。 |
アニメーション(animation)プロパティによるアニメーション | アニメーションの基本的なプロパティを指定して、アニメーションを作成するために使用されます。 |
特に、@keyframes ルールによるアニメーションとアニメーションプロパティによるアニメーションは、より詳細なアニメーションを作成するために使用されます。
それ以外にも、JavaScriptを使ったアニメーションもあります。
それぞれに使用シーンがありますので、目的に合わせて使用することが重要です。
- HTML要素を選択します。
- アニメーションを適用するスタイルを定義します。
- アニメーションを実行するためのCSSプロパティを設定します。
- HTML要素を選択するには、HTMLのclassやidなどを使用します。
- アニメーションを適用するスタイルは、CSSのクラスを使用して定義します。
- アニメーションを実行するためには、アニメーションプロパティや@keyframesルールを使用します。
例えば、classを使ってHTML要素を選択し、アニメーションを適用するスタイルを定義し、アニメーションを実行するためのCSSプロパティを設定する場合は、以下のようになります。
<div class="box">ここにアニメーションを適用</div>
.box {
width: 100px;
height: 100px;
background-color: red;
animation: move 2s ease-in-out infinite;
}
@keyframes move {
from {
transform: translate(0, 0);
}
to {
transform: translate(100px, 100px);
}
}
以上の例では、class名が”box”であるdiv要素に対してアニメーションを適用し、animationプロパティにmoveという名前のアニメーションを2秒かけて実行するように設定しています。
このアニメーションは、“move”@keyframesルールによって定義されていて、その中ではtransformプロパティを使用して、要素を移動させるように指定しています。
CSS animationは、CSSプロパティの値をアニメーション化するための方法です。animationプロパティを使用して、アニメーションの設定を行います。animationには、アニメーションのスタイル、タイミング、および繰り返しに関する情報を指定することができます。また、@keyframesを使用して、アニメーションの中間状態を定義することもできます。
animationプロパティには、以下のように記述します。
プロパティ | 説明 |
---|---|
animation-name | アニメーション名。@keyframesで定義したアニメーションの名前を指定します。 |
animation-duration | アニメーションの持続時間。単位は秒かミリ秒で指定します。 |
animation-timing-function: | アニメーションの速度カーブ。ease、linear、ease-in、ease-out、ease-in-outなどがあります。 |
animation-delay | アニメーションの開始までの遅延時間。単位は秒かミリ秒で指定します。 |
animation-iteration-count | アニメーションの繰り返し回数。infiniteで無限に繰り返すことができます。 |
animation-direction | アニメーションの方向。normal、reverse、alternate、alternate-reverseなどがあります。 |
animation-fill-mode | アニメーション終了時の要素の状態。none、forwards、backwards、bothなどがあります。 |
animation-play-state | アニメーションのステータス。running、pausedなどがあります。 |
上記のプロパティはすべて省略することができ、必要なプロパティだけを指定することもできます。
例えば以下のように指定することで、アニメーション名を「example」、アニメーションの持続時間を「3s」、アニメーションの速度カーブを「ease」、アニメーションの繰り返し回数を「infinite」に設定することができます。
それぞれのプロパティは、別のプロパティと組み合わせることで、さまざまなアニメーションを実現できます。
transitionプロパティは、以下のように指定することができます。
プロパティ | 説明 |
---|---|
transition-delay | アニメーションの開始までの遅延時間を指定します |
transition-duration | アニメーションのdurationを指定する、秒単位か時間をミリ秒で指定します |
transition-property | アニメーションを適用するスタイルのプロパティ名を指定します。 |
transition-timing-function | アニメーションのスピードを決定する関数を指定します。 |
CSSのTransitionプロパティは、HTML要素のスタイルが変更されたときに、その変更をスムーズにアニメーションするために使用されます。以下は、Transitionプロパティの使用例です。
CSS
/* 適用する要素 */
.box {
width: 100px;
height: 100px;
background-color: red;
transition: width 2s, height 2s, background-color 2s;
}
/* スタイル変更時 */
.box:hover {
width: 200px;
height: 200px;
background-color: blue;
}
この例では、.boxの要素がマウスオーバーされると、width、height、background-colorが2秒かけて変更されます。
@keyframesルールを使用してアニメーションを定義します。 例えば、次のように定義することができます。
@keyframes example {
0% {
background-color: red;
}
100% {
background-color: blue;
}
}
CSSのanimationプロパティを使用したサンプルとして、次のように要素を縦に移動するアニメーションを適用することができます。
@keyframes moveUp {
from {
transform: translateY(0);
}
to {
transform: translateY(-100px);
}
}
.example-element {
animation: moveUp 1s ease-in-out infinite;
}
上記の例では、moveUpというアニメーションが1秒かけて実行され、その間にイージングインアウトのアニメーションとして要素が縦に-100px移動し、それを繰り返し実行するようになります。
CSSのtransitionプロパティを使用したサンプルとして、次のように要素の背景色をマウスオーバー時に変化させることができます。
.example-element {
background-color: #F0F0F0;
transition: background-color 0.5s ease-in-out;
}
.example-element:hover {
background-color: #008080;
}
上記の例では、.example-elementに対して背景色が #F0F0F0 、マウスオーバー時に #008080 に変わるようになります。その間に0.5秒かけてease-in-out のアニメーションとして変化します。
CSSのanimationでよく利用する擬似クラスには、:hover、:active、:focusなどがあります。
例えば、次のように、:hover時に要素の大きさを変化させるアニメーションを適用することができます。
.example-element {
width: 100px;
height: 100px;
transition: width 0.5s ease-in-out, height 0.5s ease-in-out;
}
.example-element:hover {
width: 120px;
height: 120px;
}
上記の例では、.example-elementに対してwidthとheightが0.5秒かけてease-in-outのアニメーションとして変化します。
また、 :active時に背景色を変化させるアニメーションを適用することもできます。
.example-element {
background-color: #F0F0F0;
transition: background-color 0.2s ease-in;
}
.example-element:active {
background-color: #008080;
}
CSSのtransitionプロパティが思うように動かない場合によくある例として、次のような原因が考えられます。
- transitionプロパティが適用されていない要素が変化する
- transitionプロパティを適用する要素に対して変化を行う必要があります。
- ブラウザのバグ
- 特定のブラウザでトランジションが正常に動作しないことがあります。
- 複数の要素を動かしたいのに、上手く実装できない…
- transitionプロパティは単一の要素に対してしか適用できないため、複数の要素に対して適用する場合はJavaScriptなどを使用する必要があります。
See the Pen cssアニメーションでふわふわ by ysakaguchi (@ysakaguchi) on CodePen.
Twitterも見てみる?