Remレイアウトを使用して適応性を実現する

Remレイアウトを使用して適応性を実現する

以前、モバイル適応に関する記事を書きました。非常に長く、内容が多すぎて読みづらいものでした。そこで、よりわかりやすいバージョンに書き直しました。

なぜ適応するのか?

たとえば、モバイル ページの場合、デザイナーは幅 750 のビジュアル ドラフト キャンバスを提供し、ビジュアル ドラフト内の黄色のブロックのサイズは 702 x 300 で、アートボードの中央に配置されます。どのデバイスでも表示比率がビジュアル ドラフトと同じになり、レイアウト ビューポートの幅に応じて比例して拡大縮小されることが期待されます。

モバイル デバイスでは、通常、レイアウト ビューポートの幅 = デバイスの幅、つまりコンテンツが表示される領域がデバイス画面内になるように設定します。

<meta name="viewport" content="width=デバイス幅、初期スケール=1.0">

しかし、デバイスによって幅が異なるため、レイアウト ビューポートの幅も異なります。例えば、iPhone 6のレイアウトビューポートの幅は375、iPhone6 Plusのレイアウトビューポートの幅は414です。

キャンバス幅が 750 のビジュアル ドラフトを、レイアウト ビューポート幅が 375 の iPhone 6 デバイスに表示する場合、次のようにビジュアル ドラフト内の要素のピクセル値を 2 で割ることができます。

。箱{
    幅: 351ピクセル;
    高さ: 150px;
    上マージン: 40px;
    背景: #F5A623;
}

iPhone 6 でのプレゼンテーションは右側に示すようになり、左側のビジュアル ドラフトのレイアウトと一致しています。

しかし、同じコードが iPhone 6 Plus では異なって表示され、両側の間隔が大きくなっています。 iPhone 6 Plus のレイアウト ビューポートは iPhone 6 よりも幅が広いため、長方形のボックスのサイズは変更されず、315 x 150 のままです。

キャンバス幅が 750 のビジュアルを、レイアウト ビューポート幅が 414 の iPhone 6 Plus デバイスでレンダリングする場合、ビジュアル内の要素のピクセル値を (750 / 414) で比例的に分割できます。つまり、次のようになります。

。箱{
    幅: 387.5px;
    高さ: 165.6px;
    上マージン: 44.2px;
    背景: #F5A623;
}

ページのプレゼンテーション効果もビジュアルドラフトと同じになります。

デバイス幅が異なる(ビューポート幅が異なる)ページでビジュアルドラフトと同じ効果を実現するには、異なる CSS ピクセル値を記述する必要があります。 私たちの目標は、同じ CSS コードを使用して、さまざまな幅のデバイスでビジュアル ドラフトと同じ効果を実現することです。簡単に言えば、さまざまなデバイスに適応した効果を実現するには、ビジュアル ドラフト内の要素とキャンバスのサイズ比をさまざまなデバイスで比例して拡大縮小する必要があります。

Remレイアウトを使用して適応問題を解決する

レイアウト ビューポートの幅が変わったときに、同じ CSS コードを使用して、要素のサイズをビジュアル ドラフトの比率に合わせて比例的に拡大縮小するにはどうすればよいですか? CSS の相対単位 rem の特性を組み合わせます。rem 単位のピクセル値は、ルート要素 (HTML 要素) のフォント サイズに相対的です。たとえば、HTML のフォント サイズが 100 ピクセルで、CSS スタイルで要素の幅が 2rem に設定されている場合、ページ上のこの要素の幅は 200 ピクセルになります。

ビジュアル ドラフト内の要素の比例スケーリングに従って、次のような関係を見つけることができます。

ビジュアル要素のサイズ / ビジュアルキャンバスの幅 = (rem 値 * HTML 要素のフォントサイズ) / レイアウトビューポートの幅 = rem 値 * (HTML 要素のフォントサイズ / レイアウトビューポートの幅)
= rem 値 / (レイアウト ビューポートの幅 / HTML 要素のフォント サイズ)

もし:

レイアウトビューポートの幅/HTML要素のフォントサイズ = 固定値 N

同じ CSS コードを使用して、あらゆるデバイスへの適応性を実現できます。

rem値 = N * (デザイン要素のサイズ / デザインキャンバスの幅)

したがって、自己適応を実現するには、N 値を決定し、次の 2 つの手順を完了するだけで済みます。

  • ステップ1: HTML要素のフォントサイズを動的に設定する = レイアウトビューポートの幅 / N
  • ステップ2:ビジュアルドラフトからエクスポートされた要素のCSSピクセル値をrem単位に変換します:rem値=N *(ビジュアルドラフト要素サイズ/ビジュアルドラフトキャンバス幅)

ドラフト キャンバスの幅が 750 の場合、rem 値の計算を容易にするために、N = 7.5 に設定することができます。この方法では、ドラフトのサイズ値を 100 で割るだけで、CSS ピクセル値が rem 単位で取得されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  垂直グリッドと漸進的な行間隔の例

>>:  開発をスピードアップできる VueUse ライブラリ 5 つ (まとめ)

推薦する

React ルーティング リンク構成の詳細

1. 属性へのリンク(1)ルーティングパスを配置する(2)指定された形式でオブジェクトを配置する{パ...

MySQLインデックスの詳細

1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...

JavaScript の基本演算子

目次1. オペレーター要約する1. オペレーター演算子は、代入、比較、算術演算などの機能を実装するた...

DockerでGit環境を構築して構成するプロセス

DockerでGit環境を構成する仕事上、Docker 環境で GitLab リポジトリを操作する必...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

mysql8.0.19 でパスワードを忘れた場合の完璧な解決策

おすすめの読み物: MySQL 8.0.19 は、間違ったパスワードを 3 回入力するとアカウント ...

スワイパープラグインを使用して Vue でカルーセルを実装する例

目次vue - スワイパープラグインを使用してカルーセルを実装するカルーセルのバグを解決するには、w...

CSSは高さと幅を固定した要素の比例表示効果を実現します

padding-top パーセンテージを使用すると、固定幅と比例した高さの表示を実現できます。現在の...

jsを使用して簡単な抽選機能を実現する

この記事では、参考までに、簡単な抽選機能を実装するためのjsの具体的なコードを共有します。具体的な内...

MySQLは2つの日付間の日数、月数、年数を計算します

MySQL 組み込みの日付関数 TIMESTAMPDIFF は、2 つの日付間の秒数、分数、時間数、...

Linux ディスクのシーケンシャル書き込みとランダム書き込みの方法

1. はじめに● ランダム書き込みではヘッドがトラックを頻繁に変更するため、効率が大幅に低下します。...

Vue+js はビデオのフェードインとフェードアウト効果を実現します

Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...

テキストの円形スクロールアニメーションを実装するミニプログラム

この記事では、参考までに、テキストループスクロールを実現するアプレットの具体的なコードを例を挙げて紹...

HTMLの基本概念の詳細な説明

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...