当サイト使用テーマ
\ SWELL【WordPressテーマ】 /
当サイト使用サーバー
\ レンタルサーバー【ConoHa WING】 /
プログラミング学習
この記事では、CSSのアニメーション機能を使ってさまざまな動きを実装するプログラミングコードを解説していきます。
まず完成形を見ていきます。
それぞれのブロックが時間差で移動しています。
See the Pen cssanimation01 by aqua (@aqua-programdiary) on CodePen.
HTMLのコードを解説します。
<span></span>
<span class="delay-1"></span>
<span class="delay-2"></span>
<span class="delay-3"></span>
<span class="delay-4"></span>
<span></span>
: <span>
要素は遅延を持たず、そのままの速さでアニメーションします。<span class="delay-1"></span>
: <span>
要素はdelay-1
クラスが適用されており、アニメーションが200ms遅れて開始されます。<span class="delay-2"></span>
: <span>
要素はdelay-2
クラスが適用されており、アニメーションが400ms遅れて開始されます。<span class="delay-3"></span>
: <span>
要素はdelay-3
クラスが適用されており、アニメーションが600ms遅れて開始されます。<span class="delay-4"></span>
: <span>
要素はdelay-4
クラスが適用されており、アニメーションが800ms遅れて開始されます。CSSのコードを解説します。
span {
width: 50px;
height: 50px;
display: inline-block;
background-color: blue;
animation: animation 1s linear infinite;
}
@keyframes animation {
0%,100% {
transform: translateY(0);
}
50% {
transform: translateY(50px);
}
}
.delay-1 {
animation-delay: 200ms;
}
.delay-2 {
animation-delay: 400ms;
}
.delay-3 {
animation-delay: 600ms;
}
.delay-4 {
animation-delay: 800ms;
}
span
の基本スタイル:
inline-block
として表示されます。blue
) です。animation
プロパティ:
animation
プロパティは、animation-name
、animation-duration
、animation-timing-function
、animation-iteration-count
などの値をまとめて指定します。animation
プロパティで animation-name
に animation
を指定し、1秒かけて線形のタイミングで無限にアニメーションを繰り返します。@keyframes animation { ... }
:
animation
を定義します。0%
および 100%
のキーフレームで transform
プロパティを指定し、translateY(0)
で要素を移動させません。50%
のキーフレームで transform
プロパティを translateY(50px)
に設定して、要素を垂直方向に50px移動させます。.delay-1
, .delay-2
, .delay-3
, .delay-4
のクラス:
animation-delay
プロパティを適用します。.delay-1
は 200ms、.delay-2
は 400ms、.delay-3
は 600ms、.delay-4
は 800ms の遅延を持ちます。See the Pen cssanimation01-1 by aqua (@aqua-programdiary) on CodePen.
span {
width: 50px;
height: 50px;
display: inline-block;
background-color: blue;
animation: animation 2s linear infinite;
position: absolute;
}
@keyframes animation {
0%,100% {
transform: translate(0,0);
}
25% {
transform: translate(0,200px);
}
50% {
transform: translate(200px,200px);
}
75% {
transform: translate(200px,0);
}
}
.delay-1 {
animation-delay: 200ms;
}
.delay-2 {
animation-delay: 400ms;
}
.delay-3 {
animation-delay: 600ms;
}
.delay-4 {
animation-delay: 800ms;
}
animation
プロパティによってanimation
キーフレームが2秒かけて繰り返し実行されるように設定されています。また、position: absolute;
によって要素が絶対位置指定され、他の要素と重ならずに配置されるようになっています。@keyframes animation
ルールでは、アニメーションのキーフレームが定義されています。transform: translate(0,0);
が適用されているため、要素は初期位置にとどまります。transform: translate(0,200px);
が適用され、要素はY軸方向に200px移動します。transform: translate(200px,200px);
が適用され、要素は右下に移動します。transform: translate(200px,0);
が適用され、要素はX軸方向に戻ります。.delay-1
、.delay-2
、.delay-3
、.delay-4
クラスのルールは、アニメーションが開始される遅延時間を指定しています。例えば、.delay-1
クラスは200ms遅延が設定されており、そのためアニメーションは0.2秒後に開始されます。See the Pen cssanimation01-2 by aqua (@aqua-programdiary) on CodePen.
span {
width: 50px;
height: 50px;
display: inline-block;
background-color: blue;
animation: animation 2s linear infinite;
position: absolute;
}
@keyframes animation {
0%,100% {
transform: translate(0,0);
}
25% {
transform: translate(0,200px) scale(0.5,0.5);
}
50% {
transform: translate(200px,200px) rotate(180deg);
}
75% {
transform: translate(200px,0) scale(0.1,0.1);
}
}
.delay-1 {
animation-delay: 200ms;
}
.delay-2 {
animation-delay: 400ms;
}
.delay-3 {
animation-delay: 600ms;
}
.delay-4 {
animation-delay: 800ms;
}
@keyframes animation
ルールでは、
0%と100%のキーフレームでは、transform: translate(0,0);
が適用されており、要素は初期位置にとどまります。
25%のキーフレームでは、transform: translate(0,200px) scale(0.5,0.5);
が適用され、要素はY軸方向に200px移動し、同時にX軸とY軸の方向で0.5倍に縮小されます。
50%のキーフレームでは、transform: translate(200px,200px) rotate(180deg);
が適用され、要素は右下に移動しつつ180度回転します。
75%のキーフレームでは、transform: translate(200px,0) scale(0.1,0.1);
が適用され、要素はX軸方向に戻りつつ、X軸とY軸の方向で0.1倍に縮小されます。