横移動させて全画面で見せる
フェードイン・アウトさせて全画面で見せる
ゆっくりズームアウトさせながら全画面で見せる
動きを組み合わせて全画面で見せる
動画と組み合わせて全画面で見せる
複数画像を並列に見せる
複数画像を中央に注目させて見せる
複数画像を流して見せる
2つの画像の動きを対比させて見せる
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/4-1-3.css">
body内のローディングを表示させたい場所に以下のHTMLを記載します。
<div id="splash">
<div id="splash_text"></div>
<div class="loader_cover loader_cover-up"></div><!--上に上がるエリア-->
<div class="loader_cover loader_cover-down"></div><!--下に下がるエリア-->
<!--/splash--></div>
<div id="container">
<p>ローディング後、この画面が見えます。</p>
<!--/container--></div>
body 終了タグ直前に jQuery、ProgressBar.js、動きを制御する自作のJS の3 つを読み込みます。また、IE11 に対応したい場合はIE対策用のJSを追加で2 つ読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.min.js"></script>
<!--IE11用※対応しなければ削除してください-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script><!--不必要なら削除-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script><!--不必要なら削除-->
<!--自作のJS-->
<script src="js/4-1-3.js"></script>
CSSの書き方
/*========= LoadingのためのCSS ===============*/
/* Loading背景画面設定 */
#splash {
/*fixedで全面に固定*/
position: fixed;
width: 100%;
height: 100%;
z-index: 999;
text-align:center;
color:#fff;
}
/* Loading画像中央配置 */
#splash_text {
position: absolute;
top: 50%;
left: 50%;
z-index: 999;
transform: translate(-50%, -50%);
color: #fff;
width: 100%;
}
/*IE11対策用バーの線の高さ※対応しなければ削除してください*/
#splash_text svg{
height: 2px;
}
/*割れる画面のアニメーション*/
.loader_cover {
width: 100%;
height: 50%;
background-color: #333;
transition: all .2s cubic-bezier(.04, .435, .315, .9);
transform: scaleY(1);
}
/*上の画面*/
.loader_cover-up {
transform-origin: center top;
}
/*下の画面*/
.loader_cover-down {
position: absolute;
bottom: 0;
transform-origin: center bottom;
}
/*クラス名がついたらY軸方向に0*/
.coveranime {
transform: scaleY(0);
}
JSの書き方
//テキストのカウントアップ+バーの設定
var bar = new ProgressBar.Line(splash_text, {//id名を指定
easing: 'easeInOut',//アニメーション効果linear、easeIn、easeOut、easeInOutが指定可能
duration: 1000,//時間指定(1000=1秒)
strokeWidth: 0.2,//進捗ゲージの太さ
color: '#555',//進捗ゲージのカラー
trailWidth: 0.2,//ゲージベースの線の太さ
trailColor: '#bbb',//ゲージベースの線のカラー
text: {//テキストの形状を直接指定
style: {//天地中央に配置
position: 'absolute',
left: '50%',
top: '50%',
padding: '0',
margin: '-30px 0 0 0',//バーより上に配置
transform:'translate(-50%,-50%)',
'font-size':'1rem',
color: '#fff',
},
autoStyleContainer: false //自動付与のスタイルを切る
},
step: function(state, bar) {
bar.setText(Math.round(bar.value() * 100) + ' %'); //テキストの数値
}
});
//アニメーションスタート
bar.animate(1.0, function () {//バーを描画する割合を指定します 1.0 なら100%まで描画します
$("#splash_text").fadeOut(10);//フェイドアウトでローディングテキストを削除
$(".loader_cover-up").addClass("coveranime");//カバーが上に上がるクラス追加
$(".loader_cover-down").addClass("coveranime");//カバーが下に下がるクラス追加
$("#splash").fadeOut();//#splashエリアをフェードアウト
});
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/4-1-1.css">
body内のローディングを表示させたい場所に以下のHTMLを記載します。
<div id="splash">
<div id="splash_text"></div>
<!--/splash--></div>
<div id="container">
<p>ローディング後、この画面が見えます。</p>
<!--/container--></div>
body 終了タグ直前に jQuery、ProgressBar.js、動きを制御する自作のJS の3 つを読み込みます。
また、IE11 に対応したい場合はIE対策用のJSを追加で2 つ読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.min.js"></script>
<!--IE11用-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script><!--不必要なら削除してください-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script><!--不必要なら削除してください-->
<!--自作のJS-->
<script src="js/4-1-1.js"></script>
CSSの書き方
/* Loading背景画面設定 */
#splash {
/*fixedで全面に固定*/
position: fixed;
z-index: 999;
width: 100%;
height: 100%;
background:#333;
text-align:center;
color:#fff;
}
JSの書き方
var bar = new ProgressBar.Line(splash_text, {//id名を指定
strokeWidth: 0,//進捗ゲージの太さ
duration: 1000,//時間指定(1000=1秒)
trailWidth: 0,//線の太さ
text: {//テキストの形状を直接指定
style: {//天地中央に配置
position:'absolute',
left:'50%',
top:'50%',
padding:'0',
margin:'0',
transform:'translate(-50%,-50%)',
'font-size':'1.2rem',
color:'#fff',
},
autoStyleContainer: false //自動付与のスタイルを切る
},
step: function(state, bar) {
bar.setText(Math.round(bar.value() * 100) + ' %'); //テキストの数値
}
});
//アニメーションスタート
bar.animate(1.0, function () {//バーを描画する割合を指定します 1.0 なら100%まで描画します
$("#splash").delay(500).fadeOut(800);//アニメーションが終わったら#splashエリアをフェードアウト
});
768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/5-1-26.css">
body内にリンク元のHTMLとリンク先のHTMLを記載します。
<header id="header">
<h1>Logo</h1>
<nav id="g-nav">
<ul>
<li><a href="#area-1">Area1</a></li><!--現在地のliにはJavaScriptでcurrentというクラス名がつきます-->
<li><a href="#area-2">Area2</a></li>
<li><a href="#area-3">Area3</a></li>
<li><a href="#area-4">Area4</a></li>
</ul>
</nav>
</header>
<main>
<section class="scroll-point" id="area-1">
<h2>Area 1</h2>
<p>内容が入ります。</p>
<!--/area1--></section>
<section class="scroll-point" id="area-2">
<h2>Area 2</h2>
<p>内容が入ります。</p>
<!--/area2--></section>
<section class="scroll-point" id="area-3">
<h2>Area 3</h2>
<p>内容が入ります。</p>
<!--/area3--></section>
<section class="scroll-point" id="area-4">
<h2>Area 4</h2>
<p>内容が入ります。</p>
<p>内容が入ります。</p>
<!--/area4--></section>
<!--/main--></main>
<footer id="footer">
<small>© copyright.</small>
</footer>
body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!--自作のJS-->
<script src="js/5-1-26.js"></script>
CSSの書き方
/*========= 現在地表示のためのCSS ===============*/
#header{
position: fixed;/*header固定*/
height: 70px;/*Headerの高さ設定*/
width:100%;
display: flex;
justify-content: space-between;
align-items: center;
background:#333;
color:#fff;
text-align: center;
}
/* 以下はレイアウトのための CSS*/
nav ul{
list-style: none;
display: flex;
}
nav ul li a{
display: block;
text-decoration: none;
color: #666;
padding:10px;
transition:all 0.3s;
}
nav ul li.current a,
nav ul li a:hover{
color:#fff;
}
@media screen and (max-width:768px) {
nav ul li a:hover{
color: #666;
}
nav ul li.current a {
color:#fff;
}
}
section{
padding: 300px 0;
}
footer{
padding: 50px 0;
}
JSの書き方
//基準点の準備
var elemTop = [];
//現在地を取得するための設定を関数でまとめる
function PositionCheck(){
//headerの高さを取得
var headerH = $("#header").outerHeight(true);
//.scroll-pointというクラス名がついたエリアの位置を取得する設定
$(".scroll-point").each(function(i) {//.scroll-pointクラスがついたエリアからトップまでの距離を計算して設定
elemTop[i] =Math.round(parseInt($(this).offset().top-headerH));//追従するheader分の高さ(70px)を引き小数点を四捨五入
});
}
//ナビゲーションに現在地のクラスをつけるための設定
function ScrollAnime() {//スクロールした際のナビゲーションの関数にまとめる
var scroll = Math.round($(window).scrollTop());
var NavElem = $("#g-nav li");//ナビゲーションのliの何番目かを定義するための準備
$("#g-nav li").removeClass('current');//全てのナビゲーションの現在地クラスを除去
if(scroll >= 0 && scroll < elemTop[1]) {//スクロール値が0以上 .scroll-point 1つめ(area-1)の高さ未満
$(NavElem[0]).addClass('current');//1つめのliに現在地クラスを付与
}
else if(scroll >= elemTop[1] && scroll < elemTop[2]) {//.scroll-point 1つめ(area-1)以上.scroll-point 2つめ(area-2)未満
$(NavElem[1]).addClass('current');//2つめのliに現在地クラスを付与
}
else if(scroll >= elemTop[2] && scroll < elemTop[3]) {//.scroll-point 2つめ(area-2)以上.scroll-point 3つめ(area-3)未満
$(NavElem[2]).addClass('current');//3つめのliに現在地クラスを付与
}
else if(scroll >= elemTop[3]) {// .scroll-point 3つめ(area-3)以上
$(NavElem[3]).addClass('current');//4つめのliに現在地クラスを付与
}
}
//ナビゲーションをクリックした際のスムーススクロール
$('#g-nav a').click(function () {
var elmHash = $(this).attr('href'); //hrefの内容を取得
var headerH = $("#header").outerHeight(true);//追従するheader分の高さ(70px)を引く
var pos = Math.round($(elmHash).offset().top-headerH); //headerの高さを引き小数点を四捨五入
$('body,html').animate({scrollTop: pos}, 500);//取得した位置にスクロール※数値が大きいほどゆっくりスクロール
return false;//リンクの無効化
});
// 画面をスクロールをしたら動かしたい場合の記述
$(window).scroll(function () {
PositionCheck();/* 現在地を取得する関数を呼ぶ*/
ScrollAnime();/* ナビゲーションに現在地のクラスをつけるための関数を呼ぶ*/
});
// ページが読み込まれたらすぐに動かしたい場合の記述
$(window).on('load', function () {
PositionCheck();/* 現在地を取得する関数を呼ぶ*/
ScrollAnime();/* ナビゲーションに現在地のクラスをつけるための関数を呼ぶ*/
});
$(window).resize(function() {
//リサイズされたときの処理
PositionCheck()
});
768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/5-1-25.css">
body内にボタンとナビゲーションとぼかしを入れたいエリアのHTMLを記載します。
<div class="openbtn"><span></span><span></span><span></span></div>
<nav id="g-nav">
<div id="g-nav-list">
<ul>
<li><a href="#">Top</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Service</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</nav>
<div id="container">
<p>ぼかしを入れたいエリア</p>
<!--/container--></div>
body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!--自作のJS-->
<script src="js/5-1-25.js"></script>
CSSの書き方
/*========= ぼかしのためのCSS ===============*/
.mainblur{
filter: blur(8px);
}
/*========= ナビゲーションのためのCSS ===============*/
#g-nav{
/*position:fixed;にし、z-indexの数値を小さくして最背面へ*/
position:fixed;
z-index: -1;
opacity: 0;/*はじめは透過0*/
/*ナビの位置と形状*/
top:0;
width:100%;
height: 100vh;/*ナビの高さ*/
background:rgba(255,255,255,0.3);/*背景を少し透過させる*/
/*動き*/
transition: all 0.3s;
}
/*アクティブクラスがついたら透過なしにして最前面へ*/
#g-nav.panelactive{
opacity: 1;
z-index:999;
}
/*ナビゲーションの縦スクロール*/
#g-nav.panelactive #g-nav-list{
/*ナビの数が増えた場合縦スクロール*/
position: fixed;
z-index: 999;
width: 100%;
height: 100vh;/*表示する高さ*/
overflow: auto;
-webkit-overflow-scrolling: touch;
}
/*ナビゲーション*/
#g-nav ul {
display: none;/*はじめは非表示*/
/*ナビゲーション天地中央揃え*/
position: absolute;
z-index: 999;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
#g-nav.panelactive ul {
display: block;
}
/*リストのレイアウト設定*/
#g-nav li{
list-style: none;
text-align: center;
}
#g-nav li a{
color: #333;
text-decoration: none;
padding:10px;
display: block;
text-transform: uppercase;
letter-spacing: 0.1em;
font-weight: bold;
}
/*========= ボタンのためのCSS ===============*/
.openbtn{
position:fixed;
z-index: 9999;/*ボタンを最前面に*/
top:10px;
right: 10px;
cursor: pointer;
width: 50px;
height:50px;
}
/*×に変化*/
.openbtn span{
display: inline-block;
transition: all .4s;
position: absolute;
left: 14px;
height: 3px;
border-radius: 2px;
background-color: #666;
width: 45%;
}
.openbtn span:nth-of-type(1) {
top:15px;
}
.openbtn span:nth-of-type(2) {
top:23px;
}
.openbtn span:nth-of-type(3) {
top:31px;
}
.openbtn.active span:nth-of-type(1) {
top: 18px;
left: 18px;
transform: translateY(6px) rotate(-45deg);
width: 30%;
}
.openbtn.active span:nth-of-type(2) {
opacity: 0;
}
.openbtn.active span:nth-of-type(3){
top: 30px;
left: 18px;
transform: translateY(-6px) rotate(45deg);
width: 30%;
}
JSの書き方
$(".openbtn").click(function () {//ボタンがクリックされたら
$(this).toggleClass('active');//ボタン自身に activeクラスを付与し
$("#g-nav").toggleClass('panelactive');//ナビゲーションにpanelactiveクラスを付与
$("#container").toggleClass('mainblur');//ぼかしたいエリアにmainblurクラスを付与
});
$("#g-nav a").click(function () {//ナビゲーションのリンクがクリックされたら
$(".openbtn").removeClass('active');//ボタンの activeクラスを除去し
$("#g-nav").removeClass('panelactive');//ナビゲーションのpanelactiveクラスを除去し
$("#container").removeClass('mainblur');//ぼかしているエリアのmainblurクラスを除去
});