WEBサイト制作の勉強

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

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

道具の使い方を覚える

PCの使い方

物を作るうえで、その物を作る為の道具の使い方を覚える、という事が非常に大事になってきます。web制作者にとってパーソナルコンピューター(PC)は料理人にとっての包丁や美容師にとってのハサミと同様に、非常に大事な道具です。
今までのようにユーザーとしての使い方では無く、制作者としての使い方を覚えていきましょう。


ブラウザーの使い方

ブラウザーとは?

ウェブブラウザ(インターネットブラウザ、web browser)とは、 World Wide Web (WWW) の利用に供するブラウザであり、ユーザエージェント (UA) である。具体的には、ウェブページを画面や印刷機に出力したり、ハイパーリンクをたどったりするなどの機能がある。単にブラウザ(ブラウザー)と呼んだ場合、多くはウェブブラウザのことを指す。

授業ではFirefoxGoogle Chromeの2つのブラウザーを主に使用していきます。

Mozilla Firefox

非営利団体である「Mozilla Foundation」が開発したブラウザー
Web開発に適したアドオンと呼ばれる追加機能が豊富。最新のHTML5とCSS3による表示が可能。

www.mozilla.org


Google Chrome

Googleが開発しているブラウザーGoogleアカウントと同期する事で様々な拡張が可能。
世界的に見るとシェアNo1ブラウザー。最新のHTML5とCSS3による表示が可能。

www.google.co.jp


Web制作におけるIE(Internet Explorer)

日本では長年ダントツのシェアを占めていたが、以前から不具合が多くweb制作者にとって悩みのタネでした。
最近は事情も変わって場合によってはIE未対応でOKの場合も出て来ています。

検索の仕方を覚える

検索の仕方を覚える、というのもサイト制作の習得の為に必要なスキルです。

「AND」検索

例(池袋 カフェ)
一番使われている方法で2つ以上のキーワードを入力して検索精度を上げることができます。
キーワード間に一文字分のスペース (半角、全角どちらでも可) を入れる。

「OR」検索

