スマートフォンとタブレットで画面幅に応じてviewport指定を切り替えるためのJSです。
viewportを指定すれば良いわけですが、スマートフォンも巻き添えで縮小表示になってしまっては困るので、スマートフォンかタブレットでviewportを変えたいということがあります。
きちんとユーザエージェントを取得して出し分けした方が良いとは思いますが、とりあえず画面幅でviewportを出し分ける時のJavaScriptはこんな感じです。
460px以下でスマートフォン表示、PCでのコンテンツ領域の幅1280pxの場合です。
プレーンなJS
<script>
function viewportSet() {
var wsw = window.screen.width;
if (wsw <= 460) {
// デバイス横幅460以下
document.querySelector("meta[name='viewport']").setAttribute("content", "width=device-width,initial-scale=1.0,viewport-fit=cover");
} else {
// それ以外
document.querySelector("meta[name='viewport']").setAttribute("content", "width=1280");
}
}
window.addEventListener("DOMContentLoaded", viewportSet, false);
window.addEventListener("resize", viewportSet, false);
window.addEventListener("orientationchange", viewportSet, false);
</script>
jQueryを使用した場合
<script>
function viewportSet() {
var wsw = window.screen.width;
if (wsw <= 460) {
// デバイス横幅460px以下
$("meta[name='viewport']").attr("content", "width=device-width,initial-scale=1.0,viewport-fit=cover");
} else {
// それ以外
$("meta[name='viewport']").attr("content", "width=1280");
}
}
viewportSet(); // 必要な場合は $(document).ready()使う
$(window).on("resize orientationchange", viewportSet);
</script>
metaのviewportの値を動的に変更するJavaScript
画面の横幅に応じてmeta viewportの値を動的に変更するjs(要jquery)
prependやappendでmetaタグごとhead内に挿入、resize・orientationchange時にはremoveで削除してから挿入し直すのもありです。
タブレットでPC版の縮小表示をするようにviewportを切り替える方法
Remove and append viewport using jQuery