jQueryMobileでデバイスの向きを変えた際に画像サイズも変更 -orientationchange を使ってみた-
公開日: : 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を使わなくても解決するケースが多いかと思います。
今回のケースだと、色々と数値をいじれるところがミソになります。
広告
関連記事
-
jQuery Mobileでミスしたこと -JSだけ最新にしてしまってレイアウト崩れたの巻-
* 前提(CDN先) jQuery Mobileを使う場合、cssを自前のサーバにおいて、jsはC
-
jQuery Mobile1.2のPopupを試してみた -写真を表示-
jQuery Mobile1.2の「Popup」を試してみました。 他の機能である「Collaps
-
jQuery Mobile導入手順 -はじめの一歩-
jQuery Mobileの1.0がリリースされ、利用したい方が増えていると思います。 最初に何を
-
jQueryMobileでカレンダー表示 -DateBoxプラグインの利用-
スマートフォン対応をしているとカレンダーの表示の仕方をスマートフォンらしくしたいことがあると思います
-
リンク文字をタッチしても色が変わらない --webkit-tap-highlight-colorのメモ-
* 背景 jQuery Mobileを利用してスマートフォン対応をしたサイトにおいてリンク文字をタッ
-
jQuery Mobile勉強会に参加してきた
-場所 --2012/07/19 at リクルートGINZA8ビル -講演者 --吉川 徹氏 詳細:
-
jQuery Mobileでdata-role=headerを使うときの注意点 -勝手にタイトルが変更される件-
* 現象 +headタグでtitleタグで文字列(A)を記述している +data-role=he
-
jQuery Mobileのリストの見た目をちょっとカスタマイズ -覚書-
jQuery Mobileを使えば簡単にスマートフォン対応できる言えば出来るのですが、少しでもカスタ
-
jQueryMobileでタッチ(スワイプ)してページ遷移 -Paginationプラグインの利用-
スマートフォン対応をしていてタッチしてページ遷移させたいケースがあるかと思います。 そんな時に便利
-
jQuery Mobileのバージョンアップではまった – pushStateの存在 –
jQuery Mobileをつかってスマートフォン対応をしたときにはまったこと。 * 前提