CSS ピクセルとさまざまなモバイル画面適応の問題に対する解決策

CSS ピクセルとさまざまなモバイル画面適応の問題に対する解決策

ピクセル

解決

通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクトップによって設定された解像度を指します。ただ、LCD モニターが現在主流になっています。LCD の表示原理は CRT とは異なるため、デスクトップの解像度が物理的な解像度と一致している場合にのみ、表示効果が最適になります。そのため、デスクトップの解像度は、モニターの物理的な解像度とほぼ一致しています。

UI ドラフト ピクセル

UI ドラフトのピクセルは物理的なピクセルを指します。たとえば、750 ピクセルは、私たちが受け取った UI デザイン ドラフトの物理的なピクセルです。

フロントエンドピクセル

2 つの画面の論理ピクセルが同じであれば、表示効果は同じになります。 つまり、CSSの世界のpxは同じであり、同じ物理サイズの画面での表示効果は同じです。

では、実際に画面に表示されるとき、それらの関係はどのようなものになるのでしょうか?

下の図に示すように、Web ページ上の要素の CSS ピクセル (幅: 2 ピクセル、高さ: 2 ピクセル) を設定すると、dpr=1 のディスプレイでは最終的に 4 つの物理ピクセルを占有し、dpr=2 のディスプレイでは 16 の物理ピクセルを占有することになります。このことから、CSS ピクセルの物理的なサイズは異なる画面上で一貫していますが、1 つの CSS ピクセルに対応する物理ピクセルの数は異なることがわかります。

さまざまな画面に対応するRem適応ソリューション

<!-- mステーションモバイル端末適応js -->

  // 物理ピクセル幅 750 1rem=100px に適応   
  // clientWidth (実際の論理ピクセル) / 375 (参照ベンチマーク論理ピクセル) = fontSize (実際の 1rem ピクセル値) / 100 (参照 1rem 論理ピクセル値)
  ;(関数(win, doc){
    関数の変更(){
        doc.documentElement.style.fontSize=100*doc.documentElement.clientWidth/375+'px';
    }
    変化();
    win.addEventListener('resize', change, false);
  })(ウィンドウ、ドキュメント);
  // この方法で、異なる論理ピクセルでの 1rem の実際の値を計算できます。 // 実際の作業では、UI デザインの下書きの幅が 750px の場合、測定された幅を 200 で割る必要があります。
  // コンソールを開いて要素間の距離を確認すると、デザイン ドラフト上の距離の半分になっています。デザイン ドラフトの物理ピクセルは 2px で、論理ピクセルの 1px に相当します。
  // 当社の現在の設計案はすべて Blue Lake です。幅は標準 375 です。したがって、測定した幅を 100 で割るだけで、実際の幅が rem 単位で得られます。

  // 添付資料: もちろん他の適応スキームもありますが、REMスキームが採用されていない限り、REM原則は同じです。

Apple の携帯電話にはなぜ二重または三重の画像が必要なのでしょうか?

2倍スクリーンを例に挙げる

元の 2*2 ピクセル画像は 2 倍画面上の 4*4 ピクセルで構成されているため、描画する必要のあるピクセルは周囲の領域で同様のピクセルを探すことになり、ぼやけの問題が発生します。仕事で高精細な画像を表示するには、Apple の二重画像が一般的に使用されます。

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

<<:  GaussDB for MySQL パフォーマンス最適化の詳細な説明

>>:  vue3+vite プロジェクトで svg を使用する方法の詳細なグラフィック説明

推薦する

JS 関数とコンストラクタを簡単に理解する

目次1. 概要1.1 Functionコンストラクタを使用して関数を作成する1.2 機能と目的2. ...

MySQL データベースを最適化する 8 つの方法の詳細な説明 (必読の定番)

導入:インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質に...

Mysql 5.6.37 winx64 インストール デュアル バージョン mysql ノート

マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...

Alibaba Cloud Serverにプログラムをデプロイし、ドメイン名を使用して直接アクセスする方法の詳細な説明

何もすることがなかったので、学習用に最も安いAlibaba Cloudサーバーを購入しました。年間3...

HTML テーブルインライン形式の詳細な説明

インライン形式<colgroup>...</colgroup>属性名 属性値...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

Workermanはmysql接続プールのサンプルコードを書きます

まず、接続プールを使用する理由と、接続プールによってどのような問題が解決できるかを理解する必要があり...

スネークゲームを作るための Pygame コード

目次使用されるPygame関数スクリーンの作成ヘビの作成ヘビを動かすゲームオーバーの処理食事を増やす...

Linux (Centos7) に mysql8.0.18 をインストールするチュートリアル図

1 インストールリソースパッケージmysql-8.0.18-1.el7.x86_64.rpm-bun...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

OpenLayers 3 のベクターマップソースの読み込みの問題を解決する

1. ベクターマップベクター グラフィックスは直線と曲線を使用してグラフィックスを表します。これらの...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...

クラウドサーバーを購入し、Alibaba Cloud に Pagoda Panel をインストールする手順

アリババクラウドがサーバーを購入クラウドサーバーを購入し、サーバーバージョンとしてcentos 7....

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...