連載:jQuery Mobile入門

第3回 開閉可能パネル/リスト・ビュー/ナビゲーション・バーを使いこなそう

山田 祥寛
2012/03/23
Page1 Page2 Page3

 今回は、前回に引き続いてjQuery Mobileで利用できるウィジェットについて解説していく。今回扱うのは、フォーム系以外のウィジェット――開閉可能パネル/リスト・ビュー/ナビゲーション・バー、そして、ヘッダ/フッタである。

開閉可能なパネルを生成する

 スマホ環境では、見出しのみをリスト表示し、コンテンツ部分は開閉を切り替えられると便利だ。これによって、限られた表示領域をより有効に利用できる。

 jQuery Mobileでは、こうした開閉可能パネル(Collapsible Panel)の機能を標準で提供している。まずは、具体的なコードとその実行例を見ておこう。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>jQuery Mobile入門</title>
<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>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js">
</script>
</head>
<body>

<div id="basic" data-role="page" data-title="jQuery Mobile入門">

  <div data-role="header">
    <h1>jQuery Mobile入門</h1>
  </div>
  <div data-role="content">
    <div data-role="collapsible">  ……
      <h3>独習ASP.NET 第3版</h3>   ……
      <p>最新のASP.NET 4.0(Visual Studio 2010)に対応版「独習ASP.NET」の登場です。<br />Webアプリケーション開発に必要なASP.NETの基礎知識、サーバーコントロールの選択、使用法、DB連携、状態管理、Ajaxなどなど、サンプルを交えてやさしく丁寧に解説します。開発環境は、無償のVisual Web Developer 2010 Express(VWD)を採用。<br />自分で動かし確認しながら学習を進めるので、理解が深まります。</p>  ……
    </div>
  </div>


  <div data-role="footer">
    Copyright 1998-2012, WINGS Project
  </div>

</div>

</body>
</html>
開閉可能パネルの基本的なコード(collapsible.html)
[独習ASP.NET 第3版]という見出しをタップ
ヘッダ部分をタップすると、コンテンツを開閉できる(上記のコードの実行結果)

 開閉可能パネルを生成するには、以下のルールに従ったマークアップを用意すればよい。

ヘッダ要素(=「<h1>〜<h6>」)で見出しを用意する
ヘッダ要素のうしろに、コンテンツ本体を用意する
見出しとコンテンツを「<div data-role="collapsible">〜</div>」でくくる

 サンプルでは、見出しを<h3>要素でマークアップしているが、<h1>〜<h6>要素のいずれを利用しても外観には影響しない。上位の見出しレベルに応じて、最適なものを利用すればよいだろう。

 コンテンツ本体には、取り立ててこれといった決まりはない。ヘッダ要素の後方に、任意のテキスト/要素を記述すればよい。これによって、コンテンツ全体が、以下のような<div>要素で自動的にラップされることになる。

<div class="ui-collapsible-content ui-collapsible-content-collapsed"
  aria-hidden="true">
  ……コンテンツ本体……
</div>
jQuery Mobileによってラップされた後のコンテンツ部のコード(出力)

[Note]WAI-ARIA

 上のコードに含まれる「aria-〜」という属性に注目してほしい。これは、「WAI-ARIA(Web Accessibility Initiative-Accessible Rich Internet Applications)」の規約に則したコードである。

 WAI-ARIAとは、W3Cが提唱する仕様の1つで、Webアプリのアクセシビリティを高めるための技術。具体的には、スクリーン・リーダー(=画面に表示された情報を音声で読み上げるソフトウェア)などの支援ソフトウェアでも正しくページの情報を理解し、操作できるよう、補足情報を付与するための規約だ。「Accessible Rich Internet Applications」とあることからも、主にRIAを想定している。

 jQuery Mobileを利用することで、開発者は意識せずとも、サイトのアクセシビリティを高く保てるわけだ。WAI-ARIAについては、やや古い記事だがThink ITの記事「WAI-ARIAによるアクセシブルRIA」などが分かりやすいので、興味のある方は目を通してみるとよいだろう。

 パネル全体をくくる「<div data-role="collapsible">〜</div>」*1には、以下のようにdata-collapsed属性を指定することも可能だ。開閉パネルはデフォルトでは閉じた状態で表示されるが、これによってパネルを最初から開いた状態で表示できる。