例(マイケル・ジャクソン OR Michael Jackson
たとえばマイケル・ジャクソンを調べるときに日本語で「マイケル・ジャクソン」と表記したサイトと英語で「Michael Jackson」と表記した2種類があり場合に、そのどちらも検索結果に出したい場合などに使うのが「OR」検索です。
キーワードを半角大文字「OR」、もしくはパイプ「|」で区切り、その前後には半角スペースを入れます。

「マイナス」検索

例(パソコン -通販)
検索キーワードのすぐ前にマイナス記号(-)を付けると、そのキーワードを含むページを検索結果から除外することができます。
この検索方法を「マイナス検索」といいます。
例えば「パソコン」というキーワードで検索した後に、その検索結果から「通販」と書かれたページを除外したいときには、「パソコン -通販」というキーワードで検索します。
こうすることで、パソコンの通販を行っているページを除外することができます。
マイナス記号は半角で入力し、キーワードの直前に付けます。また、マイナス記号の前にはスペースを入れる必要があります。

スペースは、全角でも半角でも構いません。

「フレーズ」検索

検索したい語句をダブルクォーテーション "" で囲むと、そのままのフレーズで検索できます。


実際に検索をしてみましょう
  • 3年前の今日の最高気温
  • ゴルフで使用するカップの直径とその理由
  • 写真の人物は誰でしょう

f:id:yachin29:20160712001134j:plain




Gメールアカウントを作る

Googleアカウントはweb制作者にとって、もはや必須の物といえます。
また授業内でのデータのやり取りなどでもGメールを使う事が多いので、必ず取得しておきましょう。

www.google.co.jp

www.google.com

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

f:id:yachin29:20161026201426p:plain


スマホレイアウト

f:id:yachin29:20161027204011p:plain


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

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


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




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

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



作成
http://yachin29.webcrow.jp/vogue0710/


モバイルサイトを実装する 3 つの方法

f:id:yachin29:20171027105038p:plain


ようこそ!  |  Search  |  Google Developers




スクロールイベント
$(function(){
	$(window).scroll(function (){
	 if($(this).scrollTop() > 60) {
		 $('nav').addClass('fixed');
	 }else{
		 $('nav').removeClass('fixed');
	 };
	});
});




html

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フルスクリーンレイアウトその2</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script>
$(function(){
  $(window).scroll(function (){
     if($(this).scrollTop() > 60) {
        $('nav').addClass('fixed');
     }else{
        $('nav').removeClass('fixed');
     };
  });
});
</script>
</head>

<body>
<h1><img src="img/logo.svg" alt="ロゴ"></h1>
<header>
<nav>
<ul class="menu">
<li><a href="#">ボタン1</a></li>
<li><a href="#">ボタン2</a></li>
<li><a href="#">ボタン3</a></li>
<li><a href="#">ボタン4</a></li>
<li><a href="#">ボタン5</a></li>
</ul>
</nav>
</header>
<div id="container">
<div class="box1 box-top">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">説明文</p>
<p class="btn">ボタン</p>
</div>
</div>
<div class="box2 box-top">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">説明文</p>
<p class="btn">ボタン</p>
</div>
</div>

<div class="box3 box-bottom">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">説明文</p>
<p class="btn">ボタン</p>
</div>
</div>

<div class="box4 box-bottom">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">説明文</p>
<p class="btn">ボタン</p>
</div>
</div>

<div class="box5 box-bottom">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">説明文</p>
<p class="btn">ボタン</p>
</div>
</div>
</div><!--/#container-->
</body>
</html>


スタイルシート

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

html,body,h1,h2,p,ul,li {
  margin:0;
  padding:0;
  line-height:1.0;
}
ul {
  list-style:none;
}
a {
  text-decoration:none;
}
img {
  border:none;
  vertical-align:bottom;
}

/*PCレイアウト*/
h1 {
  width:160px;
  height:160px;
  position:absolute;
  top:0;
  right:0;
  bottom:0;
  left:8%;
  margin:auto;
  z-index:100;
}
header {
  width:8%;
  height:100vh;
  background:#B0B0B0;
  float:left;
}
nav {
  width:100%;
  height:calc(100vh - 200px);/*100vh - 200px*/
  background:#DD4F52;
  margin-top:200px;
}
.menu li {
  width:100%;
  height:calc((100vh - 200px) / 5);
}
.menu li a {
  display:block;
  width:100%;
  text-align:center;
  line-height:calc((100vh - 200px) / 5);
  color:#222;
}
.menu li a:hover {
  background:#F08688;
}
#container {
  width:92%;
  float:right;
  overflow:hidden;
}
.box-top {
  width:50%;
  height:50vh;
  float:left;
  overflow:hidden;
    position:relative;
}
.box-bottom {
  width:33.33%;
  height:50vh;
  float:left;
  overflow:hidden;
}
.box1 {
  background:url(img/L1.png) no-repeat center/cover;
}
.box2 {
  background:url(img/L2.png) no-repeat center/cover;
}
.box3 {
  background:url(img/S1.png) no-repeat center/cover;
}
.box4 {
  background:url(img/S2.png) no-repeat center/cover;
}
.box5 {
  background:url(img/S3.png) no-repeat center/cover;
}
.cap {
  width:100%;
  height:50vh;
  background:rgba(255,24,38,0.00);
  color:#FFFFFF;
  text-align:center;
  padding-top:160px;
  box-sizing:border-box;
  transition:0.1s linear;
}
.cap:hover {
  width:100%;
  height:50vh;
   background:rgba(255,24,38,1.00);
  text-align:center;
  padding-top:40px;
}
h2 {
  padding-top:100px;
  margin-bottom:60px;
}
p.txt {
  margin-bottom:80px;
}

/*スマホサイトのレイアウト*/
@media screen and (max-width:767px){
header {
  width:100%;
  height:60px;
  background:#B0B0B0;
  float:none;
  position:relative;
}
nav {
  width:100%;
  height:50px;/*100vh - 200px*/
  background:#DD4F52;
  margin-top:0;
  position:absolute;
  top:100%;
  left:0;
}
.menu {
  overflow:hidden;
}
.menu li {
  width:20%;
  height:50px;
  float:left;
}
.menu li a {
  display:block;
  width:100%;
  text-align:center;
  line-height:50px;
  color:#222;
  border-right:1px solid #FFF;
}
.menu li:last-child a {
  border-right:none;
}
#container {
  width:100%;
  float:none;
  overflow:hidden;
}

