SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

jQuery UI/プラグインの活用

PhotoSwipeプラグインで画像をクールに表示するスマホサイトを作る

「jQuery プラグイン」の利用(17)

  • このエントリーをはてなブックマークに追加

 本連載では、JavaScriptライブラリとして利用頻度の高いjQueryとそのプラグインに着目し、その利用例を紹介します。今回はjQuery Mobileを用いて構築したスマートフォンサイトにおいて画像をクールに表示する機能を、プラグインやjQuery Mobileの機能を用いて作成します。

  • このエントリーをはてなブックマークに追加

はじめに

 本連載では過去数回にわたり、jQueryのスマートフォン向けUIライブラリ「jQuery Mobile」を活用したスマートフォン作成についてさまざまな作例を紹介してきました。スマートフォンはPCやタブレットに比べ画面が小さいため(最近は大画面化してきていますが)、見せたいコンテンツを拡大して表示するような工夫が常に必要です。

 そこで本記事では、コンテンツ一覧から画像をユーザーに選択させ、拡大表示するようなWebページを、jQuery Mobileを用いて作っていきます。PhotoSwipeプラグインを利用した方法と、jQuery Mobile自身が備える「ポップアップウィジェット」を利用した方法を紹介します。PhotoSwipeプラグインを用いることにより、全画面表示した画像を左右フリックで切り替えるといった、よりスマートフォン的な操作方法を実現できます。一方、jQuery Mobileのポップアップウィジェットは単純なポップアップ表示ですが、jQuery Mobileがサポートする幅広い環境で動作するメリットがあります。

対象読者

  • jQuery Mobileに興味があり、活用してみたい方
  • HTMLが最低限記述できるものの、もう少しステップアップしてみたい方
  • スマートフォンサイトをお手軽に作りたい方
  • スマートフォンやタブレットが大好きな方

必要な環境

 jQuery Mobileは執筆時点の最新版である1.3.2を使用します。jQuery Mobileと組み合わせるjQueryは、jQuery MobileのWebページで推奨されている1.9.1を使用します。

 今回は以下の環境で動作を確認しています。

  • iOS 7.0.3
    • iPhone 5 32GB SoftBank版
    • Safari
  • Android 4.2.2
    • Xperia Z SO-02E
    • Google Chrome 30.0.1599.92

PhotoSwipeプラグインは画像の切り替えに対応

 PhotoSwipeプラグインは、http://www.photoswipe.com/においてMITライセンスで配布されています。指定された画像を選択した時に画面全体に画像を表示し、左右フリックや画面上のボタン操作で画像の切り替えが可能です。それでは、PhotoSwipeプラグインを利用した例を紹介していきます。

 最初にWebページの全コードをリスト1に示します。

[リスト1]PhotoSwipeプラグインを用いてクールに画像を表示するスマートフォンWebページ
(jqmobile_photoswipe.html)
<!DOCTYPE html>
<html>
<head>

<!-- 文字コード、viewportの設定 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />

<!-- jQuery、jQuery Mobileの導入 -->
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

<!-- PhotoSwipeの導入 ......(1) -->
<link href="photoswipe/photoswipe.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="photoswipe/lib/klass.min.js"></script>
<script type="text/javascript" src="photoswipe/code.photoswipe.jquery-3.0.5.min.js"></script>

<script>
/**
 * jQuery Mobileの初期化処理
 */
$(document).on("pageinit", function(event) {
    // PhotoSwipe対象のHTML要素を指定 ......(2)
    var myPhotoSwipe = $("ul.gallery a").photoSwipe({ enableMouseWheel: true , enableKeyboard: true });
    // リストの選択状態を解除させるコード ......(3)
    $("ul.gallery a").on("click", function(event){
        setTimeout(function(){
            $("ul.gallery li").removeClass("ui-btn-active");
        }, 100);
    });
});
</script>

<title>PhotoSwipeによる写真表示</title>
</head>
<body>

<!-- ページ -->
<div data-role="page">

  <!-- ヘッダー -->
  <header data-role="header" data-position="fixed">
    <h1>PhotoSwipe</h1>
  </header>

  <!-- コンテンツ本体 ......(4) -->
  <div data-role="content">
    <ul data-role="listview" class="gallery">
      <li>
        <a href="img/001.jpg" rel="external">
          <img alt="ヤギ" src="img/001_thumb.jpg"/>
          <h1>ヤギ</h1>
          <p>ヤギです...よね...多分...。</p>
        </a>
      </li>
      <li>
        <a href="img/002.jpg" rel="external">
          <img alt="Xperia" src="img/002_thumb.jpg"/>
          <h1>Xperia</h1>
          <p>Android 4.2アップデート記念。</p>
        </a>
      </li>
      <!-- 以下リストが続くが省略 -->
    </ul>
  </div>
</div>
</body>
</html>

 まず(1)で、PhotoSwipeを読み込む記述をHTMLのheadタグに追加します。PhotoSwipeは内部的に「klass.min.js」に依存しているため、そちらも併せて追加します。次に(2)において、jQuery Mobileのページ初期化イベントであるpageinitの実行時にPhotoSwipeの初期化処理を行うよう記述します。jQueryセレクタ$("ul.gallery a")で特定されるaタグに対して、href属性で指定された画像がPhotoSwipeで表示されます。

 PhotoSwipeにはさまざまなオプションがあり、photoSwipeメソッドの引数にJSON型式で指定可能です。オプションの詳細については、PhotoSwipeのREADMEを参照してください。

表1 PhotoSwipeオプションの一部
設定値 設定内容 デフォルト値
enableMouseWheel  マウスホイールによる画像切り替えの有効/無効 true
enableKeyboard キーボード操作による画像切り替えの有効/無効 true
captionAndToolbarHide タップ時に表示される画面上下のツールバーを隠すかどうか false
slideSpeed 左右スライドの速度 250

 また、リストを押下してPhotoSwipeを表示した時にリストの押下状態(青い表示)が元に戻らなくなる事象を回避するために、押下後一定時間で押下状態を強制的に解除する処理を(3)に追加しておきます。

 (4)のコンテンツ部はjQuery Mobileの一般的なリスト表示です。(2)で指定したjQueryセレクタ「$("ul.gallery a")」に対応するように記述します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
jQuery UI/プラグインの活用連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7511 2013/12/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング