タブレット向けサイトのサイズがうまく出来ないときの対処法

この1年、タブレット向けのサイトを作る機会が増えてきたので実際の解像度とブラウザーの表示サイズが異なることで起こる問題の対処法をまとめました。

ランドスケープ表示とポートレート表示、双方できれいなレイアウトで見せたいとき

ターゲットとするタブレットのアスペクト値によって多少変わりますが、CSS3のmediaqueriesを使い、2サイズをだし分けるのが最も簡単で失敗しない方法だと思います。JavaScriptで回転した際にviewportを書き直してもよいのですが、端末によって挙動や動きが異なる場合が多いので、mediaqueriesなどプログラムをなるべく使わない方法でレイアウトを変更するのが得策。
書き方は

@media screen and (max-width: 820px) {/*820pxまでのサイズのとき*/body{}...}
@media screen and (min-width: 820px) {/*820px以上のサイズのとき*/body{}...}

といった書き方になります。

実際の解像度で作ったところ、拡大表示されてしまうとき

viewportをwidth=device-widthで設定したにもかかわらず、拡大表示される場合があります。
その場合はinitial-scaleを1以下の数字にして縮小表示させることでタブレットのサイズに合わせます。
たとえば
<meta name=”viewportcontent=”width=device-width, initial-scale=0.66,minimum-scale=0.66,maximum-scale=2” />
といった書き方。

微妙に横幅が大きくなり、スクロールしてしまうとき

viewportやmediaqueriesを使い、サイズを合わせたものの、微妙に幅が合わず、スクロールが出てしまうときはCSSでbodyや一番外側のブロック要素にoverflow-x:hiddenの設定を追加します。
そもそもの改善にはなりませんが、横スクロールしなくなり、ユーザビリティが多少改善されます。

リキッドレイアウトを活用して様々なサイズに対応させる。

スマートフォンやタブレットでは出来る限り画面サイズ幅いっぱいにコンテンツを表示させたいので、幅指定を100%にすることを前提に、スマートフォンとタブレットでのコンテンツ表示を共有する場合やレスポンシブデザインを行う場合にはmediaqueriesを使い、全体幅とブロック要素の回り込み、表示非表示を制御します。

アドレスバーを非表示にする+ひと工夫

スマートフォンでもよく使われる方法ですが、JavaScriptを使い、アドレスバーを消すことで画面の高さーステータスバーの高さをコンテンツに当てることが出来ます。ランドスケープの場合ファーストビューの領域がアドレスバーで削られてしまうときの弊害が大きいので下のようなスクリプト(jQuery)を追加することで対処します。

function onloadpage(){
	setTimeout(function(){
	var h = $("body").scrollTop();
	if(h==0){
	setTimeout(function(){ window.scrollTo(0,1); },110);
	setTimeout(function(){ window.scrollTo(0,0); },111);
	}
	},100);
}

読み込み中にユーザーがスクロールしているときには動作しないよう、スクロールを検知するようにしています。
気になるところはご指摘いただければ対応します。また何かわかれば追記します。

タブレットやスマートフォン向けサイトを画面サイズに合わせてviewportを変える際のTips

タブレットやスマートフォン向けのサイトを作っているときにぶち当たる問題が端末の画面に対するデザインのサイズ設定。

デザインもリキッドレイアウトをメインにしつつブロック要素で構成していたりすると画面を回転させたとき、幅が可変にならず右に余白が。。。。といったことがあったのでその対処法も少しばかり載せておく。

一般的に画面が回転するとそれに応じてブラウザの縦、横幅のサイズも入れ替わるはずなのだが、一部には入れ替わらないものがあり、そのときの対処を考えるのに無駄に時間がかかったりしてしまう。

自分がいろいろ探して見た結果、回転したときの角度を取得してそれに応じて画面幅をviewportにJavaScriptで振り分ける方法が比較的簡単に適応できる方法だとわかりました。

