UI 設計におけるスマートフォン対応のまとめ

【KLab× ミクシィ・リクルートメント】 ∼ HTML5 によるソーシャルゲームの新世界@福岡∼
スマートフォンにおけるバグおよび問題まとめ


・共通                 ・Android                   ・iOS
 - イベントバブリング対応      - CSS アニメーションが遅い           - position:fixed のバグ
 - 端末画面サイズへの対応      - text-shadow バグ
 - Flash の問題        - CSS3 アニメーション+box-shadow 問題
 - jQuery アニメーション   - scroll ができない
  のメモリリーク           - z-index が効かなくなる
                    - 下層レイヤーが反応する
                    - フォントが無い
                    - font-weight:bold が使えない
                    - フォーカスがずれる件
                    - translate3d によるバグ
                    - touchend イベントが発生しない
                    - select や input[type=text] フォーカス時の挙動
                    - mask-image+アニメーション問題
                    - ...
                    - 端末依存のバグ
スマートフォンにおけるバグおよび問題まとめ




      ソースコードを一元管理するには
    Android の設計を先に考える必要がある
対応方法を簡単に共有

・position:fixed への対応
  現象

 スクロールするとついてくる。

                        対策

                      スクロールしない様に、
                      コンテンツの高さを 100% に抑える様に
                      CSS でチューニング。
                      もしくは、JS でスクロールをハンドリング。


                        環境

                      iOS5 以下 , Android2.2 以下
対応方法を簡単に共有

・z-index が効かなくなる。
   現象

 position:absolute の要素が
 z-index を無視して上にくる。
                            対策

                          オーバーレイ表示している HTML 要素に対して、
                          -webkit-transform:translate3d(0,0,0)
                          を指定する。



                            環境

                          Android 4.*
対応方法を簡単に共有

・端末画面サイズへの対応
  現象

 画面サイズが機種ごとに違う

                         対策

                 zoom プロパティで画面サイズ / 基本サイズで拡大。
                 更に高さを適応する。
                 var ratio = jQuery(window).width()/640;
                 jQuery( html ).css({
                       zoom : ratio,
                       height :window.innerHeight+ px
                 });


                         環境

                 Android, iPhone5
対応方法を簡単に共有

・下層レイヤーが反応する
  現象                          対策

 オーバーレイ表示等、上に要素を重ねると    オーバーレイした際に下層レイヤーの
 下にクリッカブルな要素があると反応する。   クリッカブル要素に visiblity:hidden に設定。
                        $('a,select,input').filter(function(i){
                          // 指定した親要素内は除外
                          if($(this).parents(ParrentNodeDom).length!=0) return false;
                          return true;
                        }).css({
                          'display': none ,
                          'visibility': hidden ,
                          '-webkit-tap-highlight-color': rgba(0,0,0,0) ,
                          '-webkit-touch-callout': none
                        }).bind('touchstart.Canceler',function(e){
                          e.preventDefault();
                        });

                              環境

                        Android 2.3
対応方法を簡単に共有

・スクロールができない
   現象                      対策

 overflow:auto が効かないので、   flickable や flicksimple などを使い
 スクロールができません。            フリック要素を形成する必要がある。
                         中にイメージがある場合には、
                         イメージをプリロードしてから実装する必要がある。
                         オーバーレイの中では、非表示だと高さがとれないので、
                         表示されてから再設定する。


                           環境

                         Android2.3
対応方法を簡単に共有

・イベント感染問題
  現象                             対策

 オーバーレイ表示時等にタップイベントが   オーバレイ非表示時にはオーバーレイのリンク要素に
 上層レイヤーにまで渡ってしまう。      e.preventDefault(); e.stopPropagation();
                       を設定。表示する関数のコールバックで解除する。

                       if(arguments[0]){
                           $('*',arguments[1]).bind('click.pre',function(e){
                             event.stopPropagation();
                             event.preventDefault();
                             if(window.event) window.event.cancelBubble = true;
                           }).bind('touchend.pre',function(e){
                             event.stopPropagation();
                             event.preventDefault();
                             if(window.event) window.event.cancelBubble = true;
                           });
                       }else{
                           $('*',arguments[1]).unbind('click.pre').unbind('touchend.pre');
                       }
感想



・Android への対応がかなり工数を取られる


・スマートフォン対応は Android から対応策を検討すべき

More Related Content