.box-top {
  width:100%;
  height:50vh;
  float:none;
  margin-bottom:50vh;
  position:relative;
  overflow: visible;/*はみ出したものを表示させる(初期設定に戻す)*/
}
.box-bottom {
  width:100%;
  height:50vh;
  float:none;
  overflow: visible;
  margin-bottom:50vh;
  position:relative;
}
.cap {
  width:100%;
  height:50vh;
  background:#FFF;
  color:#000;
  text-align:center;
  padding-top:0;
  box-sizing:border-box;
  transition: none;
  position:absolute;
  top:100%;
  left:0;
}
.cap:hover {
  width:100%;
  height:50vh;
  background:#FFF;
  text-align:center;
  padding-top:0;
}
h1 {
  width:50px;
  height:50px;
  position:absolute;
  top:5px;
  left:5px;
  margin:0;
}
.box1 {
  margin-top:50px;/*navの高さ分の隙間を取る*/
}

/*スクロールイベント*/
nav.fixed {
  position:fixed;
  top:0;
  left:0;
  z-index:9999;
}
}

Google画像検索風のjQuery

Google画像検索っぽいスライドにするjQuery(レスポンシブ対応)

Googleで画像検索した際に表示される、サムネイルをクリックすると詳細エリアが広がり画像の情報が出てくるやつです。

一応、レスポンシブ対応にもなっていますが、しっかり対応させるには画像処理をひと手間加えた方が良いと思います。
若干入れ子構造が複雑ですが、シンプルで使い易いよく出来たjQueryです。ポートフォリオなどサムネイルを沢山表示したい場合に非常に有効です。またテキストエリアも容易に編集出来るので、説明文なども簡単に入れる事が出来ます。


「<li>」や「<img>」などのインライン要素に対して
HTMLソース上でタグ間を改行させると半角スペースほどの空白(余白)が発生してしまい、扱いに困ることがあります。今回はコメントアウトを入れる事で改行しないようにしています。



<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Google画像検索風スライダー</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0">
<link href="css/style.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="js/GoogleImgSearch.js"></script>
</head>
<body>
<header>
<h1>jQuery GoogleImgSearch UI</h1>
</header>

<div id="container">
<ul class="listCover">
	<li class="listItem">
		<img src="img/01.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/01.jpg" alt=""></div>
				<div class="secRight"><p>エリア【1】のダミーテキスト。エリア【1】のダミーテキスト。エリア【1】のダミーテキスト。</p>
        <div class="view">VIEW</div>
        </div><!--/.secfRight-->
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
  --><li class="listItem">
		<img src="img/02.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/02.jpg" alt=""></div>
				<div class="secRight"><p>エリア【2】のダミーテキスト。エリア【2】のダミーテキスト。エリア【2】のダミーテキスト。エリア【2】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/03.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/03.jpg" alt=""></div>
				<div class="secRight"><p>エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。エリア【3】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/04.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/04.jpg" alt=""></div>
				<div class="secRight"><p>エリア【4】のダミーテキスト。エリア【4】のダミーテキスト。エリア【4】のダミーテキスト。エリア【4】のダミーテキスト。エリア【4】のダミーテキスト。エリア【4】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/05.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/05.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/06.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/06.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/07.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/07.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/08.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/08.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/09.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/09.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/10.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/10.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/11.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/11.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/12.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/12.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/13.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/13.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/14.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/14.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/15.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/15.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/16.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/16.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/17.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/17.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/18.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/18.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/19.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/19.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/20.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/20.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/21.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/21.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/23.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/23.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/24.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/24.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/25.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/25.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/26.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/26.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/27.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/27.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/28.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/28.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/29.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/29.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li><!--
	--><li class="listItem">
		<img src="img/30.jpg" alt="">
		<div class="selfRep">
			<div class="selfRepInner">
				<div class="secLeft"><img src="img/30.jpg" alt=""></div>
				<div class="secRight"><p>エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。エリア【5】のダミーテキスト。</p></div>
			</div><!--/.selfRepInner-->
		</div><!--/.selfRep-->
	</li>
