
こんにちは!やっと風邪に勝利した岩間です。
さて、今回と次回にかけて、設定したJavaScriptを紐解きながら解説していきます!
前回の記事をまだ読んでいない方は併せてどうぞ!
>>なるべく沢山のスマホ・タブレットで、快適に見られるレイアウトの実現(第1回/全3回)
表示領域をスマホごとに合わせる
○その1 ページ全体を画面に合わせる
ページ全体が縮小されてしまうため、スマホ用にViewportを設定します。
スマホごとに違う画面幅に合わせるため、meta要素を追加しました。
<meta name="viewport" c>width=device-widthで画面幅に合わせ、initial-scale=1でページの倍率を指定しています。
これで、スマホページでも綺麗に表示することができました!
○その2 タブレットだけ表示領域を固定する
タブレットでPCページを表示すると、一部のコンテンツが画面からはみ出てしまいました。PCページをタブレットの画面幅で表示するのは少し難しいようです・・・。
でも、崩れているのはタブレットだけなのでmeta要素自体は変えたくない!
何かいい方法はないかと調べてみると、要素の中身だけを切り替えられるコードを見つけました!
そのコードを参考に設定したJavaScriptを早速解説していきます。
今回の目的は、タブレットだけViewportを切り替えることです。
タブレットでは、PC表示でのコンテンツサイズに合わせて表示させたいと思います。
変数を作って必要なものをいれていく
まずは分岐させるのに必要な変数を設定していきます。
ここでの式は左辺と右辺は等しいという意味ではなくて、左辺に右辺を代入するという式なので注意が必要です!
var spWidth = '小さいスマホのサイズ';
var tbWidth = '大きいスマホのサイズ';
var maxWidth = 'タブレットのサイズ';
var spView = 'スマホで表示するための設定';
var tbView = 'タブレットで表示するための設定';
表示を切り替えるコードを書いていく
今回は、画面を横に倒したときにもjQueryが実行されるようにイベントを設定しました。
この中に、「もし○○の時△△を実行し、□□の時は××を実行する」という分岐を以下の内容で設定します。
- 画面幅がtbWidthより小さい時、ViewportをspViewにする
- 画面幅がmaxWidthより小さい時、ViewportをtbViewにする
$(window).on('orientationchange resize',function(){
if /* 1 */( tbWidth > screen.width ){
/* 処理 */$('meta[name=viewport]').attr('content',spView);
}
else if /* 2 */(maxWidth > screen.width){
/* 処理 */$('meta[name=viewport]').attr('content',tbView);
}
}).trigger('resize');実際に切り替えてみると、meta要素が書き換わって綺麗に表示できるようになりました!
○まだ不具合が・・・
スマホとタブレットで表示領域を切り替えたことによりどの端末でも綺麗に見られるようになったと思いきや、タブレットを横にしたときに余白ができてしまいました。
この余白はなんだ???
よく見てみると、タブレットを横にしたときは画面幅がコンテンツサイズより大きくなっていることに気がつきました!
確かにサイズを固定してたら拡大されないですよね・・・。盲点でした・・・。
一応綺麗に見えてはいるけれど、ちょっと気になります;
そこで、タブレットが横になったときはPCで見るのと同じ表示になるようにコードを追加してみました!
/*最後の分岐に追加*/
else if(maxWidth < screen.width ){
$('meta[name=viewport]').attr('content',spView);
}これでどんなスマホでもタブレットでも綺麗に表示できるようになりました!
恐らくもっと簡単かつ良い方法もあるかと思いますが、端末ごとに設定することで私にはわかりやすい書き方ができたと思います(^o^)
次回はAutoHeightの設定を、cssの設定も併せて解説していきます!
第1回:なるべく沢山のスマホ・タブレットで、快適に見られるレイアウトの実現(第1回/全3回)
第3回:なるべく沢山のスマホ・タブレットで、快適に見られるレイアウトの実現(第3回/全3回)

西村 力也
代表取締役
2002年からWeb制作・システム開発に従事。React、Next.js、TypeScriptを中心としたモダンなフロントエンド開発の専門家。AI検索最適化(AIO)の先駆者として、ChatGPT、Perplexity等のAI検索エンジン対応を推進。三重県津市を拠点に、東海地方の企業様のデジタル変革を支援しています。
関連記事

問い合わせ対応に追われていませんか?AIチャットボットでカスタマーサポートを自動化する方法
「営業時間外に問い合わせが来ても対応できない」「同じような質問に何度も答えるのが大変」「人手が足りなくて、お客様を待たせてしまう」こんな悩み、ありませんか?...

ホームページ制作、実は何度も打ち合わせするんです|三重県の企業が知っておきたい制作の裏側
「ホームページってすぐできるんじゃないの?」という誤解三重県で事業をされている経営者の方から、よくこんな声を聞きます。...

【コピペOK】HTMLとCSSで作る実用的なボタンデザイン集24選
Webサイトやアプリケーション開発において、ボタンデザインはユーザー体験を大きく左右する重要な要素です。本記事では、フロントエンド開発の現場で即座に使える24種類のボタンデザインを、8つのジャンル別にご紹介します。...