PDF
スマートフォンブラウザ不具合特集
PDF
スマートフォン対応、気をつけたいトラブル
PDF
スマートフォンサイト制作 よくあるトラブルと 解決方法・回避方法
PDF
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
PDF
スマートフォン対応、気をつけたいトラブル JavaScript編
ODP
はじめてのAndroid開発
PDF
JCROM で Android の「真の力」を解き放て
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
スマートフォンブラウザ不具合特集
スマートフォン対応、気をつけたいトラブル
スマートフォンサイト制作 よくあるトラブルと 解決方法・回避方法
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
スマートフォン対応、気をつけたいトラブル JavaScript編
はじめてのAndroid開発
JCROM で Android の「真の力」を解き放て
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」

What's hot (9)

PDF
私の欲しい Android 端末
PDF
GUI アプリケーションにおける MVC
PDF
Embedded Master2
PDF
Prism + ReactiveProperty入門
PDF
iOSやAndroidアプリ開発のGoodPractice
PPTX
かけ算で使いこなす Xamarin
PPTX
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
PPTX
Windows phone SDK 8.0でのアプリ開発
PDF
iOS 8 Widget ~ 導入から Tips まで
私の欲しい Android 端末
GUI アプリケーションにおける MVC
Embedded Master2
Prism + ReactiveProperty入門
iOSやAndroidアプリ開発のGoodPractice
かけ算で使いこなす Xamarin
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Windows phone SDK 8.0でのアプリ開発
iOS 8 Widget ~ 導入から Tips まで
Ad

Viewers also liked (20)

PDF
CSSコーディングを効率よくするおすすめプラグイン
PDF
マークアップとUX
PDF
WordPress基礎講座1 CMSの概要
PDF
jQuery Mobile 最新情報 & Tips
PPTX
AWS基礎
PDF
レスポンシブWeb「デザイン」
PDF
Pythonを取り巻く開発環境 #pyconjp
PPTX
Awsをちゃんと使ってみた
PDF
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
PDF
マルチデバイス時代におけるWebサイトのUIについて
PDF
Javascriptを書きたくないヒ トのためのPythonScript
PDF
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
PDF
使いやすいWordPressのためのCSSのつくりかた
PDF
CSS の歩き方
PDF
なぜ科学計算にはPythonか?
PDF
Pythonの開発環境を調べてみた
PDF
NumPyが物足りない人へのCython入門
PDF
ソフトシンセを作りながら学ぶPythonプログラミング
PDF
WordPressと離島での図書館作り〜コントリビュートすることで働き方を選択する未来へ
PPTX
モテる JavaScript
CSSコーディングを効率よくするおすすめプラグイン
マークアップとUX
WordPress基礎講座1 CMSの概要
jQuery Mobile 最新情報 & Tips
AWS基礎
レスポンシブWeb「デザイン」
Pythonを取り巻く開発環境 #pyconjp
Awsをちゃんと使ってみた
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
マルチデバイス時代におけるWebサイトのUIについて
Javascriptを書きたくないヒ トのためのPythonScript
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
使いやすいWordPressのためのCSSのつくりかた
CSS の歩き方
なぜ科学計算にはPythonか?
Pythonの開発環境を調べてみた
NumPyが物足りない人へのCython入門
ソフトシンセを作りながら学ぶPythonプログラミング
WordPressと離島での図書館作り〜コントリビュートすることで働き方を選択する未来へ
モテる JavaScript
Ad

Similar to UI設計におけるスマートフォン対応のまとめ (20)

PPTX
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
PPTX
Android lecture for iOS developers
PDF
レスポンシブWebデザイン【発展編】
PPT
20130924 Picomon CRH勉強会
PDF
Jqm20120804 publish
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
PPTX
勉強会資料Out ofmemory
PDF
Smartphone ui:ux」 de na creative seminar vol.1 レポート
PDF
goog.ui.Component のはぐれかた
PDF
Android Lecture #01 @PRO&BSC Inc.
PDF
OSC京都2011
PDF
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
PDF
Try_to_writecode_practicaltest #atest_hack
PDF
Android Lecture #04 @PRO&BSC Inc.
PPT
20111031 MobileWeb at TDC
PDF
0406web creators night_DeNA
PPTX
Flight入門
PDF
Pf部2012年1月勉強会.androidsola
PDF
Jqm20120210
PDF
Tokyo GTUG Bootcamp2010
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Android lecture for iOS developers
レスポンシブWebデザイン【発展編】
20130924 Picomon CRH勉強会
Jqm20120804 publish
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
勉強会資料Out ofmemory
Smartphone ui:ux」 de na creative seminar vol.1 レポート
goog.ui.Component のはぐれかた
Android Lecture #01 @PRO&BSC Inc.
OSC京都2011
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Try_to_writecode_practicaltest #atest_hack
Android Lecture #04 @PRO&BSC Inc.
20111031 MobileWeb at TDC
0406web creators night_DeNA
Flight入門
Pf部2012年1月勉強会.androidsola
Jqm20120210
Tokyo GTUG Bootcamp2010

