実技 スマートフォンサイト作成実習①

-本日のアジェンダ-

1限目
実技 スマートフォンサイト作成実習①
スマホラフについて

2限目
実技 スマートフォンサイト作成実習①
Retinaディスプレイについて

3限目
実技 スマートフォンサイト作成実習①
課題制作

4限目
実技 スマートフォンサイト作成実習①
課題制作

5限目
実技 スマートフォンサイト作成実習①
課題制作

本日のテーマ

スマホ対応しましょう

オリジナルサイトをレスポンシブにする手順

①viewportをheadに記述

<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">

②可能な限り幅を%かvwで指定しましょう。
例)サイト幅 width:960px; → max-width:960px;
 横並びのmainとasideの幅を70%と25%に指定

③CSS内にメディアクエリを記述
下記の場合は、ブレイクポイントを800pxとしました。
画面幅が800px以下の時、headerの中の子要素(h1とul)が縦並びになります。

#header-wrap header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 90%;
    max-width: 960px;
    margin: 0 auto;
}
    @media (max-width: 800px) {
        #header-wrap header {
            flex-direction: column;
            }
}

新たなプロパティを記述 → スタイルが追加されます。
同じプロパティを記述 →スタイルが上書きされます。
プロパティを記述しない →スタイルが継承されます。

レスポンシブWebデザイン見本


マルチデバイス問題

【問題その1】画面幅1200px未満の時スクロールバーが出ない、かつ幅80%となるようにしてください。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
<title>クイズその1</title>
<style type="text/css">
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
main {
    background: #cccccc;
    width: 1200px;
    margin: 0 auto;
    padding: 15px;
}
</style>
</head>
<body>
<main> このエリアはメインです。<br>
    幅1200pxに指定しています。<br>
    このままだと画面幅が1200px(厳密には1200px+スクロールバー20px)未満の時
    スクロールバーが出てしまいます。<br><br>
    画面幅1200px未満の時スクロールバーが出ない、かつ幅80%となるようにしてください。<br>
    だだし、メディアクエリを使わずに指定してください。<br>
    ヒント:max-
</main>
</body>
</html>
▼答えのcss

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
main {
    background: #cccccc;
	max-width: 1200px;
	width: 80%;
    margin: 0 auto;
    padding: 15px;
}

【問題その2】画面幅960px以下の時、3列×2になるようにしてください。
さらに560px以下の時、横いっぱいの縦並びになるようにしてください。
@mediaを2つ書きます。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
<title>クイズその2</title>
<style type="text/css">
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
p {
    width: 90%;
    max-width: 960px;
    margin: 0 auto;
    padding: 30px 0;
}
ul {
    overflow: hidden;
    list-style: none;
    width: 960px;
    margin: 0 auto;
}
ul li {
    float: left;
    width: 14.666%;
    margin: 0 1% 2%;
    padding: 10px 0;
    background: #cccccc;
    text-align: center;
    border-radius: 10px;
}
</style>
</head>
<body>
<p>下記のリストはfloatで横並びになっています。<br>
    画面幅960px以下の時、3列×2になるようにしてください。<br>
    【ヒント1】max-指定。liの幅の再指定。<br>
    さらに560px以下の時、横いっぱいの縦並びになるようにしてください。<br>
    【ヒント2】liの幅の再指定。左右の余白を0に。 </p>
<ul>
    <li>ナビゲーション1</li>
    <li>ナビゲーション2</li>
    <li>ナビゲーション3</li>
    <li>ナビゲーション4</li>
    <li>ナビゲーション5</li>
    <li>ナビゲーション6</li>
</ul>
</body>
</html>
▼答えのcss

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
p {
    width: 90%;
    max-width: 960px;
    margin: 0 auto;
    padding: 30px 0;
}
ul {
    overflow: hidden;
    list-style: none;
    max-width: 960px;
    margin: 0 auto;
}
ul li {
    float: left;
    width: 14.666%;
    margin: 0 1% 2%;
    padding: 10px 0;
    background: #cccccc;
    text-align: center;
    border-radius: 10px;
}
@media (max-width: 960px) {
ul li {
          width: 31.333%;
            }
}
@media (max-width: 560px) {
	ul li {
          width: 100%;
		margin: 0 0 2%;
            }
}
	}

各デバイスの画面サイズ

端末ポイントRetinaピクセル
iPhone X
iPhone XS
iPhone 11 Pro
375×81231125×2436
iPhone XR
iPhone 11
414×8962828×1792
iPhone 12
iPhone 12 Pro
390×84431170×2532
iPhone XS Max
iPhone 11 Pro Max
414×89631242×2688
iPhone 12 Pro Max428×92631284×2778

Photoshopの画像の書き出し(retina)

スマホラフの2倍で画像を書き出しましょう!この時、スマートオブジェクト化していないとボケてしまいます。

※最新機種を考えると3倍としたいところですが、表示スピードなど加味すると現段階では2倍でOKとします。