*1 このように、ひとまとまりのコンテンツを収納するための要素のことを「コンテナ要素」ともいう。

<div data-role="collapsible" data-collapsed="false">
  ……中略……
</div>
開閉可能パネルの開閉状態を設定するコード

 このコードの実行結果は以下のようになる。

開閉可能パネルを開いた状態で表示(上記のコードの実行結果)

開閉可能パネルのリストを作成する

 開閉可能パネルは、もちろん、複数並べることも可能だ。以下は、先の「開閉可能パネルの基本的なコード(collapsible.html)」に対して、さらに4つの開閉可能パネルを追記したコード例(追記部分は太字で表している)と、その実行結果である。

<div data-role="content">

  <div data-role="collapsible">
    <h3>独習ASP.NET 第3版</h3>
    <p>最新のASP.NET 4.0(Visual Studio 2010)に……中略……</p>
  </div>

  <div data-role="collapsible">
    <h3>Windows Azure Platform開発入門</h3>
    <p>これからAzureを始めたい方のための……中略……</p>
  </div>

  <div data-role="collapsible">
    <h3>10日でおぼえるjQuery入門教室</h3>
    <p>プログラマーもWebデザイナーも、……中略……</p>
  </div>

  <div data-role="collapsible">
    <h3>Rails 3ポケットリファレンス</h3>
    <p>逆引きで知りたい情報をすぐに探せて……中略……</p>
  </div>

  <div data-role="collapsible">
    <h3>HTML5基礎</h3>
    <p>新たなWeb標準規格「HTML5」の解説書……中略……</p>
  </div>

</div>
複数の開閉可能パネルを列挙したコード(collapsible2.html)
見出しをタップすると、そのコンテンツ部分が開く
開閉可能パネルをリストのように並べた結果(上記のコードの実行結果)

 この場合、開閉可能パネルはそれぞれ独立したものであるので、開閉もパネル単位でバラバラに行える。しかし、リスト全体で開いているパネルを1つだけにしたい、というケース(=あるパネルを開いたら、ほかのパネルは閉じたい)というケースもあるだろう。

 そのような場合は、開閉可能パネルのリストを、以下のようにコンテナ要素(一般的には<div>要素)でくくり、「data-role="collapsed-set"」属性を付与すればよい。

<div data-role="content">
  <div data-role="collapsible-set">

    <div data-role="collapsible" data-collapsed="false">
      <h3>独習ASP.NET 第3版</h3>
      <p>最新のASP.NET 4.0(Visual Studio 2010)に……中略……</p>
    </div>

    <div data-role="collapsible">
      <h3>Windows Azure Platform開発入門</h3>
      <p>これからAzureを始めたい方のための……中略……</p>
    </div>
    ……中略……

  </div>
</div>
開閉パネルのリストをグループ化したコード(accordion.html)

 このコードの実行結果は以下のようになる。

[Windows Azure Platform開発...]見出しをタップ
リスト内の1つだけが開くアコーディオン式の開閉パネル(上記のコードの実行結果)

 なお、このようなアコーディオン式のパネルを生成する場合は、(構文規則ではないが)原則としてパネル1つを初期で開いた状態にしておく(=「data-collapsed="false"」属性を付与しておく)のが望ましい*2。アコーディオン・パネルでは、常に1つだけはパネルが開いているのが自然であるからだ。

*2 複数のパネルに対して「data-collapsed="false"」属性を指定した場合も、エラーにはならず、全てのパネルが開いた状態になるようだ。注意されたい。


 INDEX
  [連載]jQuery Mobile入門
  第3回 開閉可能パネル/リスト・ビュー/ナビゲーション・バーを使いこなそう
  1.開閉可能なパネルを生成する
    2.ネイティブ・アプリ・ライクなリストを生成する
    3.ナビゲーション・バー/ヘッダやフッタの挙動を制御する

インデックス・ページヘ  「連載:jQuery Mobile入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH