WEB Tips デザイン・コーディング

CSSでできるローディングアニメーションと作り方

2022-07-19

CSSでできるローディングアニメーションと作り方

ページの読み込み中を表すLoadingのアニメーション。

シンプルなCSSだけで表現できるので簡単に設置できるものいいところです。

CSSでできるローディングアニメーションを集めました。

CSS Loader

CSS Loaderサイト

https://css-loader.raphaelfabeni.com/

クルクル円が回るデフォルトタイプから、時計が回るアニメーションまで動きが確認できます。

設置方法

githubにファイルが公開されています。

<link rel="stylesheet" href="path/to/css-loader.css">
<div class="loader loader-default is-active"></div>

ローダーの表示はclassに[is-active]を追加します。

<div class="loader loader-default is-active" data-text="Loading..."></div>

data-text属性を追加すれば、テキストも表示することができます。

Loaders.css

Loaders.css

https://connoratherton.com/loaders

CSSのみの軽快なローディングアニメーションのコレクション。

loaders.min.cssを読み込んで、ローディング要素にクラスを追加します

<div class="loader">
        <div class="loader-inner ball-clip-rotate-pulse">
          <div></div>
          <div></div>
        </div>
      </div>

.loader-innerの子要素divをアニメーションに正しい数のdiv要素を挿入するためのjQueryオプションもあります。loaders.css.js

$('.loader-inner').loaders()

Single Element CSS Spinners

Single Element CSS Spinners

https://projects.lukehaas.me/css-loaders/

左上のBG,FGからカラーを変更、「View Source」からcssを確認できます。

ローディング画面の作り方

実際のローディング画面の作り方を見てみたいと思います。

ローディング画面を実装するための要素

ローディング画面は実際に表示するコンテンツの上に被せて表示し、読み込みが完了したらローディングが消え、コンテンツが表示されます。

ローディング中のアニメーション → HTML, CSS
アニメーションを制御する → Javascript

ローディングアニメーションのHTMLとCSS

アニメーションは、Single Element CSS Spinnersのサイトから利用します。

HTML

<div class="loading">
<div class="spinner">Loading...</div>
</div>

.loadingは全画面を覆う要素になります。

CSS

.loading{
  width: 100vw;
  height: 100vh;
  background-color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  position: fixed;
  top: 0;
  left: 0;
  opacity:1;
}
.loaded{
	opacity:0;
	transition: opacity 500ms;
}
.spinner,
.spinner:before,
.spinner:after {
  border-radius: 50%;
  width: 2.5em;
  height: 2.5em;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation: load7 1.8s infinite ease-in-out;
  animation: load7 1.8s infinite ease-in-out;
}
.spinner {
  color: #ffffff;
  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;
}
.spinner:before,
.spinner:after {
  content: '';
  position: absolute;
  top: 0;
}
.spinner:before {
  left: -3.5em;
  -webkit-animation-delay: -0.32s;
  animation-delay: -0.32s;
}
.spinner:after {
  left: 3.5em;
}
@-webkit-keyframes load7 {
  0%,
  80%,
  100% {
    box-shadow: 0 2.5em 0 -1.3em;
  }
  40% {
    box-shadow: 0 2.5em 0 0;
  }
}
@keyframes load7 {
  0%,
  80%,
  100% {
    box-shadow: 0 2.5em 0 -1.3em;
  }
  40% {
    box-shadow: 0 2.5em 0 0;
  }
}

.spinner以下は「Single Element CSS Spinners」からのそのままのコードでloadingと被って紛らわしいのでクラスを変更しています。

JavaScript

<script type="text/javascript">
	window.onload = function () {
	   const spinner = document.querySelector('.loading');
	   spinner.classList.add('loaded');
	}
</script>

読み込みが完了したらloadingクラスに「loaded」を付与します。

以上、CSSのローディングアニメーションを集めたサイトとローディングアニメーションの実装方法を紹介しました。

色々な動きをするアニメーションのCSSを見るのもとても参考になります。

-WEB Tips, デザイン・コーディング
-,