</ul><!--/.listCover-->
</div>
</body>
</html>
style.css
@charset "utf-8";
/* CSS Document */
/* reset */
html, body, div, h1, h2, h3, h4, h5, h6,p, blockquote, pre, 
address,ul, ol, li, dl, dt, dd,table, th, td, form, fieldset {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    "Hiragino Kaku Gothic ProN",
    Meiryo, 
    sans-serif;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
ul, ol {
  list-style: none; /* マーカーを消す */
}
a {
  text-decoration: none; /* 下線を消す */
}
img {
  border: 0;
}
img, input {
  vertical-align: bottom;
}

/*レイアウト*/

body {
	overflow-y: scroll;
}
*html body {overflow-y: auto;} /* IE6 */
*:first-child+html body {overflow-y: auto;} /* IE7 */

h1 {
	margin-bottom: 20px;
	padding: 15px 0;
	background: #000;
	color: #fff;
	font-size: 18px;
	font-weight: bold;
	text-align: center;
}

/* .listCover
------------------------- */
.listCover {
	margin: 0 auto;
	text-align: left;
}

/* .listItem
------------------------- */
.listCover .listItem {
	padding: 10px 0;
	text-align: center;
	display: inline-block;
	*display: inline;
	*zoom: 1;
	cursor: pointer;
}
.listCover .listItem img {
	width: 300px; /*サムネイルの大きさ*/
}
.listCover .active {
	background: url(../img/activeArrow.gif)  no-repeat bottom center;
}
.listCover .listItem .selfRep {
	display: none;
}

/* .expandField
------------------------- */
.expandField {
	padding: 0;
	width: 100%;
	text-align: left;
	display: block;
	background: #333;
	float: left;
	position: relative;
	overflow: hidden;
}
.expandField .btnClose {
	top: 10px;
	right: 0;
	width: 60px;
	height: 60px;
	display: block;
	background: url(../img/close.png) no-repeat top left;
	position: absolute;
	overflow: hidden;
	cursor: pointer;
}
.expandField .btnPrev {
	top: 120px;
	left: 0;
	width: 60px;
	height: 60px;
	display: block;
	background: url(../img/prev.png) no-repeat top left;
	position: absolute;
	overflow: hidden;
	cursor: pointer;
}
.expandField .btnNext {
	top: 120px;
	right: 0;
	width: 60px;
	height: 60px;
	display: block;
	background: url(../img/next.png) no-repeat top left;
	position: absolute;
	overflow: hidden;
	cursor: pointer;
}
.expandField .selfRepInner {
	padding: 20px 50px;
	text-align: center;
	position: relative;
}
.expandField .selfRepInner .secLeft,
.expandField .selfRepInner .secRight {
	width: 50%;
	float: left;
}
.expandField .selfRepInner .secLeft {
	text-align: center;
}
.expandField .selfRepInner .secRight {
	text-align: left;
	width: 40%;
	color: #fff;
}
.secRight p {
  font-size: 16px;
  line-height: 1.2em;
}

.view{
  border:1px solid white;
  border-radius: 5px;
  padding:10px 0;
  width:60%;
  text-align: center;
  margin: 160px auto;
  transition: 0.3s ease-in-out;
}
.view:hover{
  background-color:white;
  color: #333;
  cursor: pointer;
}



/* ===========================================
	SizeAdjustment
=========================================== */
@media screen and (max-width: 959px) {
	.expandField .selfRepInner .secLeft img {
		width: 80%;
	}
}
@media screen and (max-width: 640px) {
	.expandField .selfRepInner .secLeft {
		display: none;
	}
	.expandField .selfRepInner .secRight {
		width: 100%;
		float: none;
	}
}

/* =======================================
	ClearFix
======================================= */
.listCover:before,
.listCover:after,
.expandField .selfRepInner:before,
.expandField .selfRepInner:after {
	content: " ";
	display: table;
}
.listCover:after,
.expandField .selfRepInner:after {clear: both;}
.listCover,
.expandField .selfRepInner {*zoom: 1;}
GoogleImgSearch.js
// JavaScript Document

$(function(){
	var setList = $('.listCover'),
	setItem = $('.listItem'),
	setReplace = $('.selfRep'),
	listBaseWidth = 200,
	thumbOpacity = 0.8,
	expandHeight = 340,
	expandFadeTime = 300,
	expandEasing = 'linear',
	switchFadeTime = 1000,
	switchEasing = 'linear';

	setList.each(function(){
		var targetObj = $(this);

		var findItem = targetObj.find(setItem),
		findElm = targetObj.find(setReplace);

		// リストアイテムクリック
		findItem.click(function(){
			if($(this).hasClass('active')){
				closeExpandActive = targetObj.find('.expandField');
				closeExpandActive.stop().animate({height:'0',opacity:'0'},expandFadeTime,expandEasing,function(){
					closeExpandActive.remove();
				});
				findItem.removeClass('active');
			} else {
				var setExpand = $('.expandField'),
				findExpand = targetObj.find(setExpand),
				thisElm = $(this).find(setReplace).html();

				// 展開ボックス制御
				if(0 < findExpand.size()){
					findExpand.empty().html(thisElm);
					$(this).after(findExpand).next().append('<span class="btnPrev"></span><span class="btnNext"></span><span class="btnClose"></span>');
					var setReplaceInner = $('.selfRepInner'),
					findInner = targetObj.find(setReplaceInner);
					findInner.css({opacity:'0'}).stop().animate({opacity:'1'},switchFadeTime,switchEasing);
				} else {
					$(this).after('<li class="expandField">' + thisElm + '</li>').next().css({height:'0', opacity:'0'}).stop().animate({height:expandHeight, opacity:'1'},expandFadeTime,expandEasing).append('<span class="btnPrev"></span><span class="btnNext"></span><span class="btnClose"></span>');
				}

				// スクロール位置調整
				var thisOffset = $(this).find('img').offset();
				$('html,body').animate({scrollTop:(thisOffset.top-10)},200,'linear');

				// 操作ボタン動作
				function switchNext(){
					var setActiveN = targetObj.find('.active');
					setActiveN.each(function(){
						var listLenghN = findItem.length,
						listIndexN = findItem.index(this),
						listCountN = listIndexN+1,
						findItemFirst = findItem.first();

						if(listLenghN == listCountN){
							findItemFirst.click();
						} else {
							$(this).next().next().click();
						}
					});
				}
				function switchPrev(){
					var setActiveP = targetObj.find('.active');
					setActiveP.each(function(){
						var listLenghP = findItem.length,
						listIndexP = findItem.index(this),
						listCountP = listIndexP+1,
						findItemLast = findItem.last();

						if(1 == listCountP){
							findItemLast.click();
						} else {
							$(this).prev().click();
						}
					});
				}
				function switchHide(){
					closeExpand = targetObj.find('.expandField');
					closeExpand.stop().animate({height:'0',opacity:'0'},expandFadeTime,expandEasing,function(){
						closeExpand.remove();
					});
					findItem.removeClass('active');
				}

				$(this).addClass('active').siblings().removeClass('active');

				var btnPrev = targetObj.find('.btnPrev'),btnNext = targetObj.find('.btnNext'),btnClose = targetObj.find('.btnClose');
				btnPrev.click(function(){switchPrev();});
				btnNext.click(function(){switchNext();});
				btnClose.click(function(){switchHide();});

			}
		});

		// サムネイルロールオーバー
		var agent = navigator.userAgent;
		if(!(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1)){
			findItem.hover(function(){
				$(this).stop().animate({opacity:thumbOpacity},200);
			},function(){
				$(this).stop().animate({opacity:'1'},200);
			});
		}

		// リキッド操作
		function listAdjust(){
			var ulWrap = targetObj.width(),
			ulNum = Math.floor(ulWrap / listBaseWidth),
			liFixed = Math.floor(ulWrap / ulNum);
			findItem.css({width: (liFixed)});
		}
		$(window).resize(function(){listAdjust();}).resize();
		$(window).load(function(){setTimeout(function(){listAdjust();},200);}); // for IE8
	});
});


詳しい説明はこちら
black-flag.net

ヒーローヘッダーを使ったサイト制作

f:id:yachin29:20170209004414j:plain


最近、よく見かける「1枚画像」を画面全体に表示させているようなフルスクリーンレイアウト。
「ヒーローヘッダー」と呼ばれています。

ヒーローヘッダー(Hero Header)とは、ウェブサイトのファーストビューに全画面の画像を使用するなど、巨大なイメージで構成されたウェブサイトのことを指します。

2014年頃から海外のウェブデザインにてトレンド的にかなり増えてきている手法です。
巨大な画像により、イメージを強く植えつけることができる反面、写真のクオリティ次第でウェブサイト全体の印象を悪くすることも有りますので、フラットデザイン同様簡単そうでデザインセンスの問われるデザイン要素となっています。


参考サイト
http://racines-park.com/



ferret-plus.com


こういったレイアウトを作る際の1番のポイントは、用意する画像の大きさです。
自分のPCでは綺麗にフルスクリーンで表示されるけど、別のPCでは写真が見切れてしまっていたり、逆に余白が出てしまったり、という事が起こります。

ビットマップのデータをすべてのディスプレイでピッタリの大きさに合わせるという事は基本的に無理なので、ある大きさで書き出した画像をCSSで拡大・縮小していきます。

img要素の場合は前回やったようにフルードイメージ化する事で画像を可変にしましたが、background画像の場合は「background-size」というプロパティを使って、拡大・縮小していきます。

画像を可変にする方法は二通りのみ

img要素ならフルードイメージ

  • フルードイメージの場合、基本的に拡大はさせない為、想定される範囲の中で最大サイズで書き出す。
  • 拡大はNGなので、綺麗に見せたい商品画像などに使用

background画像なら「background-size」

  • 「background-size」の場合、拡大・縮小ともに自由に出来る為、想定される範囲の中間付近のサイズで書き出す。
  • 拡大・縮小を自由に出来る為、ディテールに拘らない、背景などの画像に使用

今回のようにフルスクリーンで画像を表示したい場合、絶対的に決まった大きさはありませんが、一番シェアの多いモニターの解像度で作るのが無難です。
モニター解像度のシェア(2017年1月現在)
f:id:yachin29:20170512100245p:plain

画面のアスペクト比も、以前の「4 : 3」のスクエア型から「16:9」と「16:10」といったワイド型が大半を占めているのが解ります。
f:id:yachin29:20170512112150p:plain




さらにフルスクリーンのように大きなサイズの画像をwebで使う時は必ず下記のようなサービスを使ってデータを軽くし、ユーザビリティーの向上に努めましょう。
tinypng.com




background-sizeプロパティの指定方法

background-sizeプロパティは、背景画像のサイズを指定する際に使用します。これまで使ってきたようなピクセルやパーセンテージの他に「contain」「cover」といった値でも設定出来ます。


「contain」

縦横比は保持して、背景領域に収まる最大サイズになるように背景画像を拡大縮小する

「cover」

縦横比は保持して、背景領域を完全に覆う最小サイズになるように背景画像を拡大縮小する

http://yachin29.com/background-size/


background-sizeプロパティは、スマホサイト制作でよく使用されるプロパティなので、各値の違いをしっかり覚えて使えるようにしていきましょう。


<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フルスクリーンレイアウト</title>
<meta name="viewport" content="width=device-width">
<style>
html,body,h1,p,ul,li,a {
  margin:0;
  padding:0;
}
ul {
  list-style:none;
}
a {
  text-decoration:none;
}
body {
  width:100%;
  height:90vh;/*100vhで画面1つ分*/
  background: url(img/bg.jpg) no-repeat left top/cover;
  background-attachment:fixed;/*背景画像が固定*/
}
#container {
  width:100%;
  height:3000px;
}
header {
  width:100%;
  height:90vh;
}
nav {
  width:100%;
  height:10vh;
  background:#FFFFFF;
}
nav ul {
  max-width:960px;
  height:10vh;
  margin:0 auto;
  overflow:hidden
}
nav li {
  width:16.66%;
  float:left;
}
nav li a {
  display:block;
  width:100%;
  line-height:10vh;
  text-align:center;
  color:#2AA60B;
  font-size:15px;
  font-weight:bold;
}
nav li a:hover {
  opacity:0.8;
}
h1 {
  font-size:100px;
  color: #FFF;
  text-align:center;
  padding-top:100px;
  text-shadow:1px 1px 0 #666,
                    -1px 1px 0 #666,
                    1px -1px 0 #666,
                    -1px -1px 0 #666;
}
#btn {
  width:200px;
  height:50px;
  margin: 100px auto 0;
   border:4px solid #FFFFFF;
}
#btn a {
  display:block;
  font-family: 'Source Serif Pro', serif;
  width:100%;
  text-align:center;
  line-height:50px;
  font-size:24px;
  color:#FFFFFF;
  background:rgba(0,0,0,0.20);
}
.box {
  width:100%;
  height:100vh;
  background:rgba(255,255,255,0.4);
  margin-top:100vh;
}
@media screen and (max-width:767px){
  /*スマホレイアウト*/

header {
  width:100%;
  height:76vh;
}
nav {
  width:100%;
  height:24vh;
  background:#FFFFFF;
}
nav ul {
  max-width:960px;
  height:30vh;
  margin:0 auto;
  overflow:hidden
}
nav li {
  width:50%;
  height:8vh;
  float:left;
}
nav li a {
  display:block;
  width:100%;
  line-height:8vh;
  text-align:center;
  color:#2AA60B;
  font-size:13px;
  font-weight:bold;
}
nav li:nth-child(odd) a {
  border-right:1px solid #ACACAC;
}
nav li:nth-child( -n + 4) a {
  border-bottom:1px solid #ACACAC;
}
h1 {
  font-family: 'Source Serif Pro', serif;
  font-size:30px;
  color: #310D9A;
  text-align:center;
  padding-top:100px;
}
}
</style>
</head>
<body>
<div id="container">
<header>
<h1>FELICA</h1>
<p id="btn"><a href="#">BUTTON</a></p>
</header>
<nav>
<ul>
<li><a href="#">FACEBOOK</a></li>
<li><a href="#">MENU</a></li>
<li><a href="#">PARTY</a></li>
<li><a href="#">WEDDING</a></li>
<li><a href="#">INFORMATION</a></li>
<li><a href="#">RESERVATION</a></li>
</ul>
</nav>
<div class="box">
</div>
<div class="box">
</div>
</div>
</body>
</html>

