ローディングアニメーション実装(メモ)

TOC

SWELLの画面内で編集する方法

SWELLの外観→ウィジット→ヘッダー内部

以下のコードをカスタムHTMLウィジットに貼り付け

<!-- ローディング画面 -->
<div id="loading">
  <div class="spinner"></div>
</div>

追加css

/* Loading Block */
#loading {
  width: 100vw;
  height: 100vh;
  transition: all 1s;
  background-color: rgba(255 255 255 / 95%);
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
}
.spinner {
  width: 40px;
  height: 40px;
  background-color: var(--color_main);
  margin: 25% auto;
  -webkit-animation: sk-rotateplane 1.2s infinite ease-in-out;
  animation: sk-rotateplane 1.2s infinite ease-in-out;
}
/* Loading Animation */
@-webkit-keyframes sk-rotateplane {
  0% {
    -webkit-transform: perspective(120px)
  }
  50% {
    -webkit-transform: perspective(120px) rotateY(180deg)
  }
  100% {
    -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg)
  }
}
@keyframes sk-rotateplane {
  0% {
    transform: perspective(120px) rotateX(0deg) rotateY(0deg);
    -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)
  }
  50% {
    transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
    -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)
  }
  100% {
    transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
    -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
  }
}
/* Hide Loading Block */
.loaded {
  opacity: 0;
  visibility: hidden;
}

外観→カスタマイズ→高度な設定

ローディング画面を消すJavaScriptを貼り付け

<script>
window.onload = function() {
  const spinner = document.getElementById('loading');
 
  // Add .loaded to .loading
  spinner.classList.add('loaded');
}
</script>

header.phpに追記する方法

子テーマにheader.phpをコピーし、以下のスクリプトを貼り付け

<!--ローディング アニメーション(トップページのみ読み込み) -->
<?php if ( is_home() || is_front_page() ) : ?>
	<div id="loader_wrap">
		<div class="loader">
			<div class="loader-rotate"></div>
		</div>
	</div>

	<script>
	var flg = null;
  	var check_access = function () {
   // sessionStorageの値を判定
   if (sessionStorage.getItem('access_flg')) {
   		// 2回目以降
      flg = 1;
    } else {
      // 1回目
      sessionStorage.setItem('access_flg', true);
      flg = 0
    }
    return flg;
  }
 
 	var $i = check_access();
	const loader = document.getElementById("loader_wrap");
 	if($i == 0){
   	// 1回目アクセスの処理
		// 3秒後にopacityを「0」にする
		setTimeout(() => {
		 	loader.style.opacity = 0;
		}, 3000);
		// アニメーション終了後に要素を取り除く
		loader.addEventListener("transitionend", () => {
		loader.remove();
		});
  }else{
    // 2回目アクセスの処理
		// 読み込ませないようにすぐ要素を取り除く
		loader.remove("loader_wrap");
  }
	</script>
<?php endif; ?>
<!--ローディング アニメーション(トップページのみ読み込み) -->

追加css

/************************************
 ローディングアニメーション
************************************/
/* 画面全体 */
#loader_wrap {
	z-index: 999;
	position: fixed;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100vw;
	height: 100vh;
	top: 0;
	background: rgba(255 255 255 / 85%);;
	pointer-events: none;
	transition: all 0.4s;
}
/* ぐるぐる */
.loader-rotate {
 	width: 40px;
 	height: 40px;
	margin: 0 auto;
 	border-radius: 50%;
 	border: solid 4px;
 	border-color: #808080 #00000010 #00000010;
 	position: relative;
 	animation: spin 1s infinite linear;
}
/* ************************************
  ************************************ */
S H A R E
  • URLをコピーしました!

\ SWELLのカスタマイズ /

WordPressテーマ「SWELL」を

使用したカスタマイズ事例集

TOC