jQuery Mobileはどう使うのか設計意図通りなのか、意外と分かり難い
はじめに
今日のは愚痴というか、学習過程のメモというか。
環境
- jQuery Mobile 1.2(今回は1.1でも通用するような話題です)
最初の想像していたこと
jQuery Mobileを学び始めた頃は、以下のように思っておりました。
- 基本的にdata-属性でマークアップしていったら、良い感じに画面が作れる。
- テーマは何か1個選んで使う。
data-属性だけでは上手くできないことが意外と色々あるっぽい
ヘッダのカスタマイズについて調べていて以下のページを読みました。
結果、以下のことに衝撃を受けました。
- さらっと「class属性に○○を指定する」という話が出てくる
- それどころか、最大限にカスタマイズする場合、data-roleを使わずにヘッダを作っている。
てっきり「data-属性で画面をマークアップする」が設計意図だと思っていたのに、公式ドキュメントで「それだけでは、細かいことは無理」というのをあっさり認めてしまっていると言う辺りが、なかなか衝撃的でした。
とはいえ、「じゃあ、data-属性を使わなくて良いの?」とか考え出すと以下が気になるわけですが、そこについては明確な答えを発見できず「ううーん」となるのです。
- data-roleの役割は、classを付与することだけなんだろうか。jQuery Mobileのソースを見るとWAI-ARIA用の属性付与も行っているように見えるのだが……。
- 直接class属性を付与しまくった画面を作ったら、jQuery Mobileのバージョンアップの時に苦労したりしないのだろうか?
テーマは複数選んで1画面の中で使い分ける想定っぽい
フォーム部品について調べていて、以下のページを読みました。
ここで画面下部に注目です。
「Cancel」と「Submit」の色が異なっています。
「ありがちな要件だよなぁ」と思ってソースを見たら、ボタン毎にテーマを変えてありました。
別のページ(「jQuery Mobile Docs - Theming Pages」)に以下のように書いてあるから、てっきり「好きなテーマを選んでね」という仕様だと思っていたのに。
While the data-theme attribute could be added to the content container, we recommend adding it instead to div or container that has been assigned the data-role="page" attribute to ensure that the background color is applied to the full page.
まあ、もっとも、「好きなテーマを一つ選んで使おう」とどこかに書いてあるわけでもない(私には発見できなかった)ので、私の思い込みだった言ってしまえるわけですが。
さいごに
class属性を使ったり、1画面に複数テーマを入れたりするのに私は抵抗があったのですが、良いか悪いかはともかく、抵抗が減りました。
現場の知恵的なものかと最初思っていたのですが、公式ドキュメントでそうしているんだもの。