JavaScriptで window.orientation を使うと角度が取得できる。

自分が検証に使った端末は横長のときに0度or180度、
縦長のとき90度、-90度と表示されていたので、
縦横が入れ替わらない場合の設定は(jQuery使用)

var orientation = window.orientation;
//角度の取得

if((orientation == 0)||(orientation == 180)){
//横長のときの設定
var hscale = $(window).width();
var wscale = $(window).height();
}else{
//縦長のときの設定
var wscale = $(window).width();
var hscale = $(window).height();
}
var viewport = $(‘meta[name=”viewport”]’);
$(全体幅を指定している要素).css({width:wscale});
viewport.attr(‘content’, ‘width=’+wscale+’, initial-scale=1, maximum-scale=1′);

といった感じで設定。

よりシームレスにするには画面幅に応じていくつかレイアウトデザイン(max-width?など)を定めた上で行うと効果的。

未だ少し理解できていないAndroid OS2.Xと3.Xのブラウザのviewport周りの挙動についてわかり次第またかきます。

今年はタブレット+電子書籍が一般化なのか?


今月から電子書籍に関わる仕事をしていることはさておき、
電子書籍についていろいろ調べてみたのでメモ書き。
昨年から出てきたタブレットや電子書籍サービスは今年からいよいよ本格的に一般化していく予感。
実際に使ってみるとタブレットで使っているため、それさえ持っていれば複数の書籍を1端末でもっていける手軽さやしおり機能があるので途中から読み直せるなど、実際の書籍より使いやすいメリットがある。
Amazonで電子書籍について調べる
電子書籍はネットを介し、パソコンやモバイル端末、タブレット端末、専用端末などを使い、書籍データを購入して閲覧する方式ものがほとんどで、閲覧方法はパソコンやiPadやGalaxy Tabなどにアプリケーションをダウンロードして使うもの、KindleやReaderなど専用端末を使うものなどがある。
可読性は専用端末がバックライトが眩しいことがなく読書を普段する人にとっては使いやすいかもしれないが、あまり普段から読書をしない人にはさまざまなアプリケーションが扱えるタブレットがおすすめ。
専用端末は国内メーカーの場合は単行本が多いためかそれにあわせ小さいサイズのものが用意されているけれど、どれにするか迷う場合は、実際に店頭で使ってみて、

  1. 画面で読みたいものが読めるか
  2. (持って使う場合は)片手でもつことができるか
  3. 使いたい電子書籍サービスが対応しているか
  4. ケースやカバーなど周辺アクセサリーはあるか
  5. 端末で読書以外に使うことがあるか

などをチェックしてみると選択肢が絞れるかもしれない。
Amazonで「電子書籍」端末を検索
書籍サービスはサービスによって取り扱っている出版社やジャンルなどが違うのでこれからという人はそのサービスが自分の持つ、持ちたい端末で使えるかを事前にチェックしておきたい。また書籍を購入後、再ダウンロード期間が決まっている場合や複数の端末で閲覧できない場合もあるのでご注意を。
自ら書籍を電子書籍にしたい場合はAmazonで「自炊」を検索するといろいろ出てきます。
自分も挑戦してみようかと。。。

タッチパッドとしても使えるタブレット wacom BAMBOO




今まで9年間使っていたタブレットもぼろぼろになってきたので、新しく新調しました。
このタブレット、昔のものに比べて操作感がよくなったのはもちろんなのですが、タッチパッドとしても操作できるのがいい。
2点センサーなので最新のMacBookなどのようにはいきませんが、ノートパソコンよりも大きなタッチバッドはなかなか楽しいです。
タッチペンはデフォルトのペン先で鉛筆のようなタッチ。かきやすかったです。
元々グラフィックのためのタブレットなので週末はタッチペンとプリンターとともに過ごします。印刷はやっぱり光沢紙でないといい色が出ない・・・
Wacom Bamboo CTH-460/K0