今回は画像を使わずに、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;
- }
- }
今回は以上となります。
コードの関係上で長文となってしまいましたが、最後まで目を通していただきありがとうございました!
次々に新しい技術が増えていく現代は、とても素晴らしいですね!
その反面で、日々の最新技術探索&勉強が必要なのだと改めて気づかされましたけれども、頑張るしかないですね!
(;´・ω・)はふぅ~