WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

jQuery.3 では .loadは廃止

2016年6月に「jQuery.3.x」バージョンがリリースされ、現在では、最新版のv3.2.1がリリースされています。
jQuery.2.x」バージョンから「jQuery.3.x」バージョンへの大きな変更として、 .load .unload .error のイベントが廃止されました。
中でもよく使われる「 .load() 」イベントは「jQuery.3.x」バージョンでも使用出来る代わりの記述方法をしっかりと覚えておきましょう。

jQuery.2.x」バージョンまでの書き方
/*  load  */
$(window).load(function(){
  //実行内容
})
jQuery.3.x」バージョンまでの書き方
$(window).on('load',function(){
  //実行内容
});


.click() から
.on('click',function() になったのと同じイメージです。


以上を踏まえて、3.xバージョンでも動くように書き換えましょう。

$(function() {

if($(window).width() > 767){ 
$(function() {
  $('#container').css('display','none');
  $('#loader').fadeIn(2000);
});

$(window).on('load',function () { //全ての読み込みが完了したら実行
  $('#loader-bg').delay(3000).slideUp(400);
  $('#container').css('display', 'block');
});

//5秒たったら強制的に実行
$(function(){
  setTimeout(stopload(),5000);
});
function stopload(){
  $('#loader-bg').delay(3000).slideUp(400);
  $('#container').css('display','block');
};

}else {
 $('#loader-bg').css('display','none');
 $('#loader img').css('display','block');
};
});
CDNに接続できない場合の代替策

なかなかないとは思いますが、万が一CDNがダウンしてしまった場合の代替策として、フォールバックという方法があります。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- CDNが使えない場合は自サーバーに置いたjQueryファイルを読み込む -->
<script>
window.jQuery || document.write(‘<script src="js/jquery-3.2.1.min.js"><\/script>’);
</script>

ローディング中にアニメーション画面を表示させる

liginc.co.jp


photoshopvip.net


uxmilk.jp


最近は、トップページに全画面サイズの画像や動画を表示させているサイトも珍しくありません。アイキャッチとしては非常に有効ですが、どうしてもデータサイズが大きくなり、表示に時間がかかってしまいます。また、テキストだけが先に表示され、一瞬ですがレイアウトが崩れてしまったりしてしまいます。

もちろん1番良いのは画像や動画のデータを出来る限り軽くする事ですが、場合によっては、サイトのデータが読み込まれるまでローディング画像を擬似的に用意する事でユーザーがストレスを感じ難くしてあげるなどの方法もあります。
本来はgifアニメなどでローディング画像を作るのが一般的ですが、今回はCSS3のアニメーションを使って、動きのある画像を見せる事でよりストレスの軽減を図ります。
すべての動きをCSS3のアニメーションで動かす事も一応出来ますが、jQueryと使い分ける事で、よりスムーズに表示させましょう。






イメージとしては、読み込み中はメインコンテンツの上に目隠し用のレイヤーを表示し、全ての読み込みが完了したタイミングで目隠しを非表示にする、というイメージです。

CSS3でやる事

ローディングアニメの動き

jQUeryでやる事

ローディング画像のレイヤーの表示・非表示のコントロール



目隠し用のローディング画像があるレイヤー(#containerの外)

<body>


<div id="container">
  メインコンテンツ
</div>

<div id="loader-bg">
<div id="loader">
<img src="ローディング画像">
</div>
</div>
</body>
jQueryでの「ready」と「load」と違いを理解する

両方ともjQueryを呼び出す為のものですが、呼び出すタイミングが微妙に違います。

「ready」はロードされて操作が可能になったタイミングで実行するという意味です。
「load」はロードされて画像などの関連データの読み込みが全て完了したら実行します。


css

#loader-bg {
width: 100%;
height: 100vh;
background: #000000;
position:fixed;
top:0;
left: 0;
}
#loader {
width: 160px;
height: 160px;
background: #E16163;
position: absolute;
top:0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
display:none;
}
$(function(){
  $('#container').css('display','none');
  $('#loader').fadeIn(400);
});
$(window).load(function () { //全ての読み込みが完了したら実行
  $('#loader-bg').delay(3000).slideUp(400);
  $('#loader').delay(2000).fadeOut(1000);
  $('#container').css('display', 'block');
});


しかし、このままではスマホ時にスクリプトが適応されていない為、ずっとカバーがかかったままになってしまいます。
なので、if文に767px以下では「$('#loader-bg').css('display','none');」が適用されるようにスクリプトを追加しましょう。

