検索

Web ページをデザインするときに、次のメタ タグ行が追加されます:

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

読みやすいテキストを含む Web ページをモバイル画面に表示できるようにするためですが、この行が何を言っているかを注意深く検討したことはありませんでした。今日は時間をかけてテストして記録しました。

要素 1: devicePixelRatio を使用して px サイズを調整する

Web ページの実際の表示は CSS ピクセル (px) に基づいています。この CSS ピクセルは実際のハードウェア ピクセルではありません。この比率が 2 の場合、これは次のことを意味します。現在のデバイスでは、ピクセルを表すために 2×2 ピクセルが使用されます。この比率により、同じピクセル数の単語が、小さすぎて読み取れなくなることなく、異なるサイズのデバイス上で適切なサイズで表示されます。以下は、さまざまなデバイスまたはさまざまなディスプレイ比率で得られた devicePixelRatio 比率です:

裝置 解析度 像素密度 devicePixelRatio 值
OPPA A31 720×1600 270PPI 2
Google Pixel 8a 1080×2400 430PPI 2.625(Chrome)
Google Pixel 8a 1080×2400 430PPI 2.6087(Firefox)
Windows 11 筆電 1920×1080 N/A 1
Windows 11 13.3 吋筆電 顯示比例 125% 1920×1200 N/A 1.25

同じデバイスであっても、ブラウザが異なると表示がこの比率に基づいて行われ、ピクセルのサイズが示されることがわかります。

要素 2: ビューポートのサイズを設定する

いわゆるビューポートは、Web ページの表示に使用できるブラウザ ウィンドウ内の領域を指します。このサイズも手順 1 で取得したピクセルで測定されます。携帯電話などのデバイスにはウィンドウがないため、ビューポートは仮想の仮想ウィンドウです。

ビューポートの設定で最も重要なのは幅で、1 ~ 10000 の範囲で設定できます。Web ページ要素の配置、テキストの折り返しなどに影響します。モバイル デバイスで、ビューポートを画面と同じ幅に設定する場合は、デバイスの実際のピクセル幅を devicePixelRatio で除算してビューポートの幅をピクセル単位で取得するか、それを device-width に直接設定することができます。 Web ページの幅がデバイスの画面の幅と一致するようにシステムが計算します。ビューポートが設定されていない場合、デフォルト値は 980 です。

JavaScript では、次の方法で画面とビューポートの幅をピクセル単位で取得できます。

屬性 說明
window.innerWidth viewport 的寬度
window.screen.width 裝置的螢幕寬度

要素 3: スケーリング率

ページを表示するとき、ユーザーはビューポート設定の初期スケールで、ページが最初に読み込まれた後にズーム率 (0.1 ~ 10.0) を設定します。設定されていない場合、ブラウザはデフォルトで、ページの水平方向のコンテンツ全体を表示できる最大の比率に自動的に拡大縮小します。

前に述べたように、ビューポートが設定されていない場合、デフォルトの幅は 980px になります。先ほど見た Google Pixel 8A の Firefox を例にとると、画面の幅は 1080/2.6087 = 414px となり、ブラウザーはWeb ページの水平方向のコンテンツを完全に表示するには、Web ページを 414/ 980 = 42.2% に縮小する必要があるため、フォントが小さすぎて読めなくなります。

必要に応じて、ビューポートで最小スケールを設定して、ユーザーがズームインできる最小ズーム倍率を制限することもできます。デフォルトは 0.1 です。 Web ページの水平方向のコンテンツを完全に表示するための最大ズーム率が、minimum-scale で設定された倍数よりも大きい場合、最小スケールの設定が置き換えられます。つまり、ズーム率は、水平方向のコンテンツが表示されるまでしか下げることができません。ウェブページを表示することができます。また、maximum-scale を設定して最大倍数を制限することもできます。デフォルトは 10 です。または、user-scalable を 1/0 または yes/no に設定することで、ユーザーがズームできるかどうかをさらに制限できます。

JavaScript では、次のように現在のページのズーム率を取得できます:

