1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

loading spinner

Posted at

マテリアルデザインのCSSコンポーネント「Matter」のCSSローディングスピナーの動きが求めていたものに近かったのでテストとして少しカスタマイズしてみました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Document</title>
<link rel="stylesheet" href="https://yarnpkg.com/en/package/normalize.css">
<style>
*,*::before,*::after {
  box-sizing: inherit;
}
body {
  box-sizing: border-box;
}

/* spinner  */
.loading-spinner {
  overflow: hidden;
  width: 4em;
  height: 4em;
  border: none;
  border-radius: 50%;
  background-color: transparent;
  color: #00f;
  font-size: 1em;
  -webkit-mask-image: linear-gradient(transparent 50%, black 50%), linear-gradient(to right, transparent 50%, black 50%);
  mask-image: linear-gradient(transparent 50%, black 50%), linear-gradient(to right, transparent 50%, black 50%);
  animation: loading-spinner-mask 6s infinite cubic-bezier(0.3, 0.6, 1, 1);
}
.loading-spinner::before {
  display: block;
  width: 100%;
  height: 100%;
  border: solid 0.357em currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  background-color: transparent;
  content: "";
  animation: loading-spinner 0.75s infinite linear alternate;
}
:-ms-lang(x), .loading-spinner::before {/* hack for IE11 */
  animation: none;
}

@keyframes loading-spinner-mask {
  0% {
    transform: rotate(0deg);
  }
  12.5% {
    transform: rotate(180deg);
  }
  25% {
    transform: rotate(630deg);
  }
  37.5% {
    transform: rotate(810deg);
  }
  50% {
    transform: rotate(1260deg);
  }
  62.5% {
    transform: rotate(1440deg);
  }
  75% {
    transform: rotate(1890deg);
  }
  87.5% {
    transform: rotate(2070deg);
  }
  100% {
    transform: rotate(2520deg);
  }
}
@keyframes loading-spinner {
  0% {
    border-left-color: transparent;
    border-bottom-color: transparent;
    border-top-color: currentColor;
    transform: rotate(-30deg);
  }
  29.4% {
    border-left-color: transparent;
  }
  29.41% {
    border-left-color: currentColor;
  }
  64.7% {
    border-bottom-color: transparent;
  }
  64.71% {
    border-bottom-color: currentColor;
  }
  100% {
    border-left-color: currentColor;
    border-bottom-color: currentColor;
    transform: rotate(225deg);
  }
}
</style>
</head>
<body>
<div class="loading-spinner"></div>
</body>
</html>

実際に表示される円とマスクの絶妙な時間差が参考になります。
動きを研究してオリジナルのローダーアニメーションも作ってみたいですね。

参考

以上、ありがとうございました。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?