css3 / javascriptで作るスマートフォンuiと落とし穴

43
株式会社まぼろし フロントエンドエンジニア 西畑 一馬 CSS3 / JavaScript で作る スマートフォンUIと落とし穴 DeNA Creative Seminar vol.1

Upload: -

Post on 15-Jan-2015

9.595 views

Category:

Documents


1 download

DESCRIPTION

DeNA Creative Seminar vol.1でお話しした内容のスライドです。

TRANSCRIPT

Page 1: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

株式会社まぼろしフロントエンドエンジニア

西畑 一馬

CSS3 / JavaScript で作るスマートフォンUIと落とし穴

DeNA Creative Seminar vol.1

Page 2: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

西畑 一馬 ・雑誌や書籍の執筆 ・Webクリエイター向けの講座やトレーニング

Page 3: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

http://blog.webcreativepark.net/

Page 4: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 5: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 6: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

HTML / CSSマークアップ

HTML5 / CSS3スマートフォンサイト作成

JavaScript / Ajaxシステム開発

Movable Type / WordPressサイト構築

Page 7: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

UI ?

Page 8: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Appli or Web ?

Page 9: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

1. スワイプギャラリー2. 固定配置3. オーバーレイ

Page 10: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

1. スワイプギャラリー

Page 11: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 12: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

MouseDown ≒ TouchStartMouseMove ≒ TouchMoveMouseUp ≒ TouchEnd

Page 13: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 14: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

-webkit-transform: translate3d(100px,0,0);

GPUで高速に動作

Page 15: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

これで完璧?

Page 16: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Andoridの落とし穴

3D系のtransformにバグ多い

Page 17: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Andoridの落とし穴

GPUに切り替わらない端末も多い

Page 18: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Andoridの落とし穴

一部の端末ではtouchmoveイベントをロスト

Page 19: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

$("ul").on("touchstart",function(e){!if(/Android/.test(navigator.userAgent)){!!e.preventDefault();!}}):

touchStart 時に縦スクロールを止める

Page 20: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Androidでは次の3種類の実装が主流

Page 21: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

e.preventdefault()型

Page 22: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

touchmove無視型

Page 23: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

フリック型

レコチョク

Page 24: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Androidは非対応

ビックカメラ

Page 25: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

メリット・デメリットを理解して

最適な実装をチョイスしましょう

Page 26: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

2. 固定配置

Page 27: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

2. 固定配置

Page 28: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

CSS ?

Page 29: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 30: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 31: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 32: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

//set Full Screen without StatusBar

var ua = navigator.userAgent.toLowerCase();$.browser.android = /android/.test(ua);$.browser.iphone = /iphone/.test(ua);var portraitHeight,landscapeHeight;

window.onload = function(){! $("html,body").height("1000px");! if($.browser.iphone){! ! $("body").css("position","relative");! }! setTimeout(function(){! ! scrollTo(1,0);! ! setTimeout(function(){! ! ! var height = window.innerHeight;! ! ! $("html,body").height(height+"px");! ! ! if(Math.abs(window.orientation)==0){! ! ! ! portraitHeight = height;! ! ! }else{! ! ! ! landscapeHeight = height;! ! ! }! ! ! setTimeout(loaded, 200);! ! },100);! }, 200);};

Page 33: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

$(window).bind("orientationchange",function(){! if(Math.abs(window.orientation)==0){! ! if(!portraitHeight)portraitHeight = window.innerHeight;! ! height = portraitHeight;! }else{! ! if(!landscapeHeight)landscapeHeight = window.innerHeight;! ! height = landscapeHeight;! }! $("html,body").height(height+"px");! setTimeout(function(){! ! scrollTo(1,0);! }, 200);});

Page 34: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

3.オーバーレイ

Page 35: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 36: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

レイヤー下の要素にフォーカスが当たる

Andoridの落とし穴

Page 37: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 38: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
Page 39: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

$("a").not(".modalInner a")!.css("-webkit-tap-highlight-color",!!!!!!!!!!!!!! ! ! ! ! "rgba(0,0,0,0)");

Page 40: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

レイヤー下のテキスト位置でハイライトカラーや

UI要素などの動作がおかしい

Andoridの落とし穴

Page 41: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

スマートフォンのUI実装ではAndroidのバグ対応がほとんど

まとめ

Page 42: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

株式会社まぼろしではAndroidと戦う

フロントエンドエンジニアを募集中です

Page 43: CSS3 / JavaScriptで作るスマートフォンUIと落とし穴

Thank you!!