try

Web開発で日々学んだことを書いていきます。

ローディングアニメーションをCSSで表現する「text-spinners」

f:id:winterfall:20161002152539p:plain

見本

See the Pen text-spinners by Yuta Kiyama (@yutakiyama) on CodePen.

text-spinnersに色々サンプルがあります。

実装方法

HTML内に以下のソースを入力。 ソースを確認は、GitHubspinners.cssで確認できます。

<link rel="stylesheet" href="http://tawian.io/text-spinners/spinners.css">

<button>Loading <span class="loading"></span></button>

どうやって動いているのか

text-spinnersはキーフレームアニメーションを使って、要素をステップごとに1line-heightずつシフトさせて、擬似的にアニメーションを表示させているみたいです。

見本の1個目に表示した、...... の動きを見てみると、

.loading::after {
  display: inline-table;
  white-space: pre; /* 文中の改行をそのまま表示 */
  text-align: left;
}

.loading::after {
  content: "\A.\A..\A...";
  animation: spin4 2s steps(4) infinite;
}

@keyframes spin4  { to { transform: translateY( -6.0em); } }

で構成されています。 content内の\Aは改行を表していて、実際には、

[スペース]
↓
.
↓
..
↓
...

のように1フレームずつシフトしているように見えます。 ちゃんと説明できていませんが、text-spinnersのページ下部のHow it worksのアニメーションを見るとわかると思います。 JavaScriptで実装する方法もあると思いますが、CSSで実装してみるのもいいかもしれませんね!