adc onair 第5回 『レスポンシブ web デザインを学ぼう!実装編』

28
第5回 レスポンシブ Web デザインを 学ぼう!実装編

Upload: naoki-matsuda

Post on 28-Jun-2015

13.940 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

第5回 レスポンシブ Web デザインを学ぼう!実装編

Page 2: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

レスポンシブ・ウェブデザインおさらい

Page 3: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

リキッド

• ブラウザの幅に応じて要素の幅のみが可変

• ベースレイアウトは同じ。デバイス毎に個別のレイアウトにはならない

• デバイスの幅に応じて、要素の幅だけでなく、色、背景なども可変

• レイアウトもデバイス毎に適したものに可変

• コンテンツ量も可変

< レスポンシブ

Page 4: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

レスポンシブ・ウェブデザイン実装の基本• HTML+CSSはワンソース• 基本、リキッドレイアウト• 「viewport」を指定する• ブラウザ幅のブレイクポイント

• CSS3「Media Queries」で実装する• CSSによるレイアウト

Page 5: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

viewport

Page 6: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

viewport を指定しない場合

980pxPCサイトを、スマホでそのまま見た場合がこれ。

Page 7: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

•メタ要素 <meta name="viewport" ...>•モバイル端末ブラウザの表示幅を指定•ピンチによる、拡大縮小の可否の指定•拡大縮小の最大・最少倍率の指定

viewport

Page 8: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

640px

<meta name="viewport" content="width=640">

ちなみに、Appleのサイトだと、

<meta name="viewport" content="width=1024">

Page 9: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

320px

<meta name="viewport" content="device-width">

480px

端末毎に設定されている横幅。各端末によって違います。

Page 10: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

breakpoint

768px480px

320 ~ 480px 480 ~ 768px 768 ~ 1980px ~

Page 11: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

Orientation

portrait

landscape

端末の向きを変えて使用できる。「Screen Orientation」

向きでブラウザの横幅が変わる。

480px

320px

Page 12: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

iOSiOS

AndroidAndroidAndroidAndroidAndroidAndroidAndroid

iPhone4 / iPhone4S 640 × 960 2 320 × 480

iPhone3G / 3GS 320 × 480 1 320 × 480

HT-03A 320 × 480 1 320 × 480

Xperia / Xperia arc 480 × 854 1.5 320 × 570

HTC Desire HD 480 × 800 1.5 320 × 533

Nexus One 480 × 800 1.5 320 × 533

Galaxy S 480 × 800 1.5 320 × 533

IS03 640 × 960 2 320 × 480

Galaxy Tab 600 × 1024 1.5 400 × 682

機種名 ディスプレイサイズ devicePixelRatio ブラウザのサイズ

主要スマートフォンの解像度

Page 13: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

device-width

Desktop,iPhone、Android、縦向き、横向き。

それぞれの端末や使い方で、ブラウザの横幅はバラバラ。

Page 14: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

breakpoint

640px

とかでも可。何をモバイルとみなすか、で任意の判断

Page 15: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

Media QueriesW3C Recommendation 19 June 2012

@media screen and (min-width: 768px) {...}

<link media="screen and (min-width: 768px)" href="xxxx.css">

@import url("xxxx.css") only screen and (min-width: 768px);

Page 16: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

@media

@media screen and (min-width: 481px) {  body {...}}

@media screen and (min-width: 768px) {  body {...}}

ひとつのCSSファイル内で振り分け

Page 17: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

link

<link href="phone.css">

<link media="screen and (min-width: 481px)" href="tablet.css">

<link media="screen and (min-width: 768px)" href="desktop.css">

複数CSSファイルをlink要素で読み込む

Page 18: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

@import

@import url("phone.css");

@import url("tablet.css") only screen and (min-width: 481px);

@import url("desktop.css") only screen and (min-width: 768px);

複数CSSファイルをimportで読み込む

Page 19: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

@media がおすすめ。

複数CSSファイルに分けると、デバイスごとのスタイルを管理しやすくなるが...

単一のCSSファイルにした方が、HTTPリクエスト数を節約でき、スマートフォン3G回線環境にも優しい。

Page 20: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

Media QueriesW3C Recommendation 19 June 2012

color min-color: 4

color-index min-color-index: 1

monochrome min-monochrome: 1

resolution min-resolution: 300dpi

scan progressive | interlace

grid grid:0

width min-width: 400px

height min-width: 400px

device-width device-width: 800px

device-height device-height: 600px

orientation portrait | landscape

aspect-ratio aspect-ratio:2/2

http://www.w3.org/TR/2012/REC-css3-mediaqueries-20120619/

Page 21: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

CSS - float & display

#main#sub1

#sub2

#main

#sub1

#sub2

#main

#sub2

768px480px

float: none; float: left;display: none; display: block; display: block;

#sub1 #sub1 #sub1

Page 22: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

CSS レイアウトに使えるプロパティ

display:box;flexbox;table-cell;inline-block;

box-flex: 1;

box-ordinal-group: 1;

box-sizing: border-box;

ボックスを横並べ ボックスの幅を簡単リキッドに

ボックスの表示順を自在に

ボックスの幅に、余白も含める

Page 23: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

CSS Framework• CSSの枠組み、基礎設計• CSSの初期化と、共通スタイルの定義•ブラウザ依存なスタイルを吸収•グリッドシステム

毎回イチからCSSを作るのは大変

基礎設計を定義したフレームワークが便利

Page 24: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

グリッドシステム

均等なカラムとガター(隙間)から成り立つレイアウトのガイドライン

Page 25: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

グリッドシステム

レイアウトデザイン品質の維持、コンテンツの配置や設計秩序を与えるもの

サイト設計がぶれない

グリッドはあくまでガイドライン。デザインの個性を奪うものではない。

デザインに整合性を与えるもの

Page 26: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

img要素に、width・height属性を指定すると比率がおかしくなる

img { max-width: 100%; height: auto;}

Page 27: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

ChromeSafari

IE7

IE7でイメージが汚く縮小される

imgSizer.jsを使う

http://unstoppablerobotninja.com/entry/fluid-images/

Page 28: ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』

.sprite { text-indent: 100%; white-space: nowrap; overflow: hidden;}

.sprite { text-indent: -9999px;}

CSS Sprite でのテキスト飛ばしは、こう書くのが主流(らしい)

実際、9999px分のエリアが描画されてしまうので、負荷が高めになる。

描画させるエリアを最小限に。