AI(ChatGPT)を使って半自動で月5万稼ぐ?
実際にやってみて結果・・ >>

【keyframes×animation-direction】逆再生|infiniteで繰り返しCSSアニメーション

今回はCSSだけで作る@keyframesのanimation-directionプロパティを使用したCSSアニメーションを4つご紹介します。

animation-direction:normal, reverse, alternate, alternate-reverseの4つを使用して再生方向をカンタンに指定していきます。

 

この記事の信頼性(ゆうけんブログの筆者はこんな人)

  • 現役Webデザイナーが執筆
  • 最高月収7桁超のフリーランス
  • 完全未経験から独学でWeb制作スキルを習得
  • Twitterフォロワー数2,000人超(→@twinzvlog_yk
  • Web制作のメンター経験多数
  • 認定ランサー(ランサーズ最高ランク)

 

こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。

 

1. 【@keyframes&animation-direction:normal】順方向に繰り返すCSSアニメーション

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* アニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定 */
@keyframes Background1 {
  0% {
    transform: translate3d(0px, 200px, 0px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -3px 3px 2px 2px rgba(0,0,0,0);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
  100% {
    transform: translate3d(-200px, 0px, 200px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -30px 30px 15px 10px rgba(0,0,0,0.6);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
}
* {
  padding: 0;
  margin: 0;
}
.container {
  width: 100%;
  min-height: 100vh;
}
.image {
  perspective: 3000px;
  /* 3D変形の奥行きの指定 */
  width: 50%;
  position: absolute;
  transform: translate(50%, 25%);
  /* 画像の位置調整 */
}
.image img {
  width: 40%;
  /* 画像の大きさ調整 */
  animation-duration: 3s;
  /* アニメーションにかかる時間を指定 */
  animation-timing-function: linear;
  /* アニメーションの進行の度合いを指定。linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定 */
  animation-direction: normal;
  /* アニメーションの再生方向を指定。normalで指定した方向へのアニメーションを繰り返す */
  animation-iteration-count: infinite;
  /* アニメーションの繰り返し回数をinfiniteで無限に指定 */
  box-sizing: border-box;
  animation-name: Background1
  /* 実行したいアニメーションの名前を指定 */
}
POINT
  1. @keyframesを使いアニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定
  2. @keyframesでtransform:translate3dでXYZの移動距離を各時点で指定することで立体的に移動するアニメーションを実現(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  3. @keyframesでbox-shadowを各時点で指定することで画像の影が太陽の動きで変化するような動きを実現
  4. animation-durationでアニメーションにかかる時間を指定
  5. animation-timing-function: linearでアニメーションの進行の度合いを指定し、linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定
  6. animation-direction: normalでアニメーションの再生方向を指定し、normalで指定した方向へのアニメーションを繰り返すよう指定
  7. animation-iteration-count: infiniteでアニメーションの繰り返し回数をinfiniteに指定して無限に繰り返すアニメーションを実現
  8. animation-nameを@keyframeのアニメーションを使用したい要素の中で名前を指定
  9. display:flexでcontainerの中身をど真ん中に設置

 

2. 【@keyframes&animation-direction:reverse】逆方向に繰り返すCSSアニメーション

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* アニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定 */
@keyframes Background1 {
  0% {
    transform: translate3d(0px, 200px, 0px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -3px 3px 2px 2px rgba(0,0,0,0);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
  100% {
    transform: translate3d(-200px, 0px, 200px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -30px 30px 15px 10px rgba(0,0,0,0.6);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
}
* {
  padding: 0;
  margin: 0;
}
.container {
  width: 100%;
  min-height: 100vh;
}
.image {
  perspective: 3000px;
  /* 3D変形の奥行きの指定 */
  width: 50%;
  position: absolute;
  transform: translate(50%, 25%);
  /* 画像の位置調整 */
}
.image img {
  width: 40%;
  /* 画像の大きさ調整 */
  animation-duration: 3s;
  /* アニメーションにかかる時間を指定 */
  animation-timing-function: linear;
  /* アニメーションの進行の度合いを指定。linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定 */
  animation-direction: reverse;
  /* アニメーションの再生方向を指定。reverseで指定した逆方向へのアニメーションを繰り返す */
  animation-iteration-count: infinite;
  /* アニメーションの繰り返し回数をinfiniteで無限に指定 */
  box-sizing: border-box;
  animation-name: Background1
  /* 実行したいアニメーションの名前を指定 */
}
POINT
  1. @keyframesを使いアニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定
  2. @keyframesでtransform:translate3dでXYZの移動距離を各時点で指定することで立体的に移動するアニメーションを実現(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  3. @keyframesでbox-shadowを各時点で指定することで画像の影が太陽の動きで変化するような動きを実現
  4. animation-durationでアニメーションにかかる時間を指定
  5. animation-timing-function: linearでアニメーションの進行の度合いを指定し、linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定
  6. animation-direction: reverseでアニメーションの再生方向を指定し、reverseで指定した逆方向へのアニメーションを繰り返すよう指定
  7. animation-iteration-count: infiniteでアニメーションの繰り返し回数をinfiniteに指定して無限に繰り返すアニメーションを実現
  8. animation-nameを@keyframeのアニメーションを使用したい要素の中で名前を指定
  9. display:flexでcontainerの中身をど真ん中に設置

 

3. 【@keyframes&animation-direction:alternate】行ったり来たりを繰り返すCSSアニメーション

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* アニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定 */
@keyframes Background1 {
  0% {
    transform: translate3d(0px, 200px, 0px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -3px 3px 2px 2px rgba(0,0,0,0);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
  100% {
    transform: translate3d(-200px, 0px, 200px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -30px 30px 15px 10px rgba(0,0,0,0.6);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
}
* {
  padding: 0;
  margin: 0;
}
.container {
  width: 100%;
  min-height: 100vh;
}
.image {
  perspective: 3000px;
  /* 3D変形の奥行きの指定 */
  width: 50%;
  position: absolute;
  transform: translate(50%, 25%);
  /* 画像の位置調整 */
}
.image img {
  width: 40%;
  /* 画像の大きさ調整 */
  animation-duration: 3s;
  /* アニメーションにかかる時間を指定 */
  animation-timing-function: linear;
  /* アニメーションの進行の度合いを指定。linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定 */
  animation-direction: alternate;
  /* アニメーションの再生方向を指定。alternateでアニメーションが行ったり来たりを繰り返す */
  animation-iteration-count: infinite;
  /* アニメーションの繰り返し回数をinfiniteで無限に指定 */
  box-sizing: border-box;
  animation-name: Background1
  /* 実行したいアニメーションの名前を指定 */
}
POINT
  1. @keyframesを使いアニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定
  2. @keyframesでtransform:translate3dでXYZの移動距離を各時点で指定することで立体的に移動するアニメーションを実現(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  3. @keyframesでbox-shadowを各時点で指定することで画像の影が太陽の動きで変化するような動きを実現
  4. animation-durationでアニメーションにかかる時間を指定
  5. animation-timing-function: linearでアニメーションの進行の度合いを指定し、linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定
  6. animation-direction: alternateでアニメーションの再生方向を指定し、alternateでアニメーションが行ったり来たりを繰り返すよう指定
  7. animation-iteration-count: infiniteでアニメーションの繰り返し回数をinfiniteに指定して無限に繰り返すアニメーションを実現
  8. animation-nameを@keyframeのアニメーションを使用したい要素の中で名前を指定
  9. display:flexでcontainerの中身をど真ん中に設置

 

4. 【@keyframes&animation-direction:alternate-reverse】逆方向から開始して繰り返すCSSアニメーション

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* アニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定 */
@keyframes Background1 {
  0% {
    transform: translate3d(0px, 200px, 0px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -3px 3px 2px 2px rgba(0,0,0,0);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
  100% {
    transform: translate3d(-200px, 0px, 200px);
    /* translate3dでXYZの移動距離を指定 */
    box-shadow: -30px 30px 15px 10px rgba(0,0,0,0.6);
    /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、広がりの長さ、色) */
  }
}
* {
  padding: 0;
  margin: 0;
}
.container {
  width: 100%;
  min-height: 100vh;
}
.image {
  perspective: 3000px;
  /* 3D変形の奥行きの指定 */
  width: 50%;
  position: absolute;
  transform: translate(50%, 25%);
  /* 画像の位置調整 */
}
.image img {
  width: 40%;
  /* 画像の大きさ調整 */
  animation-duration: 3s;
  /* アニメーションにかかる時間を指定 */
  animation-timing-function: linear;
  /* アニメーションの進行の度合いを指定。linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定 */
  animation-direction: alternate-reverse;
  /* アニメーションの再生方向を指定。alternate-reverseでアニメーションが逆方向から開始されて行ったり来たりを繰り返す */
  animation-iteration-count: infinite;
  /* アニメーションの繰り返し回数をinfiniteで無限に指定 */
  box-sizing: border-box;
  animation-name: Background1
  /* 実行したいアニメーションの名前を指定 */
}
POINT
  1. @keyframesを使いアニメーションで実行されるプロパティと開始から終了までの期間をパーセントで指定
  2. @keyframesでtransform:translate3dでXYZの移動距離を各時点で指定することで立体的に移動するアニメーションを実現(transformの使い方については【transform完全網羅】hoverで動き出す!transformを網羅できるCSSボタンアニメーション16選)
  3. @keyframesでbox-shadowを各時点で指定することで画像の影が太陽の動きで変化するような動きを実現
  4. animation-durationでアニメーションにかかる時間を指定
  5. animation-timing-function: linearでアニメーションの進行の度合いを指定し、linearで開始から終了までを一定に変化(滑らかなアニメーションになる)するよう指定
  6. animation-direction: alternate-reverseでアニメーションの再生方向を指定し、alternate-reverseでアニメーションが逆方向から開始されて行ったり来たりを繰り返すよう指定
  7. animation-iteration-count: infiniteでアニメーションの繰り返し回数をinfiniteに指定して無限に繰り返すアニメーションを実現
  8. animation-nameを@keyframeのアニメーションを使用したい要素の中で名前を指定
  9. display:flexでcontainerの中身をど真ん中に設置

 

『絶対にリモートワーク!』という方におすすめの求人サイトをご紹介!

クラウドテック
Web制作案件の数
(5.0)
案件の単価
(4.0)
使いやすさ
(5.0)
案件獲得効率
(5.0)
初心者向け
(5.0)
オススメ度
(5.0)
総合評価
(5.0)
この講座のポイント

対象
Webデザイナー・エンジニア・グラフィックデザイナー・PM・マーケター・ライター

 

公式サイト
クラウドテック公式ページ

特徴

  • クラウドソーシング企業大手のクラウドワークスが運営する求人サイト
  • 実務未経験者でもOK
  • 登録社数14万社
  • フリーランス・個人事業主向け案件がケタ違いに多い
  • 報酬額や勤務地・職種など希望が通りやすい
  • Web制作・コーディングの高単価案件が多い
  • リモートワーク案件数は業界トップクラス
  • 最短3日で案件を獲得できる

 

現役Webデザイナーの筆者イチオシの求人サイト!フリーランス向けWeb制作案件なら確実に業界トップクラス。営業かけずに案件に困らなくなる一番の近道です。

ふたご

 

無料で登録してみる >>

 

 

まとめ

HTMLとCSSを使うと今回紹介したようなことも簡単にできてしまうんです。

 

『CSSアニメーションやエフェクトだけではなくWebサイトをゼロから作って稼いでいきたい』

『3ヶ月くらいで最低でも月10万円は稼ぎたい』

『営業とかやったことないけどWeb制作だけで稼いでいきたい』

 

こんな方のためにWeb制作で月80万超稼ぐ筆者が自身の経験を踏まえて【失敗しない】Webデザイナー(Web制作)独学ロードマップを執筆しました。

 

少額の投資で3ヶ月後には月10〜30万稼げるよう設計してあります。
(学習教材やAdobeなど最低限のコストはかかります)

 

ロードマップの構成
  1. Web制作に特化した『確実に身に付く』学習方法
  2. Web制作会社が喰いつく理想的なポートフォリオの作成手順
  3. 返信率10%以上!Web制作会社へのメール営業

 

有料公開も考えましたが「Webデザイナー(Web制作)はまだまだ稼げることを証明したい!」という思いが強く、期間限定で無料公開をすることにしました。

 

2021年半ばまでは無料公開する予定ではありますが前倒しすることもあり得ますのでご興味ある方はお早めにどうぞ!