今回は画像を使わずに、CSSだけでローダーを作成する方法を紹介します。
ローダーと言ってもデザインは沢山あるため、以下の3つをサンプルとして取り上げます。
共通コード
サンプルとして共通スタイルは以下の通りとします。
スタイル(CSS)
- .load-container {
 - width: 240px;
 - height: 240px;
 - }
 
設置タグ(HTML)
- <div class=”load-container load01“><div class=”loader”></div></div>
 
※青字箇所は各ローダーのスタイル名を設定してください。
サンプル01
設定スタイル(CSS)
- .load01 .loader {
 - font-size: 10px;
 - margin: 50px auto;
 - text-indent: -9999em;
 - width: 11em;
 - height: 11em;
 - border-radius: 50%;
 - background: #33ccff;
 - background: -moz-linear-gradient(left, #33ccff 10%, rgba(255, 255, 255, 0) 42%);
 - background: -webkit-linear-gradient(left, #33ccff 10%, rgba(255, 255, 255, 0) 42%);
 - background: -o-linear-gradient(left, #33ccff 10%, rgba(255, 255, 255, 0) 42%);
 - background: -ms-linear-gradient(left, #33ccff 10%, rgba(255, 255, 255, 0) 42%);
 - background: linear-gradient(to right, #33ccff 10%, rgba(255, 255, 255, 0) 42%);
 - position: relative;
 - -webkit-animation: load01 1.4s infinite linear;
 - animation: load01 1.4s infinite linear;
 - -webkit-transform: translateZ(0);
 - -ms-transform: translateZ(0);
 - transform: translateZ(0);
 - }
 - .load01 .loader:before {
 - width: 50%;
 - height: 50%;
 - background: #33ccff;
 - border-radius: 100% 0 0 0;
 - position: absolute;
 - top: 0;
 - left: 0;
 - content: ”;
 - }
 - .load01 .loader:after {
 - background: #ffffff;
 - width: 75%;
 - height: 75%;
 - border-radius: 50%;
 - content: ”;
 - margin: auto;
 - position: absolute;
 - top: 0;
 - left: 0;
 - bottom: 0;
 - right: 0;
 - }
 - @-webkit-keyframes load01 {
 - 0% {
 - -webkit-transform: rotate(0deg);
 - transform: rotate(0deg);
 - }
 - 100% {
 - -webkit-transform: rotate(360deg);
 - transform: rotate(360deg);
 - }
 - }
 - @keyframes load01 {
 - 0% {
 - -webkit-transform: rotate(0deg);
 - transform: rotate(0deg);
 - }
 - 100% {
 - -webkit-transform: rotate(360deg);
 - transform: rotate(360deg);
 - }
 - }
 
サンプル02
設定スタイル(CSS)
- .load02 .loader {
 - color: #33ccff;
 - font-size: 20px;
 - margin: 100px auto;
 - width: 1em;
 - height: 1em;
 - border-radius: 50%;
 - position: relative;
 - text-indent: -9999em;
 - -webkit-animation: load02 1.3s infinite linear;
 - animation: load02 1.3s infinite linear;
 - -webkit-transform: translateZ(0);
 - -ms-transform: translateZ(0);
 - transform: translateZ(0);
 - }
 - @-webkit-keyframes load02 {
 - 0%,
 - 100% {
 - box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
 - }
 - 12.5% {
 - box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
 - }
 - 25% {
 - box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
 - }
 - 37.5% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
 - }
 - 50% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
 - }
 - 62.5% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
 - }
 - 75% {
 - box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
 - }
 - 87.5% {
 - box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
 - }
 - }
 - @keyframes load02 {
 - 0%,
 - 100% {
 - box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
 - }
 - 12.5% {
 - box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
 - }
 - 25% {
 - box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
 - }
 - 37.5% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
 - }
 - 50% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
 - }
 - 62.5% {
 - box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
 - }
 - 75% {
 - box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
 - }
 - 87.5% {
 - box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
 - }
 - }
 
サンプル03
設定スタイル(CSS)
- .load03 .loader:before,
 - .load03 .loader:after,
 - .load03 .loader {
 - border-radius: 50%;
 - width: 2.5em;
 - height: 2.5em;
 - -webkit-animation-fill-mode: both;
 - animation-fill-mode: both;
 - -webkit-animation: load03 1.8s infinite ease-in-out;
 - animation: load03 1.8s infinite ease-in-out;
 - }
 - .load03 .loader {
 - color: #33ccff;
 - font-size: 10px;
 - margin: 80px auto;
 - position: relative;
 - text-indent: -9999em;
 - -webkit-transform: translateZ(0);
 - -ms-transform: translateZ(0);
 - transform: translateZ(0);
 - -webkit-animation-delay: -0.16s;
 - animation-delay: -0.16s;
 - }
 - .load03 .loader:before {
 - left: -3.5em;
 - -webkit-animation-delay: -0.32s;
 - animation-delay: -0.32s;
 - }
 - .load03 .loader:after {
 - left: 3.5em;
 - }
 - .load03 .loader:before,
 - .load03 .loader:after {
 - content: ”;
 - position: absolute;
 - top: 0;
 - }
 - @-webkit-keyframes load03 {
 - 0%,
 - 80%,
 - 100% {
 - box-shadow: 0 2.5em 0 -1.3em;
 - }
 - 40% {
 - box-shadow: 0 2.5em 0 0;
 - }
 - }
 - @keyframes load03 {
 - 0%,
 - 80%,
 - 100% {
 - box-shadow: 0 2.5em 0 -1.3em;
 - }
 - 40% {
 - box-shadow: 0 2.5em 0 0;
 - }
 - }
 
今回は以上となります。
コードの関係上で長文となってしまいましたが、最後まで目を通していただきありがとうございました!
次々に新しい技術が増えていく現代は、とても素晴らしいですね!
その反面で、日々の最新技術探索&勉強が必要なのだと改めて気づかされましたけれども、頑張るしかないですね!
(;´・ω・)はふぅ~
  
  
  
  