【JavaScript】特定のpx幅以下のスマートフォンのviewport画面幅を固定する方法【レスポンシブ対応】

幅の狭いスマートフォンでも表示が破綻しない方法のサムネイル
SIM

レスポンシブで幅の狭いスマートフォンでも表示が破綻しない方法を紹介します。

たとえば、レスポンシブ対応で375px幅まではキレイに表示されるが、それより狭い幅のスマホでレイアウトや改行位置が破綻してお困りの方もいると思います。

この記事では、幅の狭いスマートフォンでも表示が破綻しない方法を紹介します。

目次

方法の概要

この「特定のpx幅より狭いスマートフォンのviewport画面幅を固定する方法」の概要は下記のとおりです。

方法の概要
  • 前提条件:375px幅(iPhone SE)までは表示が破綻しない
  • 方法の概要:375px幅より狭いスマートフォンでは、375px幅を縮小した表示に固定する。
  • 375px幅はあくまでも1例に過ぎず、数字を変えれば変更できます。

実際の見え方は下の図のとおりで、375px以下の表示幅でも全体的に縮小されて表示されるため、改行位置も要素の縦横比も375px幅のものと変わりません。全体的に小さく見えるだけです。

表示幅の狭いスマートフォンでの表示を示した図解

特定のpx幅より狭いスマートフォンのviewport画面幅を固定する方法

SIM

それでは実際のコードを紹介していきます。

具体的な方法は非常に簡単で、下記のHTMLとJavaScriptをコピペすれば実装できます。

HTML

HTMLまたはWordPressのheadタグ内に以下のmetaタグをコピペして下さい。

<meta name="viewport" content="width=device-width, initial-scale=1.0">

JavaScript

JavaScriptファイルに以下のコードをコピペして下さい。

// レスポンシブの375px未満のviewport画面幅を固定
!(function () {
  const viewport = document.querySelector('meta[name="viewport"]');
  function switchViewport() {
    const value =
      window.outerWidth > 375
        ? 'width=device-width,initial-scale=1'
        : 'width=375';
    if (viewport.getAttribute('content') !== value) {
      viewport.setAttribute('content', value);
    }
  }
  addEventListener('resize', switchViewport, false);
  switchViewport();
})();

コードの6行目8行目に375と表示幅が書かれていますが、この数字をご希望のコンテンツ幅に変更して下さい。例えば、360に変更すれば、360px以下でviewport画面幅を固定されます。

さいごに

以上、簡単ですが、特定の幅より狭いviewport画面幅を固定する方法を紹介しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次