ローディング画面を自分で描いたイラストで作ってみる

# はじめに
こんにちは！@aucfan-ohtaです。
今回は、ローディング画面をイラストで作ってみたいと思います。

みなさん、知っていましたか？
LPやサイトなど、訪問した際にわずか3秒で離脱するか滞在するかが決まるそうです。

そもそもサイトの読み込みが遅いとローディング中に離脱してしまうのでは...
そう思い、興味を惹くようなローディング画面を作ってみようと思い今回チャレンジしてみました！

使用するソフトは
・Illustrartor（ver.2020を使用しています）
・Editor（SublimeTextで書きます）

イラストは、Illustratorで描きます。（ローディングの部分をSVGで書き出したいため）
Editorでは、html・JavaScript・cssを書くために使います。

それでは、ローディング画面作っていきましょう！！


## Illustratorで描いたイラストを用意する

今回はローディング画面のアニメーション部分で使うイラストを用意してみました！
どうやって動かすかはこの時点ではまだ考えておりません。

クリスマスっぽく、リースにしてみました！
![スクリーンショット 2020-12-14 15.09.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/9a310728-9837-9f89-ab9e-89ef3acf6dbc.png)

イラストの画質が低下しないよう、SVGで書き出しています。

SVGの書き出しの設定ですが、前回の記事でも書きましたが、Webに使用するデータとして書き出す設定がありますので
ざっくり解説していきます！

### カラーモードの設定
今回はWebで使用するものですので、`RGB`に設定しましょう。
設定方法は、添付の画像の通りです。
![スクリーンショット 2020-12-16 13.54.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/cc147ad6-a955-876e-e916-dbc265b7054e.png)

`ファイル→ドキュメントのカラーモード→RGBカラー`
で設定完了です！

### SVG書き出し
作成したファイルを別名で保存し、添付のように`SVG`を選択します。
![スクリーンショット 2020-12-16 13.56.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/4b5a87ce-c71b-6244-c9f5-e0f62e0ce42d.png)

### SVG書き出しの設定
`保存`を押すと、下記のような画面に切り替わります。
スクショのように設定してください。
ちなみに、デフォルトで表示のされ方が違う場合は、`詳細オプション`を押すと、詳細が出てきます！
![スクリーンショット 2020-12-16 13.48.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/b190f7de-8f21-765c-fb0f-d490f2f5b05a.png)
詳細オプションにチェックが付いている場合は全て外してください。
![スクリーンショット 2020-12-16 13.48.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/3cbb6250-a265-1d02-2276-49337c9f3e12.png)
それぞれの役割については、より詳しく書いてある参考サイトがありましたので
共有させていただきます！
[SVG書き出しの参考](https://lopan.jp/about-svg/)


## ローディング画面を作る
さあ、いよいよここから本題になりますが、
今回は前回作ったイラストが動くページにローディング画面を追加します。

### CSS3のアニメーションで動かしていく
リースはcssのanimationで動かします。

animationは下記サイトを参考にしました。
▼参考サイト
[animationの参考](https://commte.net/6312)

```css:loading.css
.illust {
  width: 100px;
  text-align: center;
  animation: float 3s linear infinite;
  transform-origin: 50% 50%;
}

@keyframes float {
  0% {
    transform: translateY(0)
  }
  30% {
    transform: translateY(-6px)
  }
  66% {
    transform: translateY(0)
  }
  100% {
    transform: translateY(0)
  }
}
```

イメージはこんな感じです。
暖かみのある色味でほっこりするような動きにしようと思います。
![スクリーンショット 2020-12-14 19.39.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535558/83dc9598-cb01-d723-5b45-be08a23ced47.png)

htmlはこんな感じで記述しています！

```html:index.html
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>クリスマスカード</title>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap">
        <link rel="stylesheet" href="./assets/loading.css">
    </head>
    <body>
        <!--ローディング画面-->
        <div class="init">
            <div class="wrap">
                <div class="block">
                    <object type="image/svg+xml" class="illust" data="./assets/wreath.svg" width="100" height="100"></object>
                    <h1 class="loading">Now Loading...</h1>
                </div>
            </div>
        </div>
        <!--コンテンツ-->
        <div class="main">
            <img class="card" src="./assets/card.png" alt="">
        </div>
        <script src="./assets/loading.js"></script>
    </body>
</html>
```

ちなみに、svgを埋め込む場合はimgタグよりもobjectタグで埋め込む方が良いそうです。


### JavaScriptでローディング画面を作成する
文字も少し動かしたかったので、
・文字の色が１文字ずつ変化していく
・色の変化が終わった後に背景を消す
の2つができる参考があったので使ってみました！
▼参考にしたサイトはこちら
[JavaScriptの参考](https://qiita.com/xxPowderxx/items/c89f9f2c1784db789c66)

## サーバーに上げてみる
▼cssで色味など調整して、出来上がったものがこちらになります！

[DEMOページ](http://xd589145.html.xdomain.jp/demo/index.html)

<p class="codepen" data-height="265" data-theme-id="light" data-default-tab="html,result" data-user="aucfan-ohta" data-slug-hash="yLagrMx" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="loading">
  <span>See the Pen <a href="https://codepen.io/aucfan-ohta/pen/yLagrMx">
  loading</a> by aucfan-ohta (<a href="https://codepen.io/aucfan-ohta">@aucfan-ohta</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
## まとめ
今回はとてもざっくりですがローディングで読み込みの待ち時間も視覚的に楽しめるようなものを作ってみました。
まだまだJSは一から書くのは難しいのですが、
サイトに色々な動きをどんどん取り入れて行きたいと思いました！
イラストでほっこりしていただけたら嬉しいです！
みなさま、良い年末をお過ごしくださいませ。
ここまで閲覧いただき、ありがとうございました！