SVGを使ったアニメーション

carlphilippebrenner.com

tympanus.net

gardenstudio.com.br


SVGとは?

SVG【 Scalable Vector Graphics 】とは、XMLベースの2Dベクター画像記述言語。2001年9月にW3C勧告として公開された。
ベクター画像は画像をビットマップ形式ではなく、線や面などの図形の集合体として扱うため、見る環境に応じて最適な表示が可能となる。
SVGではアニメーション機能などもサポートしており、Flashで行えるような簡単なインタラクティブコンテンツの作成が可能となっている。
SVGファイルはAdobe社のIllustratorに代表される画像編集アプリケーションで扱うことができるほか、HTMLとの連携を意識して、Webブラウザでも対応が進められている。
ちなみに、SVGXMLベースで策定された言語のため、テキスト形式のファイルで画像を表現するという珍しい形態を取っている。


developer.mozilla.org

SVGに対応しているブラウザー


blog.codecamp.jp

今回の授業ではSVGを単独で使用するだけでなく、HTMLファイルの中に記述し、css3アニメーションを併用します。
こうする事でブラウザー上で色々な表現方法が可能になります。
※ただしIEOperaは、全てのSVG要素でCSSアニメーションを受け入れないという問題があります。

変化させる方法は主に以下の3つがあります。