jQuery演習

使用するjQueryメソッド

  • .on()
  • .css()
  • .fadeIn()
  • .fadeOut()


【問01】「変化」ボタンをクリックしたら300pxの正方形であるdiv#boxの背景色が黒色から、赤色に変わるように記述しなさい。


【問02】「変化」ボタンをクリックしたらh2に対して文字色が赤、背景色が黒、文字の大きさが16px、文字の太さがノーマルになるよう記述しなさい。


【問03】「フェード・アウト」ボタンをクリックしたら、画像が0.5秒かけて徐々に非表示になるようにしなさい。


【問04】「フェード・イン」ボタンをクリックしたら【問09】で非表示になった画像が「slow」のタイミングで表示されるようにしなさい。

商用利用可能なアイコン素材をフリー(無料)でダウンロードできる「ICOOON MONO」

ICOOON MONOとは?

f:id:yachin29:20170613174532p:plain



商用利用可能なモノトーンのアイコン素材をフリー(無料)でダウンロードできる素材配布サイトです。

『ICOOON MONO』は、WEBデザインやDTPのほか、ビジネスシーンで活用できるアイコン素材をストックしています。
使用条件に違反しない限り、クレジット表記や許可なしで、自由に利用出来ます。
JPG、PNGSVG、Ai、EPS形式と、色々な形式でダウンロード出来るので、非常に便利です。




icooon-mono.com

フルスクリーンレイアウトのレスポンシブデザイン

f:id:yachin29:20161026201426p:plain


スマホレイアウト

f:id:yachin29:20161027204011p:plain


今まではカラムレイアウトを中心にレスポンシブデザインサイトの制作をして来ましたが、今回は既存のサイトをモデルにした全面レイアウトでのレスポンシブサイトを作っていきましょう。

全面レイアウトの場合、そのような考えで画像をサイズを決めなければいけないか、しっかりと理解しましょう。ホバーに関してはモデルとなっている既存サイトの動きを確認し、CSS3のtransitionを使って動かしてみましょう。


今まで習った事を上手く組み合わせれば、今回のようなレイアウトのRWDサイトも問題無く制作出来るので、自分なりに色々と工夫をしてみましょう。
それと同時に、今まで習った基礎的な部分をしっかりと復習し必ず理解しておきましょう。

今回はスクリーンのサイズを幅1800px・高さ900pxを想定して背景画像を用意しましょう。



参考サイト
www.vogue.co.jp

http://mosaic-theme-active.myshopify.com/


<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フルスクリーンレイアウト</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="style.css">
</head>

<body>
<div id="loader_bg">
<div id="loader">
<h1><img src="img/logo.svg" alt=""></h1>
</div>
</div>


<div id="container">

<div class="top top_L">
<div class="cap">
<h2>画像の見出し</h2>
<p>説明文</p>
<p><a href="#">リンク</a></p>
</div><!--/.cap-->
</div><!--/.top top_L-->

<div class="top top_R">
<div class="cap">
<h2>画像の見出し</h2>
<p>説明文</p>
<p><a href="#">リンク</a></p>
</div><!--/.cap-->
</div>
<div class="bottom btm_L">
<div class="cap">
<h2>画像の見出し</h2>
<p>説明文</p>
<p><a href="#">リンク</a></p>
</div><!--/.cap-->
</div>
<div class="bottom btm_C">
<div class="cap">
<h2>画像の見出し</h2>
<p>説明文</p>
<p><a href="#">リンク</a></p>
</div><!--/.cap-->
</div>
<div class="bottom btm_R">
<div class="cap">
<h2>画像の見出し</h2>
<p>説明文</p>
<p><a href="#">リンク</a></p>
</div><!--/.cap-->
</div>
</div>
</body>
</html>


スタイルシート

@charset "utf-8";
/* CSS Document */

html,body,h1,h2,p {
margin:0;
padding:0;
line-height:1.0;
}
a {
text-decoration:none;
color:#FFF;
}
img {
vertical-align:bottom;
}



#container {
overflow:hidden;
}
.top {
width:50%;
height:50vh;
float:left;
}
.bottom {
width:33.33%;
height:50vh;
float:left;
}
.top_L {
background:url(img/L1.png) no-repeat center/cover;
}
.top_R {
background:url(img/L2.png) no-repeat center/cover;
}
.btm_L {
background: url(img/S1.png) no-repeat center/cover;
}
.btm_C {
background: url(img/S2.png) no-repeat center/cover;
}
.btm_R {
background: url(img/S3.png) no-repeat center/cover;
}

