Movatterモバイル変換


[0]ホーム

URL:


PPTX, PDF7,913 views

jQuery Mobile入門

Embed presentation

Downloaded 168 times
jQuery Mobile入門白石俊平 @Shumpei
自己紹介   株式会社オープンウェブ・テクノロジー代表   シーエー・モバイル株式会社 Web先端技術    フェロー   HTML5とか勉強会主催、html5j.org管理人   Google API Expert (HTML5)   Microsoft Most Valuable Professional 2011 (IE)
この資料について   テキストとして、オライリー刊「jQuery    Mobile」を使用します。   ハンズオンの部分は、オライリーのサイトか    らサンプルをダウンロードして実践してくだ    さい。   とはいえ、書籍が手元になくても、この資料    だけで学べることを目指しました。
jQuery Mobileとは   スマートフォン向けのWebサイト開発フレー    ムワーク   現在のバージョンは1.0.1     1.1が現在リリース候補に
jQuery Mobileの特徴   ネイティブアプリに近い操作感   テーマの切り替えが可能   JavaScriptの知識がなくてもそこそこ使える   jQueryに依存している   マルチプラットフォーム
ネイティブアプリに近い操作感   CSS/JavaScriptを駆使して、「ネイティブア    プリに近い」操作感を実現する     UIコンポーネント・・・フォーム要素やリストな      ど、用意されているコンポーネントがすべてブラ      ウザネイティブのUIに近づけてあり、操作しやす      い     ページ遷移がなめらかなアニメーションで実現さ      れる(画面のリフレッシュが発生しない)   jQuery Mobileのドキュメントがデモになって    いる。
テーマの切り替えが可能   jQuery Mobileは、CSSの切り替えのみで大幅    にUIを変更することが可能。     色合いを変えるだけならば「スウォッチ」の変更     だけで可能
JavaScriptの知識がなくてもそこそこ使える   マークアップに特別な属性(data-*属性)を加    えていくだけで、簡単にスマートフォン対応    サイトを作成できる。
jQueryに依存している   jQueryに強く依存している。   バージョン1.0.1では、jQuery1.6系に対応。   バージョン1.1(現在はまだ正式リリース前)    では、jQuery1.7系に対応。   少し凝ったことをやるなら、jQueryの知識が    あったほうが良い。
マルチプラットフォーム   デスクトップを含め、22のプラットフォーム    に対して同様のユーザ体験を提供できる     Android 2.1-4.0     iOS 3.2-5.0   プログレッシブ・エンハンスメントのアプ    ローチにより、古いブラウザに対しても最低    限の情報提供は行える。
jQuery Mobileを使用したサイトは増加中   DODA、マイナビバイト、マイナビ派遣、    じゃらんnetなど、続々と利用事例は増加中   jQuery Mobileを使った国内スマホサイトまと    め   大手によって採用されていることからも、安    心して使えるフレームワーク。
jQuery Mobileをはじめよう
jQuery Mobileをはじめよう   インストール   はじめてのjQuery Mobileページ   2ページからなるWebサイト
準備作業   XAMPPのインストール   jQuery Mobileのサンプルをダウンロード   サンプルをXAMPP/htdocs内に展開
jQuery Mobileのインストール     JavaScriptとCSSを読み込むだけ     CDNを利用する場合<link rel="stylesheet"href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /><script src="http://code.jquery.com/jquery-1.6.4.min.js"></script><scriptsrc="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>     ファイルをダウンロードし、自分のサイトで      配信することも可能
はじめてのjQuery Mobileページ   ヘッダとフッタを持つjQueryページを作って    みましょう。
はじめてのjQuery Mobileページ     1-1.htmlをコピーして1-1a.htmlとし、body要      素内に以下のコードを記述してください。<section id="page1" data-role="page">  <header data-role="header"><h1>jQuery Mobile</h1></header>  <div class="content" data-role="content">    <p>はじめてのページ!</p>  </div>  <footer data-role="footer"><h1>O'Reilly</h1></footer></section>                                  結果は1-2.htmlと同じになります。
はじめてのjQuery Mobileページ     ポイント       data-role属性を使用して、要素に役割を与えてい          る(page, header, content, footer)         jQuery Mobileはdata属性を多用します<section id="page1" data-role="page">  <header data-role="header"><h1>jQuery Mobile</h1></header>  <div class="content" data-role="content">    <p>はじめてのページ!</p>  </div>  <footer data-role="footer"><h1>O'Reilly</h1></footer></section>
2ページからなるWebサイト   ページ遷移のあるWebサイトを作成してみま    しょう。
2ページからなるWebサイト     1-1a.htmlのbody要素内に、2ページ目を追加      しましょう。<section id="page2" data-role="page">  <header data-role="header"><h1>jQuery Mobile</h1></header>  <div class="content" data-role="content">    <p>2ページ目</p>  </div>  <footer data-role="footer"><h1>O'Reilly</h1></footer></section>     page1に、page2へのリンクを追加しましょう。<p><a href="#page2">2ページ目へGo!</a></p>                                  結果は1-3.htmlと同じになります。
2ページからなるWebサイト   ポイント     1ページ=1ブロック     ページ間のリンクは、スムーズなアニメーション      で実現される     すべてのページが一意なURLを持ち、戻るボタン      で戻ることが出来る。
アプリケーションの構造とナビゲーション
内部ページと外部ページ   jQuery Mobileにおけるページとは、data-    role="page"が付与されたブロック要素。   すべてのページを1枚のHTMLに収めることが    できるが、HTMLが巨大になる   ページを外部のファイルに記述し、必要に応    じてロードすることもできる。     →外部ページ
内部ページの利用   1-1a.htmlをコピーして、2-1a.htmlとしてくだ    さい。(フォルダはchapter-2に置いてくださ    い)   ページを追加して3ページとし、    「1P→2P→3P→1P」と遷移するようにリン    クしてください。     テキストのP.11を参照                     結果は2-1.htmlと同じになります。
外部ページの利用     今作成した2-1a.htmlの3ページ目に、以下のリ      ンクを追加しましょう。<p><a href="external.html">外部ページへGo!</a></p>                             結果は2-2.htmlとほぼ同じになります。
外部ページの利用   ポイント     外部ページはAjaxで自動的にロードされる     ロードされたページは元ページのDOMに組み込    まれる      ID属性の衝突が発生しないように注意!     外部ページの中で読み込まれるのは最初のページ    (data-role="page"が付与されたブロック)のみ。    それ以外の部分は無視される。
ダイアログ   ダイアログの指定方法     ダイアログのページにdata-role="dialog"と指定す      る     リンクにdata-rel="dialog"と指定する
ダイアログ   2-2a.html のページ2をダイアログにしてみま    しょう。
ページ遷移のアニメーション   ページ遷移のアニメーションは変更できる     data-transition・・・アニメーションの種類を指      定     data-direction・・・"reverse"と指定すれば、アニ      メーションが逆方向に
ページ遷移のアニメーション   2-1a.htmlを題材に、様々なアニメーションを    試してみましょう。              data-transitionに指定可能な値      fade        flip          pop      slide       slidedown     slideup
ページの要素
ページの要素   リストビュー   ナビゲーションバー   ヘッダー・フッター   ボタン   チェックボックスとラジオボタン   フリップトグル   選択メニュー   スライダー   レイアウトグリッド
リストビュー   スマホで一般的な一覧UIを簡単に実現できる     読み取り専用の一覧     他のページにジャンプする一覧     リストに区切りを入れる     リストビューを入れ子で指定する     リスト項目の分割     カウントのバブル表示     サムネイルとアイコン
読み取り専用のリストビュー   data-role="listview"を指定する   3-1.htmlを3-1a.htmlにコピーして、ブラウザ    でアクセスしてみましょう。
読み取り専用のリストビュー   ポイント     ul/ol要素にdata-role="listview"を指定する
リストビューの項目から他のペー  ジにジャンプする     3-1a.htmlを修正して、li要素の内容をリンクに      しましょう。<ul data-role="listview">  <li><a href="#">項目</a></li>  …</ul>
リストに区切りを入れる     3-1a.htmlを修正して、リストに区切りを入れ      ましょう。     data-role="divider"を指定したli要素を追加しま      す。<ul data-role="listview">  <li data-role="divider">区切り</li>  <li><a href="#">項目</a></li>  …</ul>
リストビューを入れ子で指定する   リストのli要素内に、更にul/ol要素を記述する    と、入れ子構造の中をインタラクティブに移    動できる
リストビューを入れ子で指定する     3-1a.htmlを修正して、番号付きのリストを、      番号なしのリストの入れ子にしましょう。<ul data-role="listview">  ...  <li>    <h3>番号付きの箇条書き</h3>    <ol data-role="listview">      <li><a href="#">項目</a></li>      <li><a href="#">項目</a></li>      <li><a href="#">項目</a></li>    </ol>  </li></ul>
リスト項目の分割   リストのli要素内に、リンクを2つ以上並べる    と、最後のリンクがボタンに変化する   3-1a.htmlを修正して、li要素に2つ以上のa要素    が含まれるようにしてみましょう。
カウントのバブル表示   リストのli要素内に、ui-li-countというクラス    を持つインライン要素を含めると、バブル表    示される   3-1a.htmlを修正して試してみましょう。     <li>       <a href="#">項目</a>       <span class="ui-li-count">3</span>     </li>
ナビゲーションバー   リンクのグループをタブ、もしくはボタン表    示することができる。
ナビゲーションバー   1-2.htmlをコピーして3-9a.htmlを作成し、編    集します。   以下のコードをheader要素内に記述しましょ    う。       <nav data-role="navbar">       <a href="#">1</a>       <a href="#">二</a>       <a href="#">さん</a>       </nav>   上記のリンクを、順序なしリスト(ul)で囲    み、見た目の違いを確認しましょう。
ヘッダー・フッター   data-roleにheader/footerと指定すれば、ヘッ    ダとフッタを作れます。   ヘッダとフッタは、以下のような表示方法を    行えます。     標準・・・フッタの位置は、コンテンツの高さに      依存する     固定・・・ヘッダ・フッタが常に画面端に固定さ      れる。data-position="fixed"を指定する     フルスクリーン・・・コンテンツがフルスクリー      ン表示され、タップするとヘッダー・フッターが      表示される。ページにdata-fullscreen="true"を指      定する。
ヘッダー・フッター   1-2.htmlをコピーして3-10a.htmlを作成し、編    集します。   固定モードを試しましょう。     ヘッダ・フッタにdata-position="fixed"を指定しま     す。   フルスクリーンモードを試しましょう。     固定モードの状態で、ページに対してdata-     fullscreen="true"を指定します。
フォーム要素   jQuery Mobileでは、様々なフォーム要素を自    動的にモバイル用に最適化してくれる。   フォーム要素のデモ
ボタン   input要素/button要素によるボタンは、ユーザ    が押しやすいサイズのUIへと勝手に変換され    ます。   data-role="button"とすることで、任意の要素    をボタンに見せることができる。   ボタンの幅をコンテンツに合わせるには、    data-inline="true"の指定が必要
ボタン     1-2.htmlをコピーして3-13a.htmlを作成し、編      集します。     以下のコードをコンテンツ領域に記述し、      様々なボタンを試しましょう。<a href="#" data-role="button">リンクベースのボタン</a><input type="submit" value="送信" data-inline="true"><input type="reset" value="リセット" data-inline="true">                                結果は3-13.htmlと同じになります。
ボタンのコントロールグループ   data-role="controlgroup"を付与したブロック    要素で、ボタンをグループ化することができ    る。   data-type="horizontal"を指定すると横向きに    ボタンが並ぶ。
ボタン   1-2.htmlをコピーして3-14a.htmlを作成し、編    集します。   以下のコードをコンテンツ領域に記述し、    様々なボタンを試しましょう。    <div data-role="controlgroup">      <span data-role="button">リンクベースのボタン</span>      <span data-role="button">リンクベースのボタン</span>      <span data-role="button">リンクベースのボタン</span>    </div>
ボタンのコントロールグループ   3-13a.htmlを編集し、
(ボタンの)アイコン   ボタンにdata-icon属性を指定すると、アイコン付    きのボタンにできる。                      data-icon属性で指定できる値           alert     arrow-d   arrow-l   arrow-r   arrow-u           back      check     delete    forward   gear           grid      home      info      minus     plus           refresh   search    star   また、data-iconpos属性でアイコンの表示位置を    変更できる。       bottom/left/right/top/notext(アイコンのみ)
(ボタンの)アイコン   1-2.htmlをコピーして3-15a.htmlを作成し、編    集します。   以下のコードをページ内に記述しましょう。    <button data-icon="gear" data-iconpos="left">      ボタン    </button>   アイコンや表示位置をいろいろ変更してみま    しょう。
カスタムアイコン   カスタムのアイコンを使用するには、data-    icon属性に定義済み以外の値(例えばdata-    icon="smile"を使用する。   →すると、そのボタンには「ui-icon-smile」と    いうクラスが付与される
カスタムアイコン   3-15a.htmlを編集します。   以下のコードをページ内に記述しましょう。    <style>      .ui-icon-smile {        background-image: url(http://bit.ly/smileicon);        background-size: 18px 18px;      }    </style>    <button data-icon="smile" data-iconpos="left">      ボタン    </button>
ヘッダ上のボタン   ヘッダに、ボタン化したリンクを配置するこ    とができる。     a要素を2つまで記述でき、左右に一つずつ配置      される。     ボタンを1つだけ、右側に配置したい場合は、ui-      btn-rightというクラスを使用する
ヘッダ上のボタン   1-3.htmlをコピーしてheaderButtons.htmlを作    成し、編集します。   以下のコードをヘッダに記述し、結果を確認    します。<a href="#"  data-role="button"  data-icon="gear"  data-iconpos="notext"  class="ui-btn-right">設定</a>
戻るボタンの自動挿入   ページにdata-add-back-btn="true"と記述する    と、ヘッダに戻るボタンが自動的に挿入され    ます。   headerButtons.htmlの2ページ目に戻るボタン    を追加しましょう。
チェックボックスとラジオボタン   特に何もしなくても、ユーザが押しやすいUI    になります。   3-16.htmlを表示し、ソースを確認しましょう。
フリップトグル   select要素に、data-role="slider"を指定すると、    オン/オフを切り替えられるスイッチを作成    できます。   3-17.htmlを表示し、ソースを確認しましょう。
フィールドのグループ化   ラベルとフィールドのセットを表すためのブ    ロックを作成できる   data-role要素に"fieldcontain"を指定した    div/fieldset要素でフォーム要素を囲む    <div data-role="fieldcontain">      <label for="username">ユーザ名:</label>      <input type="text">    </div>
選択メニュー   select要素は、data-native-menu="false"を指    定することで、jQuery Mobile独自の選択メ    ニューを利用できる。   3-20.htmlを表示し、ソースを確認しましょう。
スライダー   rangeタイプのinput要素を用いることで、スラ    イダーUIが表示されます。   3-21.htmlを表示し、ソースを確認しましょう。
レイアウトグリッド   グリッドレイアウトを行うためのCSSフレー    ムワークが用意されています。   ui-grid-[a-e]でグリッドのカラム数を指定しま    す。ui-grid-aは2列です。   グリッド内にui-block-[a-e]でセルを配置して    いきます。ui-block-aは、行を折り返す効果を    持ちます。
レイアウトグリッド   1-2.htmlをコピーして3-22a.htmlを作成し、以    下のコードを記述します。    <style>      *[class^='ui-block-'] p{        border: 1px solid gray;      }    </style>    <div class="ui-grid-a">      <div class="ui-block-a"><p>1-1</p></div>      <div class="ui-block-b"><p>1-2</p></div>      <div class="ui-block-a"><p>2-1</p></div>    </div>
テーマの切り替え
テーマとスウォッチ   テーマ・・・インターフェース全般   スウォッチ・・・テーマの色   data-theme属性を用いて、スウォッチを切り    替えられる。     デフォルトテーマではa-eを選択できる     初期状態ではc
テーマとスウォッチ   3-1.html(リストビューのサンプル)をコピー    して4-1a.htmlを作成し、様々なテーマを試し    てみましょう。     data-theme属性にa-eのいずれかを指定します。     ページだけでなく、リストビューなどにも指定で     きます。
スウォッチをカスタマイズする   4-1a.htmlに、以下のスタイルを追加してくだ    さい(jQuery MobileのCSSよりも後に記述し    てください。   リストビューのテーマをaに設定してください。    <style>    .ui-btn-up-a {      background-image:-webkit-linear-gradient(red, #333);    }    </style>
スウォッチをカスタマイズする   スウォッチを作成・編集できる    「ThemeRoller」というWebアプリがある。
スウォッチをカスタマイズする   ThemeRollerを使用して作成したテーマをダウ    ンロードして読み込み、利用してみましょう。                     左上のメニューから                     テーマをダウンロー                       ドできる
スウォッチをカスタマイズする   jQuery Mobile Bootstrapという、Twitter    Bootstrapを意識したテーマが利用可能   こちらもダウンロードして使ってみましょう。
jQuery MobileのAPI
:jqmData()セレクタ   jQuery Mobileはdata-属性を多用するため、    jqmData()という特別なセレクタが用意されて    いる。    // すべてのページを取得する    $(':jqmData(role="page")')    // すべてのリストビューを取得する    $(':jqmData(role="listview")')
UIウィジェットが持つメソッド   各UIウィジェットは、jQuery UIと同様にメ    ソッドを使って操作できるリストビュー         listview()    スライダー    slider()テキスト入力         textinput()   選択メニュー   selectmenu()ボタン            button()   更に、個々のウィジェットに対して以下のよ    うなメソッドを使用できる。     enable/disable/refresh
UIウィジェットが持つメソッド   1-13.htmlをコピーしてformMethods.htmlを作    成し、以下のコードを入力してください。    <script>    $(function() {      var linkButton = $('a:jqmData(role="button")');      var submitButton = $('input[type="submit"]');      var resetButton = $('input[type="reset"]');      linkButton.click(function() {        resetButton.button("disable");      });      submitButton.click(function() {        resetButton.button("refresh");      });    });    </script>
$.mobile.changePage(to, options)   ページ遷移を行う     to・・・URL文字列、もしくはページをラップした      jQueryオブジェクト     options(省略可)(主なもののみ)       changeHash:   URLのハッシュを変更するか(true)       reloadPage: ページを強制的に再読み込みするか(false)       showLoadMsg: ローディングメッセージを表示するか        (true)       role: ページのdata-role属性の値を指定       transition: 遷移アニメーション        ($.mobile.defaultPageTransition)       reverse: 遷移を逆向きにするか(false)
$.mobile.changePage(to, options)   1-3.htmlをコピーしてchangePage.htmlを作成    し、2ページ目へのリンクを以下のボタンに差    し替えてください。    <button      onclick="        $.mobile.changePage(          '#page2', {transition: 'flip'});">    2ページ目へGo!    </button>
$.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()   jQuery Mobileの「読み込み中」ダイアログを    表示あるいは非表示にする
タッチイベント   タッチスクリーンに対するイベント。ブラウ    ザごとの差異を抽象化している     tap・・・タップされた     taphold・・・1秒以上タップされたまま     swipe・・・スワイプされた     swipeleft・・・左にスワイプされた     swiperight・・・右にスワイプされた
仮想マウスイベント   PCのマウスイベントとタッチイベントを統一    して扱える     vmouseover     vmousedown     vmousemove     vmouseup     vclick     vmousecancel
APIを利用したサンプル(1)   5.2.1.1のサンプル(「スワイプイベントから    ページ遷移を発生させる」)を書きなおした    もの。   1-3.htmlをコピーしてswipePages.htmlを作成    し、次のページに示すスクリプトをhead要素    内に挿入してください。
APIを利用したサンプル(1)<script>  $(function() {  var pages = $(':jqmData(role="page")');  pages.each(function() {    $(this).bind('swipeleft', function() {      var next = $(this).next();      if (next.length === 0)        next = $(pages[0]);      $.mobile.changePage(next);    });    $(this).bind('swiperight', function() {      var prev = $(this).prev();      if (prev.length === 0)        prev = $(pages[pages.length - 1]);      $.mobile.changePage(prev, { reverse: true });    });  });  });</script>
外部ページの読み込みに伴うイベント   pagebeforeload   pageload   pageloadfailed
ページ遷移に伴うイベント   pagebeforehide   pagebeforeshow   pagehide   pageshow   pagebeforechange   pagechange   pagechangefailed
ページの生成・削除に伴うイベント   pagebeforecreate・・・初期化直前   pagecreate・・・DOM構築直後   pageinit・・・jQMによる拡張完了後   pageremove・・・ページ削除時のイベント。    外部ページは、ユーザがそこを離れると削除    される。
APIを利用したサンプル(2)   ページに関するイベントをコンソールに表示    します。   2-2.htmlをコピーしてpageEvents.htmlを作成    し、次のページに示すスクリプトをhead要素    内に挿入してください。
APIを利用したサンプル(2)<script>$(function() {  $(':jqmData(role="page")').live('pagebeforecreate',function() {    console.log('ページ' + this.id +      'においてpagebeforecreateイベントが発生しました!');    $(this).bind(      'pagecreate pagebeforehide pagebeforeshow' +      'pagehide pageshow pagebeforechange pagechange',      function(e) {        console.log('ページ' + this.id +        'において' + e.type + 'イベントが発生しました!');      });  });});</script>
その他のイベント   updatelayout・・・UIコンポーネントのレイア    ウトが変化すると呼び出される(検索機能付    き   orientationchange・・・デバイスの方向が変    化した際呼び出される   アニメーションの終了
jQuery Mobileの設定   主な設定項目(完全なリストはこちら)     activeBtnClass: アクティブなボタンのクラス     activePageClass: アクティブなページのクラス     defaultPageTransition: デフォルトのページ遷移      アニメーション     defaultDialogTransition:デフォルトのダイアログ      表示アニメーション     loadingMessage: ローディング中の文字列     ns: 名前空間。data属性に文字列が追加される。      (例えば、ns='my'とすると、data-my-roleなどに      なる。)
jQuery Mobileの設定   jQuery Mobileが読み込まれるより先に、    documentにmobileinitイベントのハンドラを指    定し、その中で$.mobileオブジェクトに設定    項目を指定します。   次のページの例を見てください。
APIを利用したサンプル(1)   1-3.htmlをコピーしてconfig.htmlを作成し、次    のページに示すスクリプトをhead要素内に挿    入してください。    <script src="jquery.js"></script>    <script>    $(document).bind('mobileinit', function() {      $.mobile.defaultPageTransition = 'flip';    });    </script>    <script src="jquery.mobile.js"></script>
jQuery Mobileでつくってみよう
6章のサンプルを作ってみましょう   本のソースコードとかけ離れてしまってもい    いので、自分で一から作ってみましょう!   1-3.htmlをコピーしてmy_jqmTweet.htmlを作    成し、編集していきましょう。
まず、画面のモックを作る   このアプリは、3画面からなります。     ツイート一覧画面     ツイート詳細画面     設定画面
ツイート一覧画面    まずはリストビューを     使って、右のようなUIを     実現しましょう。    画面のIDは     "pageTweetList"としま     しょう。<ul data-role="listview">  <li><a href="#">ツイート!</a></li>  <li><a href="#">ツイート!</a></li>  <li><a href="#">ツイート!</a></li></ul>
ツイート詳細画面   まずは画面に「ツイート!」    という文字列が出ているだ    け、で構いません。   画面のIDは    「pageTweetDetail」とし、    一覧画面から遷移するよう    にしましょう。
設定画面    まず、設定画面に飛ぶためのボタンを一覧画     面のヘッダに作成します。    一覧画面のheader要素内に、以下のコードを     記述してボタンを作りましょう。<a href="#pageSettings"  data-transition="flip"  data-role="button"  data-icon="gear"  data-iconpos="notext"  class="ui-btn-right">設定</a>
設定画面   次ページのような見た目になるよう、フォー    ム要素を配置してください。   ページのIDは"pageSettings"とします。   上のテキストフィールドは、IDを"username"    としたtextタイプのinput要素で作ります。   下のテキストフィールドはIDを"slider"とした    rangeタイプのinput要素で作ります。min="5",    max="50"としてください。
設定画面
JavaScriptプログラミング   今回は、本に書いてあるコードではなく、白    石が独自に書いたコードを使いましょう。     コードが短い(本:      218行、独自版: 53行)     jQuery Mobileにとって、より望ましいコードに      なっている($(document).ready()ではなく      pageshowを使う、など)   独自版のコードが理解できたら、本のコード    にもトライしてみてください。
コードを書く準備   以下のコードを、body要素の一番下に記述し    てください。   スコープと変数の宣言を行なっています。$(function() {  var userName = 'Shumpei',   //   Twitterのユーザ名      currentTweet = null,    //   詳細画面に表示するツイート      updateNeeded = true,    //   一覧画面の更新が必要か      maxCount = 20;          //   一覧に表示するツイート数  // 残りのコードはここに記述});
Twitterからツイートを読み込む   一覧画面の表示時に、Ajaxでツイートを読み    込みます。// ツイート一覧画面が表示されると呼び出される$('#pageTweetList').live('pageshow', function() { // 更新が必要ない  if (!updateNeeded) return;  var page = $('#pageTweetList');  var list = page.find('ul').empty();  // ツイートを取得する   $.get(    'http://search.twitter.com/search.json?callback=?' +    '&rpp=' + maxCount +    '&q=from:' + userName,    function(data) {      // 次のページの処理はここに記述    }, 'json');});
ツイートから一覧を作成   1ツイート=1つのli要素としてリストビューを更新します。var tweets = data.results;tweets.forEach(function(tweet) {  var iconSrc = tweet.profile_image_url;  var text = tweet.text;  var link = $('<a href="#pageTweetDetail"/>');  // リンクをクリックされたら、変数を更新する   link.data('tweet', tweet).click(function() {    currentTweet = $(this).data('tweet');  });  $('<img/>', {src: iconSrc}).appendTo(link);  $('<span/>', {text: text}).appendTo(link);  $('<li/>').append(link).appendTo(list);});// リストビューをリフレッシュlist.listview("refresh");updateNeeded = false;
詳細画面を表示する際の処理   リンクをクリックされると、変数currentTweetに該当のツイートが    格納されます(前ページ参照)   詳細画面の表示時に、currentTweetの情報をページに書き出します。// 詳細画面が表示されると呼び出される$('#pageTweetDetail').live('pageshow', function() {  if (!currentTweet) return;  $(this).find(':jqmData(role="content")')    .text(currentTweet.text);});
設定画面を表示する際の処理   画面表示時に、設定項目の値を更新します。   設定が変更されたら、変数を変更すると同時にupdateNeeded(一    覧の更新が必要かどうかを表すフラグ)をtrueにします。// 設定画面が表示されると呼び出される$('#pageSettings').live('pageshow', function() {  $('#username').val(userName).change(function() {    userName = $(this).val();    updateNeeded = true;  });  $('#slider').val(maxCount).slider('refresh')  .change(function() {    maxCount = $(this).val();    updateNeeded = true;  });});
時間が余ったら   ツイートの取得に失敗した際のエラーページ    を追加してみましょう。     本とは異なり、changePage()メソッドを使って     やってみてください。   テーマを変えてみましょう   すべてのページに戻るボタンを追加してみま    しょう。   本の6.4以降のインターフェース改良にトライ    してみましょう。
jQuery Mobileの開発環境   DreamWeaver5.5   codiqa   ApplicationCraft
DreamWeaver5.5   デザインを確認しながらコードを編集できる。   data属性の補完に対応している
codiqa   ブラウザ上でjQuery Mobileのコードを編集可    能   ドラッグ&ドロップで画面を構築していける
ApplicationCraft   ブラウザ上で動作する統合開発環境   ドラッグ&ドロップで画面を構築していける
jQuery Mobile以外の主なモバイルフレームワーク   Sencha Touch   Kendo UI   PhoneGap
Sencha Touch   jQuery Mobileの競合   JavaScriptの知識が必須   デフォルトのUIコンポーネントが美しい   ネイティブアプリの作成ツールを備える
Kendo UI Mobile   jQuery Mobileとほぼ同じコンセプト   ネイティブUIにかなり近い。   営利企業が開発しており、基本的に有償
PhoneGap   Web技術(HTML/CSS/JavaScript)で、ス    マートフォンやタブレットのネイティブアプ    リを作成するためのフレームワーク   DreamWeaverで、jQuery Mobileと組み合わせ    て開発できる
終わりに   jQuery Mobileの魅力は、以下のところにある    と考えます。     数分でモックが作れてしまうほどの生産性     カスタマイズ性     オープンソースで、開発が活発   1.1ではパフォーマンスの向上や細かな改善が    図られており、今後が非常に期待できるフ    レームワークでもあります。
ご清聴ありがとうございました。           @Shumpei

Recommended

PDF
HTML5, きちんと。
PDF
今からハジメるHTML5マークアップ
PDF
HTML仕様書を読んでみよう
PDF
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
PDF
今からハジメるHTML5プログラミング
PDF
HTML5マークアップの心得と作法
PDF
Web Platform -- Moving Forward!
PDF
HTML5 & The Web Platform
PDF
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
KEY
EC-CUBEプラグイン講義
PPT
いちばん簡単なconcrete5テーマ
PDF
なんでCSSすぐ死んでしまうん
PDF
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
PPTX
Magento meet up Tokyo#1 for Design
KEY
Webapp startup example_to_dolist
PDF
GDG Women DevfestW
PDF
Head First XML Layout on Android
KEY
WordPressプラグイン作成入門
PDF
Oktopartial Introduction
PPTX
20141206 handson
PDF
Wp html5
PDF
ゼロからつくるWord pressテーマ第5回
PDF
⑯jQueryをおぼえよう!その2
PPTX
Word press34
 
PDF
今必要なCSSアーキテクチャ
PDF
HTML5開発最前線
PDF
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
PDF
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
PDF
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)

More Related Content

PDF
HTML5, きちんと。
PDF
今からハジメるHTML5マークアップ
PDF
HTML仕様書を読んでみよう
PDF
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
PDF
今からハジメるHTML5プログラミング
PDF
HTML5マークアップの心得と作法
PDF
Web Platform -- Moving Forward!
PDF
HTML5 & The Web Platform
HTML5, きちんと。
今からハジメるHTML5マークアップ
HTML仕様書を読んでみよう
情報編集(Web) HTML5とは何か? HTML5、はじめの一歩
今からハジメるHTML5プログラミング
HTML5マークアップの心得と作法
Web Platform -- Moving Forward!
HTML5 & The Web Platform

What's hot

PDF
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
KEY
EC-CUBEプラグイン講義
PPT
いちばん簡単なconcrete5テーマ
PDF
なんでCSSすぐ死んでしまうん
PDF
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
PPTX
Magento meet up Tokyo#1 for Design
KEY
Webapp startup example_to_dolist
PDF
GDG Women DevfestW
PDF
Head First XML Layout on Android
KEY
WordPressプラグイン作成入門
PDF
Oktopartial Introduction
PPTX
20141206 handson
PDF
Wp html5
PDF
ゼロからつくるWord pressテーマ第5回
PDF
⑯jQueryをおぼえよう!その2
PPTX
Word press34
 
PDF
今必要なCSSアーキテクチャ
PDF
HTML5開発最前線
PDF
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
EC-CUBEプラグイン講義
いちばん簡単なconcrete5テーマ
なんでCSSすぐ死んでしまうん
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
Magento meet up Tokyo#1 for Design
Webapp startup example_to_dolist
GDG Women DevfestW
Head First XML Layout on Android
WordPressプラグイン作成入門
Oktopartial Introduction
20141206 handson
Wp html5
ゼロからつくるWord pressテーマ第5回
⑯jQueryをおぼえよう!その2
Word press34
 
今必要なCSSアーキテクチャ
HTML5開発最前線
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する

Viewers also liked

PDF
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
PDF
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
PDF
jQueryで作るカスタム投稿の画像スライダーライブラリ
PPTX
Itエンジニアのための自然言語処理入門
PPTX
20140523 jQuery基礎 (HTML5ビギナーズ)
PDF
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
PPTX
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
PDF
HTML5ハイブリッド アプリ開発実践編
 
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PPTX
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
PDF
⑮jQueryをおぼえよう!その1
PPTX
入力フォームチェックをJ queryでやってみた
PPTX
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
PDF
少人数から始めるできるだけ楽をするB2Bアプリ開発
ZIP
実践Sass 前編
PPTX
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
PPTX
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
PPTX
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
PPTX
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
PDF
漢は黙ってjQuery
【ハンズオン】jQuery+HTML5 APIでスライドショーを作ろう
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
jQueryで作るカスタム投稿の画像スライダーライブラリ
Itエンジニアのための自然言語処理入門
20140523 jQuery基礎 (HTML5ビギナーズ)
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
HTML5ハイブリッド アプリ開発実践編
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
⑮jQueryをおぼえよう!その1
入力フォームチェックをJ queryでやってみた
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
少人数から始めるできるだけ楽をするB2Bアプリ開発
実践Sass 前編
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
漢は黙ってjQuery

Similar to jQuery Mobile入門

PDF
jQuery Mobile 最新情報 & Tips
PDF
jQuery Mobileカスタマイズ自由自在
PDF
jQuery Mobileカスタマイズ自由自在 v1.2
PDF
jQuery Mobileバレしないモバイルサイトの作り方
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
PDF
jQueryでiTunes Store風スライドショーを作ってみる
PDF
はじめてのjQueryMobile(初級編)
PPTX
スマートフォンサイトデザインに求められるUI/UX設計術
PDF
jQuery Mobile(開発編)勉強会資料
PDF
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
PDF
Jqm20120210
PDF
jQuery Mobileの基礎
PDF
jQuery Mobile 1.2 最新情報 & Tips
PDF
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
PDF
jQuery Mobile
PDF
Jqm20120804 publish
PPTX
JqueryMobile
PDF
2012年8月10日 勉強会
KEY
Kawaz的jQuery入門
PDF
Web制作勉強会 #2
jQuery Mobile 最新情報 & Tips
jQuery Mobileカスタマイズ自由自在
jQuery Mobileカスタマイズ自由自在 v1.2
jQuery Mobileバレしないモバイルサイトの作り方
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQueryでiTunes Store風スライドショーを作ってみる
はじめてのjQueryMobile(初級編)
スマートフォンサイトデザインに求められるUI/UX設計術
jQuery Mobile(開発編)勉強会資料
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
Jqm20120210
jQuery Mobileの基礎
jQuery Mobile 1.2 最新情報 & Tips
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
jQuery Mobile
Jqm20120804 publish
JqueryMobile
2012年8月10日 勉強会
Kawaz的jQuery入門
Web制作勉強会 #2

More from Shumpei Shiraishi

PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
PPTX
JavaScript使いのためのTypeScript実践入門
PPTX
コンセプトのつくりかた - アイデアをかたちにする技術
PDF
WebRTCがビデオ会議市場に与えるインパクトを探る
PDF
俺的GEB概論(前半)
PPTX
秒速一億円
PPTX
「1秒でわかる!アパレル業界ハンドブック」を読んで
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PPTX
HTML5時代のフロントエンド開発入門
PPTX
HTML5がもたらすアプリ開発へのインパクト
PPTX
Angular2実践入門
PPTX
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
PPTX
この人と結婚していいの?を読んで
PPTX
漫☆画太郎論
PDF
変身×フランツ・カフカ
PPTX
「それでも人生にイエスと言う」を読んで
PPTX
「それでも人生にイエスと言う」を読んで
PPT
20130921レジュメ2
PPTX
はじめにことばありき
PPTX
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
JavaScript使いのためのTypeScript実践入門
コンセプトのつくりかた - アイデアをかたちにする技術
WebRTCがビデオ会議市場に与えるインパクトを探る
俺的GEB概論(前半)
秒速一億円
「1秒でわかる!アパレル業界ハンドブック」を読んで
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
HTML5時代のフロントエンド開発入門
HTML5がもたらすアプリ開発へのインパクト
Angular2実践入門
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
この人と結婚していいの?を読んで
漫☆画太郎論
変身×フランツ・カフカ
「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで
20130921レジュメ2
はじめにことばありき
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで

jQuery Mobile入門

  • 1.
  • 2.
    自己紹介株式会社オープンウェブ・テクノロジー代表 シーエー・モバイル株式会社 Web先端技術 フェロー HTML5とか勉強会主催、html5j.org管理人 Google API Expert (HTML5) Microsoft Most Valuable Professional 2011 (IE)
  • 3.
    この資料についてテキストとして、オライリー刊「jQuery Mobile」を使用します。 ハンズオンの部分は、オライリーのサイトか らサンプルをダウンロードして実践してくだ さい。 とはいえ、書籍が手元になくても、この資料 だけで学べることを目指しました。
  • 4.
    jQuery Mobileとは スマートフォン向けのWebサイト開発フレー ムワーク 現在のバージョンは1.0.1  1.1が現在リリース候補に
  • 5.
    jQuery Mobileの特徴 ネイティブアプリに近い操作感 テーマの切り替えが可能 JavaScriptの知識がなくてもそこそこ使える jQueryに依存している マルチプラットフォーム
  • 6.
    ネイティブアプリに近い操作感CSS/JavaScriptを駆使して、「ネイティブア プリに近い」操作感を実現する  UIコンポーネント・・・フォーム要素やリストな ど、用意されているコンポーネントがすべてブラ ウザネイティブのUIに近づけてあり、操作しやす い  ページ遷移がなめらかなアニメーションで実現さ れる(画面のリフレッシュが発生しない) jQuery Mobileのドキュメントがデモになって いる。
  • 7.
    テーマの切り替えが可能jQuery Mobileは、CSSの切り替えのみで大幅 にUIを変更することが可能。  色合いを変えるだけならば「スウォッチ」の変更 だけで可能
  • 8.
    JavaScriptの知識がなくてもそこそこ使えるマークアップに特別な属性(data-*属性)を加 えていくだけで、簡単にスマートフォン対応 サイトを作成できる。
  • 9.
    jQueryに依存しているjQueryに強く依存している。 バージョン1.0.1では、jQuery1.6系に対応。 バージョン1.1(現在はまだ正式リリース前) では、jQuery1.7系に対応。 少し凝ったことをやるなら、jQueryの知識が あったほうが良い。
  • 10.
    マルチプラットフォームデスクトップを含め、22のプラットフォーム に対して同様のユーザ体験を提供できる  Android 2.1-4.0  iOS 3.2-5.0 プログレッシブ・エンハンスメントのアプ ローチにより、古いブラウザに対しても最低 限の情報提供は行える。
  • 11.
    jQuery Mobileを使用したサイトは増加中 DODA、マイナビバイト、マイナビ派遣、 じゃらんnetなど、続々と利用事例は増加中 jQuery Mobileを使った国内スマホサイトまと め 大手によって採用されていることからも、安 心して使えるフレームワーク。
  • 12.
  • 13.
    jQuery Mobileをはじめよう インストール はじめてのjQuery Mobileページ 2ページからなるWebサイト
  • 14.
    準備作業XAMPPのインストール jQuery Mobileのサンプルをダウンロード サンプルをXAMPP/htdocs内に展開
  • 15.
    jQuery Mobileのインストール JavaScriptとCSSを読み込むだけ  CDNを利用する場合<link rel="stylesheet"href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /><script src="http://code.jquery.com/jquery-1.6.4.min.js"></script><scriptsrc="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>  ファイルをダウンロードし、自分のサイトで 配信することも可能
  • 16.
    はじめてのjQuery Mobileページ ヘッダとフッタを持つjQueryページを作って みましょう。
  • 17.
    はじめてのjQuery Mobileページ 1-1.htmlをコピーして1-1a.htmlとし、body要 素内に以下のコードを記述してください。<section id="page1" data-role="page"> <header data-role="header"><h1>jQuery Mobile</h1></header> <div class="content" data-role="content"> <p>はじめてのページ!</p> </div> <footer data-role="footer"><h1>O'Reilly</h1></footer></section> 結果は1-2.htmlと同じになります。
  • 18.
    はじめてのjQuery Mobileページ ポイント  data-role属性を使用して、要素に役割を与えてい る(page, header, content, footer)  jQuery Mobileはdata属性を多用します<section id="page1" data-role="page"> <header data-role="header"><h1>jQuery Mobile</h1></header> <div class="content" data-role="content"> <p>はじめてのページ!</p> </div> <footer data-role="footer"><h1>O'Reilly</h1></footer></section>
  • 19.
    2ページからなるWebサイトページ遷移のあるWebサイトを作成してみま しょう。
  • 20.
    2ページからなるWebサイト  1-1a.htmlのbody要素内に、2ページ目を追加 しましょう。<section id="page2" data-role="page"> <header data-role="header"><h1>jQuery Mobile</h1></header> <div class="content" data-role="content"> <p>2ページ目</p> </div> <footer data-role="footer"><h1>O'Reilly</h1></footer></section>  page1に、page2へのリンクを追加しましょう。<p><a href="#page2">2ページ目へGo!</a></p> 結果は1-3.htmlと同じになります。
  • 21.
    2ページからなるWebサイトポイント  1ページ=1ブロック  ページ間のリンクは、スムーズなアニメーション で実現される  すべてのページが一意なURLを持ち、戻るボタン で戻ることが出来る。
  • 22.
  • 23.
    内部ページと外部ページjQuery Mobileにおけるページとは、data- role="page"が付与されたブロック要素。 すべてのページを1枚のHTMLに収めることが できるが、HTMLが巨大になる ページを外部のファイルに記述し、必要に応 じてロードすることもできる。  →外部ページ
  • 24.
    内部ページの利用1-1a.htmlをコピーして、2-1a.htmlとしてくだ さい。(フォルダはchapter-2に置いてくださ い) ページを追加して3ページとし、 「1P→2P→3P→1P」と遷移するようにリン クしてください。  テキストのP.11を参照 結果は2-1.htmlと同じになります。
  • 25.
    外部ページの利用  今作成した2-1a.htmlの3ページ目に、以下のリ ンクを追加しましょう。<p><a href="external.html">外部ページへGo!</a></p> 結果は2-2.htmlとほぼ同じになります。
  • 26.
    外部ページの利用ポイント  外部ページはAjaxで自動的にロードされる  ロードされたページは元ページのDOMに組み込 まれる  ID属性の衝突が発生しないように注意!  外部ページの中で読み込まれるのは最初のページ (data-role="page"が付与されたブロック)のみ。 それ以外の部分は無視される。
  • 27.
    ダイアログダイアログの指定方法  ダイアログのページにdata-role="dialog"と指定す る  リンクにdata-rel="dialog"と指定する
  • 28.
    ダイアログ2-2a.html のページ2をダイアログにしてみま しょう。
  • 29.
    ページ遷移のアニメーションページ遷移のアニメーションは変更できる  data-transition・・・アニメーションの種類を指 定  data-direction・・・"reverse"と指定すれば、アニ メーションが逆方向に
  • 30.
    ページ遷移のアニメーション2-1a.htmlを題材に、様々なアニメーションを 試してみましょう。 data-transitionに指定可能な値 fade flip pop slide slidedown slideup
  • 31.
  • 32.
    ページの要素リストビュー ナビゲーションバー ヘッダー・フッター ボタン チェックボックスとラジオボタン フリップトグル 選択メニュー スライダー レイアウトグリッド
  • 33.
    リストビュースマホで一般的な一覧UIを簡単に実現できる  読み取り専用の一覧  他のページにジャンプする一覧  リストに区切りを入れる  リストビューを入れ子で指定する  リスト項目の分割  カウントのバブル表示  サムネイルとアイコン
  • 34.
    読み取り専用のリストビューdata-role="listview"を指定する 3-1.htmlを3-1a.htmlにコピーして、ブラウザ でアクセスしてみましょう。
  • 35.
    読み取り専用のリストビューポイント  ul/ol要素にdata-role="listview"を指定する
  • 36.
    リストビューの項目から他のペー ジにジャンプする  3-1a.htmlを修正して、li要素の内容をリンクに しましょう。<ul data-role="listview"> <li><a href="#">項目</a></li> …</ul>
  • 37.
    リストに区切りを入れる  3-1a.htmlを修正して、リストに区切りを入れ ましょう。  data-role="divider"を指定したli要素を追加しま す。<ul data-role="listview"> <li data-role="divider">区切り</li> <li><a href="#">項目</a></li> …</ul>
  • 38.
    リストビューを入れ子で指定するリストのli要素内に、更にul/ol要素を記述する と、入れ子構造の中をインタラクティブに移 動できる
  • 39.
    リストビューを入れ子で指定する  3-1a.htmlを修正して、番号付きのリストを、 番号なしのリストの入れ子にしましょう。<ul data-role="listview"> ... <li> <h3>番号付きの箇条書き</h3> <ol data-role="listview"> <li><a href="#">項目</a></li> <li><a href="#">項目</a></li> <li><a href="#">項目</a></li> </ol> </li></ul>
  • 40.
    リスト項目の分割リストのli要素内に、リンクを2つ以上並べる と、最後のリンクがボタンに変化する 3-1a.htmlを修正して、li要素に2つ以上のa要素 が含まれるようにしてみましょう。
  • 41.
    カウントのバブル表示リストのli要素内に、ui-li-countというクラス を持つインライン要素を含めると、バブル表 示される 3-1a.htmlを修正して試してみましょう。 <li> <a href="#">項目</a> <span class="ui-li-count">3</span> </li>
  • 42.
    ナビゲーションバーリンクのグループをタブ、もしくはボタン表 示することができる。
  • 43.
    ナビゲーションバー1-2.htmlをコピーして3-9a.htmlを作成し、編 集します。 以下のコードをheader要素内に記述しましょ う。 <nav data-role="navbar"> <a href="#">1</a> <a href="#">二</a> <a href="#">さん</a> </nav> 上記のリンクを、順序なしリスト(ul)で囲 み、見た目の違いを確認しましょう。
  • 44.
    ヘッダー・フッターdata-roleにheader/footerと指定すれば、ヘッ ダとフッタを作れます。 ヘッダとフッタは、以下のような表示方法を 行えます。  標準・・・フッタの位置は、コンテンツの高さに 依存する  固定・・・ヘッダ・フッタが常に画面端に固定さ れる。data-position="fixed"を指定する  フルスクリーン・・・コンテンツがフルスクリー ン表示され、タップするとヘッダー・フッターが 表示される。ページにdata-fullscreen="true"を指 定する。
  • 45.
    ヘッダー・フッター1-2.htmlをコピーして3-10a.htmlを作成し、編 集します。 固定モードを試しましょう。  ヘッダ・フッタにdata-position="fixed"を指定しま す。 フルスクリーンモードを試しましょう。  固定モードの状態で、ページに対してdata- fullscreen="true"を指定します。
  • 46.
    フォーム要素jQuery Mobileでは、様々なフォーム要素を自 動的にモバイル用に最適化してくれる。 フォーム要素のデモ
  • 47.
    ボタンinput要素/button要素によるボタンは、ユーザ が押しやすいサイズのUIへと勝手に変換され ます。 data-role="button"とすることで、任意の要素 をボタンに見せることができる。 ボタンの幅をコンテンツに合わせるには、 data-inline="true"の指定が必要
  • 48.
    ボタン  1-2.htmlをコピーして3-13a.htmlを作成し、編 集します。  以下のコードをコンテンツ領域に記述し、 様々なボタンを試しましょう。<a href="#" data-role="button">リンクベースのボタン</a><input type="submit" value="送信" data-inline="true"><input type="reset" value="リセット" data-inline="true"> 結果は3-13.htmlと同じになります。
  • 49.
    ボタンのコントロールグループdata-role="controlgroup"を付与したブロック 要素で、ボタンをグループ化することができ る。 data-type="horizontal"を指定すると横向きに ボタンが並ぶ。
  • 50.
    ボタン1-2.htmlをコピーして3-14a.htmlを作成し、編 集します。 以下のコードをコンテンツ領域に記述し、 様々なボタンを試しましょう。 <div data-role="controlgroup"> <span data-role="button">リンクベースのボタン</span> <span data-role="button">リンクベースのボタン</span> <span data-role="button">リンクベースのボタン</span> </div>
  • 51.
  • 52.
    (ボタンの)アイコンボタンにdata-icon属性を指定すると、アイコン付 きのボタンにできる。 data-icon属性で指定できる値 alert arrow-d arrow-l arrow-r arrow-u back check delete forward gear grid home info minus plus refresh search star また、data-iconpos属性でアイコンの表示位置を 変更できる。  bottom/left/right/top/notext(アイコンのみ)
  • 53.
    (ボタンの)アイコン1-2.htmlをコピーして3-15a.htmlを作成し、編 集します。 以下のコードをページ内に記述しましょう。 <button data-icon="gear" data-iconpos="left"> ボタン </button> アイコンや表示位置をいろいろ変更してみま しょう。
  • 54.
    カスタムアイコンカスタムのアイコンを使用するには、data- icon属性に定義済み以外の値(例えばdata- icon="smile"を使用する。 →すると、そのボタンには「ui-icon-smile」と いうクラスが付与される
  • 55.
    カスタムアイコン3-15a.htmlを編集します。 以下のコードをページ内に記述しましょう。 <style> .ui-icon-smile { background-image: url(http://bit.ly/smileicon); background-size: 18px 18px; } </style> <button data-icon="smile" data-iconpos="left"> ボタン </button>
  • 56.
    ヘッダ上のボタンヘッダに、ボタン化したリンクを配置するこ とができる。  a要素を2つまで記述でき、左右に一つずつ配置 される。  ボタンを1つだけ、右側に配置したい場合は、ui- btn-rightというクラスを使用する
  • 57.
    ヘッダ上のボタン1-3.htmlをコピーしてheaderButtons.htmlを作 成し、編集します。 以下のコードをヘッダに記述し、結果を確認 します。<a href="#" data-role="button" data-icon="gear" data-iconpos="notext" class="ui-btn-right">設定</a>
  • 58.
    戻るボタンの自動挿入ページにdata-add-back-btn="true"と記述する と、ヘッダに戻るボタンが自動的に挿入され ます。 headerButtons.htmlの2ページ目に戻るボタン を追加しましょう。
  • 59.
    チェックボックスとラジオボタン特に何もしなくても、ユーザが押しやすいUI になります。 3-16.htmlを表示し、ソースを確認しましょう。
  • 60.
    フリップトグルselect要素に、data-role="slider"を指定すると、 オン/オフを切り替えられるスイッチを作成 できます。 3-17.htmlを表示し、ソースを確認しましょう。
  • 61.
    フィールドのグループ化ラベルとフィールドのセットを表すためのブ ロックを作成できる data-role要素に"fieldcontain"を指定した div/fieldset要素でフォーム要素を囲む <div data-role="fieldcontain"> <label for="username">ユーザ名:</label> <input type="text"> </div>
  • 62.
    選択メニューselect要素は、data-native-menu="false"を指 定することで、jQuery Mobile独自の選択メ ニューを利用できる。 3-20.htmlを表示し、ソースを確認しましょう。
  • 63.
    スライダーrangeタイプのinput要素を用いることで、スラ イダーUIが表示されます。 3-21.htmlを表示し、ソースを確認しましょう。
  • 64.
    レイアウトグリッドグリッドレイアウトを行うためのCSSフレー ムワークが用意されています。 ui-grid-[a-e]でグリッドのカラム数を指定しま す。ui-grid-aは2列です。 グリッド内にui-block-[a-e]でセルを配置して いきます。ui-block-aは、行を折り返す効果を 持ちます。
  • 65.
    レイアウトグリッド1-2.htmlをコピーして3-22a.htmlを作成し、以 下のコードを記述します。 <style> *[class^='ui-block-'] p{ border: 1px solid gray; } </style> <div class="ui-grid-a"> <div class="ui-block-a"><p>1-1</p></div> <div class="ui-block-b"><p>1-2</p></div> <div class="ui-block-a"><p>2-1</p></div> </div>
  • 66.
  • 67.
    テーマとスウォッチテーマ・・・インターフェース全般 スウォッチ・・・テーマの色 data-theme属性を用いて、スウォッチを切り 替えられる。  デフォルトテーマではa-eを選択できる  初期状態ではc
  • 68.
    テーマとスウォッチ3-1.html(リストビューのサンプル)をコピー して4-1a.htmlを作成し、様々なテーマを試し てみましょう。  data-theme属性にa-eのいずれかを指定します。  ページだけでなく、リストビューなどにも指定で きます。
  • 69.
    スウォッチをカスタマイズする4-1a.htmlに、以下のスタイルを追加してくだ さい(jQuery MobileのCSSよりも後に記述し てください。 リストビューのテーマをaに設定してください。 <style> .ui-btn-up-a { background-image:-webkit-linear-gradient(red, #333); } </style>
  • 70.
    スウォッチをカスタマイズするスウォッチを作成・編集できる 「ThemeRoller」というWebアプリがある。
  • 71.
    スウォッチをカスタマイズするThemeRollerを使用して作成したテーマをダウ ンロードして読み込み、利用してみましょう。 左上のメニューから テーマをダウンロー ドできる
  • 72.
    スウォッチをカスタマイズするjQuery Mobile Bootstrapという、Twitter Bootstrapを意識したテーマが利用可能 こちらもダウンロードして使ってみましょう。
  • 73.
  • 74.
    :jqmData()セレクタjQuery Mobileはdata-属性を多用するため、 jqmData()という特別なセレクタが用意されて いる。 // すべてのページを取得する $(':jqmData(role="page")') // すべてのリストビューを取得する $(':jqmData(role="listview")')
  • 75.
    UIウィジェットが持つメソッド各UIウィジェットは、jQuery UIと同様にメ ソッドを使って操作できるリストビュー listview() スライダー slider()テキスト入力 textinput() 選択メニュー selectmenu()ボタン button() 更に、個々のウィジェットに対して以下のよ うなメソッドを使用できる。  enable/disable/refresh
  • 76.
    UIウィジェットが持つメソッド1-13.htmlをコピーしてformMethods.htmlを作 成し、以下のコードを入力してください。 <script> $(function() { var linkButton = $('a:jqmData(role="button")'); var submitButton = $('input[type="submit"]'); var resetButton = $('input[type="reset"]'); linkButton.click(function() { resetButton.button("disable"); }); submitButton.click(function() { resetButton.button("refresh"); }); }); </script>
  • 77.
    $.mobile.changePage(to, options) ページ遷移を行う  to・・・URL文字列、もしくはページをラップした jQueryオブジェクト  options(省略可)(主なもののみ)  changeHash: URLのハッシュを変更するか(true)  reloadPage: ページを強制的に再読み込みするか(false)  showLoadMsg: ローディングメッセージを表示するか (true)  role: ページのdata-role属性の値を指定  transition: 遷移アニメーション ($.mobile.defaultPageTransition)  reverse: 遷移を逆向きにするか(false)
  • 78.
    $.mobile.changePage(to, options) 1-3.htmlをコピーしてchangePage.htmlを作成 し、2ページ目へのリンクを以下のボタンに差 し替えてください。 <button onclick=" $.mobile.changePage( '#page2', {transition: 'flip'});"> 2ページ目へGo! </button>
  • 79.
    $.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()jQuery Mobileの「読み込み中」ダイアログを 表示あるいは非表示にする
  • 80.
    タッチイベントタッチスクリーンに対するイベント。ブラウ ザごとの差異を抽象化している  tap・・・タップされた  taphold・・・1秒以上タップされたまま  swipe・・・スワイプされた  swipeleft・・・左にスワイプされた  swiperight・・・右にスワイプされた
  • 81.
    仮想マウスイベントPCのマウスイベントとタッチイベントを統一 して扱える  vmouseover  vmousedown  vmousemove  vmouseup  vclick  vmousecancel
  • 82.
    APIを利用したサンプル(1)5.2.1.1のサンプル(「スワイプイベントから ページ遷移を発生させる」)を書きなおした もの。 1-3.htmlをコピーしてswipePages.htmlを作成 し、次のページに示すスクリプトをhead要素 内に挿入してください。
  • 83.
    APIを利用したサンプル(1)<script> $(function(){ var pages = $(':jqmData(role="page")'); pages.each(function() { $(this).bind('swipeleft', function() { var next = $(this).next(); if (next.length === 0) next = $(pages[0]); $.mobile.changePage(next); }); $(this).bind('swiperight', function() { var prev = $(this).prev(); if (prev.length === 0) prev = $(pages[pages.length - 1]); $.mobile.changePage(prev, { reverse: true }); }); }); });</script>
  • 84.
    外部ページの読み込みに伴うイベントpagebeforeload pageload pageloadfailed
  • 85.
    ページ遷移に伴うイベントpagebeforehide pagebeforeshow pagehide pageshow pagebeforechange pagechange pagechangefailed
  • 86.
    ページの生成・削除に伴うイベントpagebeforecreate・・・初期化直前 pagecreate・・・DOM構築直後 pageinit・・・jQMによる拡張完了後 pageremove・・・ページ削除時のイベント。 外部ページは、ユーザがそこを離れると削除 される。
  • 87.
    APIを利用したサンプル(2)ページに関するイベントをコンソールに表示 します。 2-2.htmlをコピーしてpageEvents.htmlを作成 し、次のページに示すスクリプトをhead要素 内に挿入してください。
  • 88.
    APIを利用したサンプル(2)<script>$(function() {$(':jqmData(role="page")').live('pagebeforecreate',function() { console.log('ページ' + this.id + 'においてpagebeforecreateイベントが発生しました!'); $(this).bind( 'pagecreate pagebeforehide pagebeforeshow' + 'pagehide pageshow pagebeforechange pagechange', function(e) { console.log('ページ' + this.id + 'において' + e.type + 'イベントが発生しました!'); }); });});</script>
  • 89.
    その他のイベントupdatelayout・・・UIコンポーネントのレイア ウトが変化すると呼び出される(検索機能付 き orientationchange・・・デバイスの方向が変 化した際呼び出される アニメーションの終了
  • 90.
    jQuery Mobileの設定 主な設定項目(完全なリストはこちら)  activeBtnClass: アクティブなボタンのクラス  activePageClass: アクティブなページのクラス  defaultPageTransition: デフォルトのページ遷移 アニメーション  defaultDialogTransition:デフォルトのダイアログ 表示アニメーション  loadingMessage: ローディング中の文字列  ns: 名前空間。data属性に文字列が追加される。 (例えば、ns='my'とすると、data-my-roleなどに なる。)
  • 91.
    jQuery Mobileの設定 jQuery Mobileが読み込まれるより先に、 documentにmobileinitイベントのハンドラを指 定し、その中で$.mobileオブジェクトに設定 項目を指定します。 次のページの例を見てください。
  • 92.
    APIを利用したサンプル(1)1-3.htmlをコピーしてconfig.htmlを作成し、次 のページに示すスクリプトをhead要素内に挿 入してください。 <script src="jquery.js"></script> <script> $(document).bind('mobileinit', function() { $.mobile.defaultPageTransition = 'flip'; }); </script> <script src="jquery.mobile.js"></script>
  • 93.
  • 94.
    6章のサンプルを作ってみましょう本のソースコードとかけ離れてしまってもい いので、自分で一から作ってみましょう! 1-3.htmlをコピーしてmy_jqmTweet.htmlを作 成し、編集していきましょう。
  • 95.
    まず、画面のモックを作るこのアプリは、3画面からなります。  ツイート一覧画面  ツイート詳細画面  設定画面
  • 96.
    ツイート一覧画面  まずはリストビューを 使って、右のようなUIを 実現しましょう。  画面のIDは "pageTweetList"としま しょう。<ul data-role="listview"> <li><a href="#">ツイート!</a></li> <li><a href="#">ツイート!</a></li> <li><a href="#">ツイート!</a></li></ul>
  • 97.
    ツイート詳細画面まずは画面に「ツイート!」 という文字列が出ているだ け、で構いません。 画面のIDは 「pageTweetDetail」とし、 一覧画面から遷移するよう にしましょう。
  • 98.
    設定画面  まず、設定画面に飛ぶためのボタンを一覧画 面のヘッダに作成します。  一覧画面のheader要素内に、以下のコードを 記述してボタンを作りましょう。<a href="#pageSettings" data-transition="flip" data-role="button" data-icon="gear" data-iconpos="notext" class="ui-btn-right">設定</a>
  • 99.
    設定画面次ページのような見た目になるよう、フォー ム要素を配置してください。 ページのIDは"pageSettings"とします。 上のテキストフィールドは、IDを"username" としたtextタイプのinput要素で作ります。 下のテキストフィールドはIDを"slider"とした rangeタイプのinput要素で作ります。min="5", max="50"としてください。
  • 100.
  • 101.
    JavaScriptプログラミング今回は、本に書いてあるコードではなく、白 石が独自に書いたコードを使いましょう。  コードが短い(本: 218行、独自版: 53行)  jQuery Mobileにとって、より望ましいコードに なっている($(document).ready()ではなく pageshowを使う、など) 独自版のコードが理解できたら、本のコード にもトライしてみてください。
  • 102.
    コードを書く準備以下のコードを、body要素の一番下に記述し てください。 スコープと変数の宣言を行なっています。$(function() { var userName = 'Shumpei', // Twitterのユーザ名 currentTweet = null, // 詳細画面に表示するツイート updateNeeded = true, // 一覧画面の更新が必要か maxCount = 20; // 一覧に表示するツイート数 // 残りのコードはここに記述});
  • 103.
    Twitterからツイートを読み込む一覧画面の表示時に、Ajaxでツイートを読み 込みます。// ツイート一覧画面が表示されると呼び出される$('#pageTweetList').live('pageshow', function() { // 更新が必要ない if (!updateNeeded) return; var page = $('#pageTweetList'); var list = page.find('ul').empty(); // ツイートを取得する $.get( 'http://search.twitter.com/search.json?callback=?' + '&rpp=' + maxCount + '&q=from:' + userName, function(data) { // 次のページの処理はここに記述 }, 'json');});
  • 104.
    ツイートから一覧を作成1ツイート=1つのli要素としてリストビューを更新します。var tweets = data.results;tweets.forEach(function(tweet) { var iconSrc = tweet.profile_image_url; var text = tweet.text; var link = $('<a href="#pageTweetDetail"/>'); // リンクをクリックされたら、変数を更新する link.data('tweet', tweet).click(function() { currentTweet = $(this).data('tweet'); }); $('<img/>', {src: iconSrc}).appendTo(link); $('<span/>', {text: text}).appendTo(link); $('<li/>').append(link).appendTo(list);});// リストビューをリフレッシュlist.listview("refresh");updateNeeded = false;
  • 105.
    詳細画面を表示する際の処理リンクをクリックされると、変数currentTweetに該当のツイートが 格納されます(前ページ参照) 詳細画面の表示時に、currentTweetの情報をページに書き出します。// 詳細画面が表示されると呼び出される$('#pageTweetDetail').live('pageshow', function() { if (!currentTweet) return; $(this).find(':jqmData(role="content")') .text(currentTweet.text);});
  • 106.
    設定画面を表示する際の処理画面表示時に、設定項目の値を更新します。 設定が変更されたら、変数を変更すると同時にupdateNeeded(一 覧の更新が必要かどうかを表すフラグ)をtrueにします。// 設定画面が表示されると呼び出される$('#pageSettings').live('pageshow', function() { $('#username').val(userName).change(function() { userName = $(this).val(); updateNeeded = true; }); $('#slider').val(maxCount).slider('refresh') .change(function() { maxCount = $(this).val(); updateNeeded = true; });});
  • 107.
    時間が余ったらツイートの取得に失敗した際のエラーページ を追加してみましょう。  本とは異なり、changePage()メソッドを使って やってみてください。 テーマを変えてみましょう すべてのページに戻るボタンを追加してみま しょう。 本の6.4以降のインターフェース改良にトライ してみましょう。
  • 108.
    jQuery Mobileの開発環境 DreamWeaver5.5 codiqa ApplicationCraft
  • 109.
    DreamWeaver5.5デザインを確認しながらコードを編集できる。 data属性の補完に対応している
  • 110.
    codiqaブラウザ上でjQuery Mobileのコードを編集可 能 ドラッグ&ドロップで画面を構築していける
  • 111.
    ApplicationCraftブラウザ上で動作する統合開発環境 ドラッグ&ドロップで画面を構築していける
  • 112.
  • 113.
    Sencha Touch jQuery Mobileの競合 JavaScriptの知識が必須 デフォルトのUIコンポーネントが美しい ネイティブアプリの作成ツールを備える
  • 114.
    Kendo UI Mobile jQuery Mobileとほぼ同じコンセプト ネイティブUIにかなり近い。 営利企業が開発しており、基本的に有償
  • 115.
    PhoneGapWeb技術(HTML/CSS/JavaScript)で、ス マートフォンやタブレットのネイティブアプ リを作成するためのフレームワーク DreamWeaverで、jQuery Mobileと組み合わせ て開発できる
  • 116.
    終わりにjQuery Mobileの魅力は、以下のところにある と考えます。  数分でモックが作れてしまうほどの生産性  カスタマイズ性  オープンソースで、開発が活発 1.1ではパフォーマンスの向上や細かな改善が 図られており、今後が非常に期待できるフ レームワークでもあります。
  • 117.

[8]ページ先頭

©2009-2025 Movatter.jp