UI設計におけるスマートフォン対応のまとめ

  • 2. スマートフォンにおけるバグおよび問題まとめ ・共通 ・Android ・iOS - イベントバブリング対応 - CSS アニメーションが遅い - position:fixed のバグ - 端末画面サイズへの対応 - text-shadow バグ - Flash の問題 - CSS3 アニメーション+box-shadow 問題 - jQuery アニメーション - scroll ができない のメモリリーク - z-index が効かなくなる - 下層レイヤーが反応する - フォントが無い - font-weight:bold が使えない - フォーカスがずれる件 - translate3d によるバグ - touchend イベントが発生しない - select や input[type=text] フォーカス時の挙動 - mask-image+アニメーション問題 - ... - 端末依存のバグ
  • 3. スマートフォンにおけるバグおよび問題まとめ ソースコードを一元管理するには Android の設計を先に考える必要がある
  • 4. 対応方法を簡単に共有 ・position:fixed への対応 現象 スクロールするとついてくる。 対策 スクロールしない様に、 コンテンツの高さを 100% に抑える様に CSS でチューニング。 もしくは、JS でスクロールをハンドリング。 環境 iOS5 以下 , Android2.2 以下
  • 5. 対応方法を簡単に共有 ・z-index が効かなくなる。 現象 position:absolute の要素が z-index を無視して上にくる。 対策 オーバーレイ表示している HTML 要素に対して、 -webkit-transform:translate3d(0,0,0) を指定する。 環境 Android 4.*
  • 6. 対応方法を簡単に共有 ・端末画面サイズへの対応 現象 画面サイズが機種ごとに違う 対策 zoom プロパティで画面サイズ / 基本サイズで拡大。 更に高さを適応する。 var ratio = jQuery(window).width()/640; jQuery( html ).css({ zoom : ratio, height :window.innerHeight+ px }); 環境 Android, iPhone5
  • 7. 対応方法を簡単に共有 ・下層レイヤーが反応する 現象 対策 オーバーレイ表示等、上に要素を重ねると オーバーレイした際に下層レイヤーの 下にクリッカブルな要素があると反応する。 クリッカブル要素に visiblity:hidden に設定。 $('a,select,input').filter(function(i){ // 指定した親要素内は除外 if($(this).parents(ParrentNodeDom).length!=0) return false; return true; }).css({ 'display': none , 'visibility': hidden , '-webkit-tap-highlight-color': rgba(0,0,0,0) , '-webkit-touch-callout': none }).bind('touchstart.Canceler',function(e){ e.preventDefault(); }); 環境 Android 2.3
  • 8. 対応方法を簡単に共有 ・スクロールができない 現象 対策 overflow:auto が効かないので、 flickable や flicksimple などを使い スクロールができません。 フリック要素を形成する必要がある。 中にイメージがある場合には、 イメージをプリロードしてから実装する必要がある。 オーバーレイの中では、非表示だと高さがとれないので、 表示されてから再設定する。 環境 Android2.3
  • 9. 対応方法を簡単に共有 ・イベント感染問題 現象 対策 オーバーレイ表示時等にタップイベントが オーバレイ非表示時にはオーバーレイのリンク要素に 上層レイヤーにまで渡ってしまう。 e.preventDefault(); e.stopPropagation(); を設定。表示する関数のコールバックで解除する。 if(arguments[0]){ $('*',arguments[1]).bind('click.pre',function(e){ event.stopPropagation(); event.preventDefault(); if(window.event) window.event.cancelBubble = true; }).bind('touchend.pre',function(e){ event.stopPropagation(); event.preventDefault(); if(window.event) window.event.cancelBubble = true; }); }else{ $('*',arguments[1]).unbind('click.pre').unbind('touchend.pre'); }