jQueryMobileでデバイスの向きを変えた際に画像サイズも変更 -orientationchange を使ってみた-

公開日: : jQueryMobile


端末が縦・横に変化した際に画像サイズを変えたいことがあったのでちょろっとjQueryMobileでやってみました。
※ちなみにmax-widthを使えば解決するケースが多いかと思います。

 前提

  • jQueryMobile1.0.1を使用(もちろんjQueryも)
  • imgタグにオリジナルの画像サイズをowidth、oheightとして付与。

以下みたいな感じ

<img id="img-view" src="sample.jpg" owidth=520 oheight=340>

 やったこと

やったことの流れは以下のとおりです。

  • orientationchangeイベントをbind

    • jQueryMobileでの端末の縦・横変化時のイベント
  • 検知したら画像のwidthとheightを変更

ソースにすると以下のような感じ。

(function( $, undefined ){
 $(window).bind('orientationchange', function(e){
    var max = $(this).width()-40; //余白をもたせている
    var w = $('.ui-page-active .img-view').attr('owidth');
    var h = $('.ui-page-active .img-view').attr('oheight');
    if (w > max && h > 0) {
     $('.ui-page-active .img-view').width(max).height(Math.round( (max/w) * h));
    }
 });
}( jQuery ));

[.ui-page-activeを指定している理由]
ajaxを使ってページ遷移しまくっている場合、imgタグが複数箇所存在してowidth、oheightで取得する値が変になるケースがある。
そこで、現在見ているページにある画像タグのowidth、oheightを取得したいために指定している。

[width()とheight()]
jQueryのwidth()で現在のウィンドウサイズを取得し、width(値)とheight(値)を使って画像のwidthとheightを変更している。

[おまけ]
上記で端末が横や縦になった際に画像をリサイズしてくれる。
それ以外にも、表示されている端末のウィンドウサイズにあわせて変更したいというケースもあるかもしれない。
そういうときは、pageshowなどをbindして同様の処理をしたら良い。

[追記]
最初に書きましたが、max-widthを使えばjavascriptを使わなくても解決するケースが多いかと思います。
今回のケースだと、色々と数値をいじれるところがミソになります。

広告

関連記事

no image

jQuery Mobileでミスしたこと -JSだけ最新にしてしまってレイアウト崩れたの巻-

* 前提(CDN先) jQuery Mobileを使う場合、cssを自前のサーバにおいて、jsはC

記事を読む

popup

jQuery Mobile1.2のPopupを試してみた -写真を表示-

jQuery Mobile1.2の「Popup」を試してみました。 他の機能である「Collaps

記事を読む

no image

jQuery Mobile導入手順 -はじめの一歩-

jQuery Mobileの1.0がリリースされ、利用したい方が増えていると思います。 最初に何を

記事を読む

datebox-date

jQueryMobileでカレンダー表示 -DateBoxプラグインの利用-

スマートフォン対応をしているとカレンダーの表示の仕方をスマートフォンらしくしたいことがあると思います

記事を読む

no image

リンク文字をタッチしても色が変わらない --webkit-tap-highlight-colorのメモ-

* 背景 jQuery Mobileを利用してスマートフォン対応をしたサイトにおいてリンク文字をタッ

記事を読む

no image

jQuery Mobile勉強会に参加してきた

-場所 --2012/07/19 at リクルートGINZA8ビル -講演者 --吉川 徹氏 詳細:

記事を読む

no image

jQuery Mobileでdata-role=headerを使うときの注意点 -勝手にタイトルが変更される件-

* 現象 +headタグでtitleタグで文字列(A)を記述している +data-role=he

記事を読む

list-normal

jQuery Mobileのリストの見た目をちょっとカスタマイズ -覚書-

jQuery Mobileを使えば簡単にスマートフォン対応できる言えば出来るのですが、少しでもカスタ

記事を読む

no image

jQueryMobileでタッチ(スワイプ)してページ遷移 -Paginationプラグインの利用-

スマートフォン対応をしていてタッチしてページ遷移させたいケースがあるかと思います。 そんな時に便利

記事を読む

no image

jQuery Mobileのバージョンアップではまった – pushStateの存在 –

jQuery Mobileをつかってスマートフォン対応をしたときにはまったこと。 * 前提

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