屬性 說明
window.visualViewport.scale viewport 目前的縮放倍數

実測値

以下では、実際のテストに次の Web ページを使用します:

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

コンピューター上の Firefox

コンピューター上の Firefox は次のように表示されます:

HTML meta 標籤中 viewport 的設定

ビューポートの幅が現在のブラウザウィンドウの幅646pxになっていることがわかります。ビューポートの設定を削除しても表示結果は変わりません。たとえば、ビューポートの幅をウィンドウよりも意図的に広く設定した場合:


  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <script>
    window.addEventListener('load', function() {
      document.getElementById('devicePixelRatio').textContent = window.devicePixelRatio;
      document.getElementById('screenWidth').textContent = window.screen.width;
      document.getElementById('innerWidth').textContent = window.innerWidth;

      // 取得並顯示目前的縮放倍數
      function updateScale() {
        const currentScale = window.visualViewport ? window.visualViewport.scale : '不支援';
        document.getElementById('currentScale').textContent = currentScale;
      }

      // 初始化顯示
      updateScale();

      // 監聽縮放變化
      if (window.visualViewport) {
        window.visualViewport.addEventListener('resize', updateScale);
      }
    });
  </script>


  1
  2
  3
  4
  5
  6
  7
  8

  
window.devicePixelRatio =
window.screen.width =
window.innerWidth =
目前縮放倍數 =

ビューポートの実際の値には影響しません。つまり、一般的なコンピュータのブラウザでは、ビューポートが設定されているかどうかに違いはありません。

モバイル版Firefox

ビューポートが設定されていない場合は、先ほどの HTML コンテンツのビューポート設定をアノテーションに変更します:

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

携帯電話の Firefox は次のように表示されます:

HTML meta 標籤中 viewport 的設定

縮小された部分を拡大すると、次のようになります。

HTML meta 標籤中 viewport 的設定

デフォルトのビューポート幅は980であるため、Webページの水平方向のコンテンツを完全に表示するために、Webページの水平方向のコンテンツを表示するために自動的に0.4224倍に縮小されます。この倍数は最小スケールのデフォルト値である 0.1 より大きく、ユーザーが自分で表示を縮小しても、最大 0.4224 倍までしか表示を縮小できません。

ビューポートを画面と同じ幅に設定します

ビューポート設定を元に戻す場合:

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

次のような画面が表示されます:

HTML meta 標籤中 viewport 的設定

ビューポートの幅 (window.innerWidth) とデバイス画面の幅 (window.screen.width) が同じで、どちらも 414 ピクセルであることがわかります。Web ページはこの幅で表示されます。ズーム倍率は 1 です。 OK 表示された Web ページのコンテンツをはっきりと読みます。これは、Web ページ上に水平方向のコンテンツを表示できる最大ズーム倍率であるため、ユーザーはページを最小 1 倍までしかズームできないデフォルトの最小スケールも置き換えられます。

次のように、デフォルトのズーム係数 1 を維持し、ビューポートの幅を設定しない場合:

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

実際の結果は、幅を device-width に設定した場合と同じになります。

ビューポートの幅を意図的に設定する

ビューポートの幅を意図的に 980 に設定した場合:

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

は次のように表示されます:

HTML meta 標籤中 viewport 的設定

ビューポートの幅が画面よりも広くなったので、配置時に画面外にはみ出してしまいますが、実際の表示結果からも画面幅が確かに980であることがわかります。

次のように、意図的にビューポートの幅を画面よりも狭く設定した場合:

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

ブラウザは画面の幅をビューポートの最小幅として使用するため、表示結果は幅を device-width に設定した場合と同じになります。

HTML meta 標籤中 viewport 的設定

次のようにビューポートの幅のみを設定し、初期スケールは設定しない場合:


  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <script>
    window.addEventListener('load', function() {
      document.getElementById('devicePixelRatio').textContent = window.devicePixelRatio;
      document.getElementById('screenWidth').textContent = window.screen.width;
      document.getElementById('innerWidth').textContent = window.innerWidth;

      // 取得並顯示目前的縮放倍數
      function updateScale() {
        const currentScale = window.visualViewport ? window.visualViewport.scale : '不支援';
        document.getElementById('currentScale').textContent = currentScale;
      }

      // 初始化顯示
      updateScale();

      // 監聽縮放變化
      if (window.visualViewport) {
        window.visualViewport.addEventListener('resize', updateScale);
      }
    });
  </script>


  1
  2
  3
  4
  5
  6
  7
  8

  
window.devicePixelRatio =
window.screen.width =
window.innerWidth =
目前縮放倍數 =

開始ズーム係数として引き続き 1.0 を使用します。

開始倍数を 1 より大きく設定します

ズーム率を変更する場合は、Web ページが最初に読み込まれた後に、指定したズーム率を使用できます。次に例を示します。

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

結果が 3 倍に拡大されて表示されます:

HTML meta 標籤中 viewport 的設定

Web ページの元のズーム率が新しく設定されたズーム範囲内にある場合でも、初期スケールは Web ページが初めて読み込まれるときにのみ有効であることに注意してください。 、元のズーム率が維持されます。したがって、新しいプライバシー ページを開いてより正確にテストすることをお勧めします。そうしないと、初期スケールを変更しても表示率が変わらない可能性があります。

ユーザーに Web ページを一定の倍率で表示させるだけの場合は、最小スケールを設定できますが、Web ページのコンテンツが最初から拡大されている場合は、これがより適切です。

開始倍数を 1 未満に設定します

Initial-scale を 1 未満に設定することもできます。つまり、表示が縮小されます。ただし、ビューポートの幅が画面の幅よりも小さくなるように比例的に縮小すると、ブラウザーでのみ許可されるルールに違反します。 Web ページの完全な水平方向のコンテンツを表示できる最小サイズに縮小されると、現在設定されているビューポートの幅が自動的に縮小率で除算され、最小倍数に縮小されたときに Web ページが完全な水平方向のコンテンツを維持できるようになります。 。たとえば、0.5 に設定した場合:

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

はビューポートの幅を 414/0.5=828px に変更します:

HTML meta 標籤中 viewport 的設定

ズームインして詳細データを表示します:

HTML meta 標籤中 viewport 的設定

最初にビューポートの幅を十分に広く設定した場合、メタ タグの設定は維持されます。例:

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

結果は次のとおりです:

HTML meta 標籤中 viewport 的設定

幅が変更されていないことがわかります:

HTML meta 標籤中 viewport 的設定

写真の展示

Web ページに画像を配置すると、画像の解像度は px 単位で解釈されるため、devicePixelRatio が 2 のデバイスでは 200×200 の画像が 400×400 の物理ピクセルで表示されます。たとえば、先ほど Web ページの最後に画像を追加しました:

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

これは 584×604 サイズの画像です:

HTML meta 標籤中 viewport 的設定

Web ページには次のように結果が表示されます:

HTML meta 標籤中 viewport 的設定

画像の幅が広いため、画面の境界を超えていることがわかりますが、ページ全体は依然としてビューポートで設定された幅に従って配置されているため、ボックス番号 4 は 2 列目に押し込まれています。この場合、ユーザーが縮小できる係数は、次のように、initial-scale で設定された 1.0 よりも小さく、完全に表示できる画像の幅と同じくらい小さくすることができます。

HTML meta 標籤中 viewport 的設定

上の図では、0.749倍に減少しています。

意図的にビューポートの幅を画像と同じ幅に設定した場合:

HTML meta 標籤中 viewport 的設定

上の 2 つの四角形 4 と 5 が最初の列にランク付けされていることがわかります。これは、ビューポートの設定が広くなったためです。

以上がHTMLメタタグでのビューポート設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

私はリリースがないように感じます:正気な展開への旅私はリリースがないように感じます:正気な展開への旅Apr 23, 2025 am 09:19 AM

馬鹿のように展開することは、展開に使用するツールと複雑さの報酬と複雑さの減少との間の不一致になります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)