/*ホバーアクション*/
.cap {
width:100%;
height:100%;
padding-top:160px;
background:rgba(255,0,51,0);
transition:0.2s;

}
h2,p {
text-align:center;
margin-bottom:60px;
color:#FFFFFF;
}
.cap:hover {
padding-top:60px;
background:rgba(255,0,51,1);
}

h1 {
width:160px;
height:160px;
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
margin:auto;
}
img {
max-width:100%;
}

#loader_bg {
width:100%;
height:100vh;
background:#000000;
position:fixed;
}
/*スマホレイアウト*/
@media screen and (max-width:767px) {
.top {
width:100%;
height:300px;
float:none;
margin-bottom:200px;
position:relative;
}
.bottom {
width:100%;
height:300px;
float:none;
margin-bottom:200px;
position:relative;
}

.cap {
width:100%;
height:180px;
padding-top:20px;
transition:none;
position:absolute;
top:100%;
left:0;

}
h2,p {
margin-bottom:20px;
color:#000;
}
a {
color:#222;
}
.cap:hover {
padding-top:20px;
background:transparent;
}

}
$(function() {
if($(window).width() > 767){ 
$(function() {
  $('#container').css('display','none');
  $('#loader').fadeIn(300);
});
$(window).load(function () { //全ての読み込みが完了したら実行
  $('#loader-bg').delay(3000).slideUp(400);
  $('#loader').delay(2000).fadeOut(1000);
  $('#container').css('display', 'block');
});
//10秒たったら強制的にロード画面を非表示
$(function(){
  setTimeout(stopload(),10000);
});
function stopload(){
  $('#container').css('display','block');
  $('#loader-bg').delay(3000).slideUp(400);
  $('#loader').delay(2000).fadeOut(1000);
};
}else {
 $('#loader-bg').css('display','none');
}
});

css3のfilter機能

css3のfilter機能を使うと今までPhotoshopなどで行っていた画像加工を簡単に加える事が出来ます。

対応ブラウザー

f:id:yachin29:20160204235840j:plain


上の図によると
IE ✕
FireFox ◯

  • webkit-系はベンダープレフィックスを入れれば ◯

といった感じです。


使用できる効果

使用できる効果は約10 種類あるようです。

grayscale(グレースケール)

0(初期値) - 100[%] を指定してあげることで、画像の表示をグレースケールに変換することができます。

  • webkit-filter: grayscale(100%);

filter: grayscale(100%);

sepia(セピア)

0(初期値) - 100[%] を指定してあげることで、画像の表示をセピア調に変換することができます。

filter: sepia(100%);

saturate(彩度)

0 - 100(初期値)[%] を指定してあげることで、画像の表示の彩度(色の鮮やかさ)を変更することができます。


-webkit-filter: saturate(0%);
filter: saturate(0%);


hue-rotate(色相回転)

0(初期値) - 360[deg] を指定してあげることで、画像の表示の色相を変更することができます。

360deg も指定することができるが、0deg と同じなので元の色相になります。

  • webkit-filter: hue-rotate(360deg);

filter: hue-rotate(360deg);

invert(階調反転)

0(初期値) - 100[%] を指定してあげることで、画像の表示の階調を反転させることができます。

  • webkit-filter: invert(100%);

filter: invert(100%);

opacity(透過度)

0 - 100(初期値)[%] を指定してあげることで、画像の表示の透過度を変更することができます。

CSS3 のopacity: XX%;とほぼ同じような効果です。

filter: opacity(0%);

brightness(明るさ)

0 - 100(初期値)[%] を指定してあげることで、画像の表示の明るさを変更することができます。

元画像より暗くしたい場合に使えます。brightness(0%) で画像は真っ黒になります。

  • webkit-filter: brightness(0%);

filter: brightness(0%);

contrast(コントラスト)

0 - 100(初期値)[%] を指定してあげることで、画像の表示のコントラストを変更することができます。

明るさ同様、コントラストを下げたい場合に使用できます。

  • webkit-filter: contrast(0%);

filter: contrast(0%);

blur(ぼかし)

0(初期値) - 任意の値[px] を指定してあげることで、画像の表示をぼかすことができます。

filter: blur(3px);