はじめに
簡単にスマートフォン向けサイトを作成するために活用できるjQuery Mobileを紹介します。前回に引き続き、今回もjQuery Mobile 1.3.0で登場した新機能を紹介します。
対象読者
- jQuery mobile、スマートフォンに興味があり、使ってみたい方
必要な環境と準備
執筆時点のjQueryの最新版は、2.0.0ですが、現時点でのjQuery MobileはjQuery 1.7~1.9対応を前提としているため、今回のサンプルでは1.9.1を用いています。第1回を参考に、ダウンロードしてください。また、jQueryプラグインの基本的な使い方は、第3回を参照してください。
また、執筆時点でのjQuery Mobileの最新版は、1.3.1です。1.3.0での不具合修正が主で新機能の追加はほぼありません。こちらからzipファイルでダウンロードできます。サンプルでは、htmlファイルと同じ階層にmobileというフォルダを作成しています。zipファイル中のimagesフォルダ(cssファイルが呼び出す画像ファイルが格納されたフォルダ)と、jquery.mobile-1.3.1.min.css(通常使用するcssファイル)とjquery.mobile-1.3.1.min.js(スクリプトファイル)をmobileフォルダに入れています。
レンジスライダーを使ったサイトの作成
まずは、jQuery Mobile 1.3.0から使用できるようになったレンジスライダーを使ったサイトを作成してみます。1.3.0登場以前からあったスライダーは1つの値しか指定できませんでしたが、レンジスライダーはある数値から、ある数値まで、といった数値の範囲を指定できるスライドスイッチです。下記は、実際にレンジスライダーを表示させたところです。
なお、jQuery Mobileはパソコンのブラウザでの表示も対応していますので、パソコンで見るとこうした形になります。
サンプルサイトのスクリプトを以下に示します。
<!DOCTYPE html> <html> <head> <meta charset=UTF-8" /> <!--1.スマートフォン画面での表示方法指定--> <mata name="viewport" content="width=device-width,initial-scale=1" /> <title>jQuery Mobileサンプル(レンジスライダー)</title> <!--2.CSSの読み込み--> <link rel="stylesheet" type="text/css" href="./mobile/jquery.mobile-1.3.1.min.css" /> <!--3.jQueryの読み込み--> <script language="javascript" type="text/javascript" src="./Scripts/jquery-1.9.1.min.js"></script> <!--4.jQuery Mobileの読み込み--> <script language="javascript" type="text/javascript" src="./mobile/jquery.mobile-1.3.1.min.js"></script> </head> <body> <!--5.ページの設定--> <div data-role="page"> <!--6.ヘッダーの設定--> <div data-role="header" data-theme="b"> <h1>jQuery Mobileサンプルページ(レンジスライダー)</h1> </div> <!--7.ページ内容の設定--> <div data-role="content"> <!--8.レンジスライダーの設定--> <div data-role="rangeslider"> <label for="slider_min">身長の範囲(cm)</label> <input type="range" name="slider_min" id="slider_min" min="100" max="200" value="150"> <label for="slider_max">身長の範囲(cm)</label> <input type="range" name="slider_max" id="slider_max" min="100" max="200" value="180"> </div> </div> <!--9.フッターの設定--> <div data-role="footer" data-theme="b"> <h3>Codezine</h3> </div> </div> </body> </html>
8.レンジスライダーの設定の中に、jQuery Mobile1.3.0より使用できるようになった「data-role="rangeslider"」という記述があります。単一の数値を指定するスライダーでは「data-role="slider"」ですが、sliderの前に範囲という意味の「range」が付きます。このdivタグの中で、レンジスライダーで動かせる数値の最小値と最大値、そしてハンドルが示す最小値と最大値の既定値を設定します。
単一の数値を指定するスライダーでは、タイトルにlabel要素でラベル付けをして、input要素でスライダーの数値の最小値と最大値、そしてハンドルの既定値を指定しますが、レンジスライダーは指定範囲最小値のハンドルと最大値のハンドルと2つあるので、label要素とinput要素が2セット必要です。
最小値のハンドルを設定するため、「身長の範囲(cm)」というタイトルにlabel要素で「slider_min」というIDでラベル付けをして、input要素で「type="range"」を指定し、name、IDに「slider_min」というlabel要素で設定したIDを指定、あとはスライダーで指定できる最小値を「min="100"」で100と設定、最大値を「max="200"」で200と設定し、最小値ハンドルの既定値を「value="150"」で150に設定します。
そして最大値のハンドルもlabel要素とinput要素で最小値同様に設定します。IDを「slider_max」に変更し、最大値ハンドルの既定値を「value="180"」で180に設定します。