CSSプロパティ(transitionやanimation)を使う→簡単だけどIE未対応
setTimeout()を使う→IEも動くけど面倒
JavaScriptライブラリを使う→簡単&IEでも動くけどサイズが膨大
それぞれ、長所・短所があるので、状況に応じて使い分けると良いかと思います(ちなみにjQuerySVGの要素を扱えないので使えません)。


SVGのパスは、以下のようなプロパティを使って、スタイルを指定出来ます。

stroke:線の色
stroke-width:線の太さ
fill:塗りつぶしの色
stroke-dasharray:破線の間隔
stroke-dashoffset:破線の開始位置


今回は破線のプロパティである、stroke-dasharraystroke-dashoffsetを使い、線を引くアニメーションを作成します。


jakearchibald.com



また、今回新たに出てきた「animation-fill-mode」プロパティもしっかり覚えましょう。
none(初期値)

キーフレームで指定されたスタイルは、アニメーションの前後には適用されません。

forwards

アニメーションの実行後にキーフレームの最後の指定が適用されます。

backwards

アニメーションの実行後、即座にキーフレームの最初のスタイル指定を適用します。

both

forwards と backwards の両方が適用されます。アニメーション実行前には backwards が、実行後には forwards があると考えると分かりやすいと思います。





参考サイト
SVGのアニメーションで線を引く方法まとめ(IEへの対応も)|2.IDEA


ics.media



www.webprofessional.jp

グリッドレイアウト

グリッドレイアウトとは

グリッドとは「格子状の」という意味がありますが、画面をいくつかのサイズのブロックで組み合わせ、コンテンツを配置していく画面設計手法のひとつです。元々紙媒体でよく使われたレイアウト方法ですが、Webでもレスポンシブデザインとの親和性が高く、最近よく見かけるレイアウトの1つです。


グリッドデザインを使用しているサイト
firadis.net


www.fujiya-peko.co.jp





画面幅に合わせてカラムが落ちていくグリッドデザイン
和洋女子大学


PCレイアウト 
f:id:yachin29:20170105133643p:plain




使用素材

http://yachin29.webcrow.jp/okazu.zip

<!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="outer">
<div id="container">
<div class="col">
<header>
<h1>楽しいおかず</h1>
<nav>
<ul>
<li id="concept"><a href="#">CONCEPT</a></li>
<li id="menu"><a href="#">MENU</a></li>
<li id="access"><a href="#">ACCESS</a></li>
<li id="news"><a href="#">NEWS</a></li>
</ul>
</nav>
</header>
<ul>
<li><img src="img/ph01_l.jpg" alt=""></li>
<li><img src="img/ph02_mt.jpg" alt=""></li>
<li><img src="img/ph03_s.jpg" alt=""></li>
<li><img src="img/ph04_s.jpg" alt=""></li>
<li><img src="img/ph05_my.jpg" alt=""></li>
<li><img src="img/ph06_s.jpg" alt=""></li>
<li><img src="img/ph07_s.jpg" alt=""></li>
</ul>
</div>

