Responsive Web Design - CSS...

Preview:

Citation preview

Responsive Web Design

2013. 05. 25 こもりまさあき

CSS Nite LP Disk 27「スマートフォン対応サイト制作(3)」

THEPRACTICE

OF

レスポンシブWebデザイン 実践編

自己紹介

1972年生まれのフリーランス。90年代前半から都内のDTP系デザイン会社にてアルバイトをはじめ、大学卒業後そのまま正社員に。入出力業務、デザイン業務、ネットワーク関連業務に並行して従事後、2001年会社を退職しフリーランスの道へ。業務内容や立ち位置が異なるので、職域的な肩書きはなし

近著に『基礎から覚える、深く理解できる。 Webデザインの新しい教科書』『レスポンシブ・ウェブデザイン標準ガイド』など

Twitter: @cipher / @proteanbmInstagram: @cipher

こもりまさあき

今日お話しすること

•レスポンシブWebデザインあるある

•いまどきのレスポンシブ、その実装方法

レスポンシブあるある

The Problems of Responsive Web Design

The Problems

•スマートデバイスの種類が多くて困っている

•表示・非表示を変えたいコンテンツがある

•PCとスマートフォンでコンテンツの表示順を変えたい

•複数サイズの画像を切り替える方法がわからない

•ラクをしたい

レスポンシブWebデザインの悩みを解決しましょう

その前に。ある海外のサイトで実際に使用されている技術

Requirejs

LESS

BowerNode.js

PhantomJS

Web Fonts

Grunt

Responsive Images

Style Guide

JShint

localStorage

Jasmine

Curljs

レスポンシブな実装って、Media Queriesだけじゃない

技術の組み合わせがポイント

いまどきのレスポンシブ、その実装方法

The Practice of Responsive Web Design

スマートデバイスの種類が多くて困っている

ブレイクポイント、増やせば増やすほど複雑化

ブレイクポイントを減らせるデザインを考える

ちなみに、いまどきは「px」ではなく「em」で切り替え

320px = 20em480px = 30em768px = 48em960px = 60em

johannaruiz/propotional-mqshttps://github.com/johannaruiz/propotional-mqs

表示・非表示を変えたいコンテンツがある

demo

“サイトにアクセスするユーザーのことを考えるとき、端末のことだけでなく、ユーザーが何を期待しているかを

考慮することが大切です。

タブレット端末ユーザーにはフルサイズのウェブを表示しましょうhttp://googlewebmastercentral-ja.blogspot.jp/2012/11/giving-tablet-users-full-sized-web.html

環境を想定して、柔軟にコンテンツをロードする

WordPressなら「wp_is_mobile()」で

<?php if ( !wp_is_mobile() ) :?><div class="sidebar-ad"><img src="<?php echo get_bloginfo( stylesheet_directory ) ?>/images/banner-sideA.png"></div>

<?php endif; ?>※デスクトップブラウザには、バナーコンテンツを表示する

Ajaxを使って、特定条件のみでコンテンツをロードする

コンテンツのロード時間も大事な要素

PCとスマートフォンでコンテンツの表示順を変えたい

Content Choreography

Content Choreograpyhttp://trentwalton.com/2011/07/14/content-choreography/

Choreography: バレエやダンスの振り付け

設計時にコンテンツのブロックの振る舞いを決める

demo

Title

Navigation

Paging Navigation

Footer

Aside Contents

Main Contents 1

Main Contents 2

1

2

3

4

5

6

7

Title

Navigation

Paging Navigation

Main Contents 1

Main Contents 2

1

2

3

4

5

Title

Navigation

Paging Navigation

Main Contents 1

Main Contents 2

1

2

3

4

5

情報ブロックの表示順をコントロールするなら

CSS3の「Flexible Box Layout Module」で

@media screen and (max-width: 48em) { #container { display:box; display:-moz-box; display:-webkit-box; box-orient:vertical; -moz-box-orient:vertical; -webkit-box-orient:vertical; } #container .main, #container header, #container aside, #container footer, #container nav, #container .example_ad { box-ordinal-group: 1; -moz-box-ordinal-group: 1; -webkit-box-ordinal-group: 1; }

#container .example_ad { box-ordinal-group: 4; -moz-box-ordinal-group: 4; -webkit-box-ordinal-group: 4; } #container nav { box-ordinal-group: 2; -moz-box-ordinal-group: 2; -webkit-box-ordinal-group: 2; } #container footer { box-ordinal-group: 3; -moz-box-ordinal-group: 3; -webkit-box-ordinal-group: 3; }}

Content Choreography Mixins In LESShttp://www.alwaystwisted.com/post.php?s=2012-05-17-content-choreography-mixins-in-less

Content Choreography Mixinhttp://blog.woop.ie/post/23227066135/content-choreography-mixin

複数サイズの画像を切り替える方法がわからない

demo

W3Cでも、画像配信のことには議論が進んでいる

picture要素、srcset属性

似たようなカタチで先行実装するPicturefillを使ってみる

<div data-picture data-alt="Alt Text"> <div data-src="small.jpg"></div><div data-src="medium.jpg" data-media="(min-width: 400px)"></div><div data-src="large.jpg" data-media="(min-width: 800px)"></div><div data-src="extralarge.jpg" data-media="(min-width: 1000px)"></div>

<!-- Fallback content for non-JS browsers. --><noscript><img src="external/imgs/small.jpg" alt="Alt Text">

</noscript></div>

ラクをしたい

demo

Frameworks や Static Site Generators を有効活用

Deciding in The Browser

やってみないとわからない。だから、動くものを先に

デザインカンプは、むしろ作りながらでも

casperjs screenshot.js http://localhost/

Windows環境の方に朗報

プロジェクトに合わせたワークフローを作るべし

demo

本日のまとめ

•できないのではなく、実装方法はいくらでもある

•使える技術を知って、組み合わせながらどんどん使う

•プロジェクトにあったワークフローを作るとカンタン

本日はありがとうございました

Recommended