window.addEventListener(‘load’,…) を使ったローディングアニメーション(SVG)の実装

window.addEventListener(‘load’,…) を使ったローディングアニメーション(SVG)の実装

JavaScriptを使ったローディングアニメーション(SVG)。

備忘録として。手順は以下。

  • ローディングSVGファイルをサーバーに配置。
  • ローディング待ちさせたいボックス要素内にローディングSVGのHTMLを記述。
  • ローディングアニメーションおよび背景マスク等のCSSを適用。
  • ローディングアニメーション制御用のwindow.addEventListener(‘load’,…) スクリプトを記述。
<div class="mainVisual">
    <div id="loader-bg" class="is-hide">
        <div id="loader" class="is-hide">
            <img src="theme/***/img/common/loading.svg" />
        </div>
    </div>
</div>
/* ローディング待ちさせたいボックス要素にposition: relativeを指定 */
.mainVisual {
  position: relative;
}

/* 非表示 */
.is-hide {
    display: none;
}
/* 背景マスクをフェードアウト */
.fadeout-bg {
    transition-property: opacity;
    transition-delay: .3s;
    transition-duration: .5s;
    opacity: 0;
    pointer-events: none;
}
/* ローダーをフェードアウト */
.fadeout-loader {
    transition-property: opacity;
    transition-delay: .3s;
    transition-duration: .3s;
    opacity: 0;
    pointer-events: none;
}
/* 背景マスク */
#loader-bg {
    position: absolute;
    width: 100%;
    height: 100%;
    background: #F9F9F9;
    left: 0;
    top: 0;
    z-index: 1;
}
/* ローダーのサイズ、レイアウト指定 */
#loader {
    position: absolute;
    width: 200px;
    height: 200px;
    left: 50%;
    top: 50%;
    margin-left: -100px; /* ローダーサイズの2分の1 */
    margin-top: -100px; /* ローダーサイズの2分の1 */
}
#loader img {
    width: 200px;
}

ひとまず、bodyの閉じタグ前辺りに以下のスクリプトを配置。

<script>
    var bg = document.getElementById('loader-bg');
    var loader = document.getElementById('loader');
    bg.classList.remove('is-hide');
    loader.classList.remove('is-hide');
    window.addEventListener('load', stoploader);
    setTimeout('stoploader()',5000); //5秒で強制的に処理停止
    function stoploader(){
        bg.classList.add('fadeout-bg');
        loader.classList.add('fadeout-loader');
    }
</script>

参考にさせていただいたサイト:エコムクリエーション - 脱jQuery! JavaScriptを使ってやってみよう【ローディング画面を実装する Chapter.3】

コメント


コメントする


7mcXPF