<div class="col">
<ul>
<li><img src="img/ph08_my.jpg" alt=""></li>
<li><img src="img/ph09_s.jpg" alt=""></li>
<li><img src="img/ph10_s.jpg" alt=""></li>
<li><img src="img/ph11_l.jpg" alt=""></li>
<li><img src="img/ph12_s.jpg" alt=""></li>
<li class="right"><img src="img/ph13_mt.jpg" alt=""></li>
<li><img src="img/ph14_s.jpg" alt=""></li>
<li><img src="img/ph15_l.jpg" alt=""></li>
<li><img src="img/ph16_s.jpg" alt=""></li>
<li><img src="img/ph17_s.jpg" alt=""></li>
<li><img src="img/ph18_my.jpg" alt=""></li>
</ul>
</div>

<div class="col three">
<ul>
<li><img src="img/ph19_l.jpg" alt=""></li>
<li><img src="img/ph20_s.jpg" alt=""></li>
<li class="right"><img src="img/ph21_mt.jpg" alt=""></li>
<li><img src="img/ph22_s.jpg" alt=""></li>
<li><img src="img/ph23_s.jpg" alt=""></li>
<li><img src="img/ph24_s.jpg" alt=""></li>
<li><img src="img/ph25_my.jpg" alt=""></li>
<li><img src="img/ph26_s.jpg" alt=""></li>
<li><img src="img/ph27_s.jpg" alt=""></li>
<li><img src="img/ph28_s.jpg" alt=""></li>
<li><img src="img/ph29_s.jpg" alt=""></li>
<li><img src="img/ph30_l.jpg" alt=""></li>
</ul>
</div>
</div>
<footer>
<p><small>Copyright &copy; 2017 ○○○ All Rights Reserved.</small></p>
</footer>
</div>
</body>
</html>


スタイルシート

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

html, body, h1, ul, li, p {
  margin: 0;
  padding: 0;
  line-height: 1.0;
}
ul {
  list-style: none;
}
a {
	text-decoration: none;
}
img {
  border: none;
  vertical-align: bottom;
}


/*PCレイアウト*/
#container {
  width:960px;
  margin:0 auto;
  overflow:hidden;
}
.col {
  width:320px;
  float:left;
}
ul {
  overflow:hidden;
}
h1 {
  width:300px;
  height:300px;
  background:url(img/logo01.png) no-repeat;
  margin:10px;
  text-indent:100%;
  white-space:nowrap;
  overflow:hidden;
}
nav li {
  width:140px;
  height:140px;
  float:left;
  margin:10px;
}
nav li a {
  display:block;
  width:100%;
  height:140px;
  text-indent:100%;
  white-space:nowrap;
  overflow:hidden;
  background:url(img/nav01_01.png) no-repeat; 
}
nav li#menu a {
  background:url(img/nav02_01.png) no-repeat; 
}
nav li#access a {
  background:url(img/nav03_01.png) no-repeat; 
}
nav li#news a {
  background:url(img/nav04_01.png) no-repeat; 
}
nav li a:hover {
  opacity:0.7;
}
.col li {
  float:left;
  margin:10px;
}
.col li.right {
  float:right;
}
footer {
  width:100%;
  height:100px;
  background:#281605;
}
footer p {
  color:#FFFFFF;
  text-align:center;
  line-height:100px;
}
.sp-on {
  display:none;/*PC時は非表示*/
}

/*タブレットレイアウト*/
@media screen and (max-width:959px){
#container {
  width:640px;
}
.three {
  width:640px;
}
.sp-on {
  display:block;/*PC時は非表示*/
}

#outer {
  width:640px;
  margin:0 auto;
  position: relative;
}
footer {
  width:300px;
  height:300px;
  background:#281605;
  position:absolute;
  bottom:10px;
  right:10px;
}
footer p {
  color:#FFFFFF;
  text-align:center;
  line-height:300px;
}
}

/*SPレイアウト*/
@media screen and (max-width:639px){
  #container {
  width:320px;
  overflow: visible;
}
.col {
  width:320px;
  float:none;
}
#outer {
  width:100%;
  margin:0 auto;
  position: static;
}
footer {
  width:100%;
  height:100px;
  background:#281605;
  position: static;
  bottom:0;
  right:0;
}
}