モバイルウェブページのサイズ調整を実装する方法

モバイルウェブページのサイズ調整を実装する方法

ようやく手元のプロジェクトが終了し、行方不明だった人たちが戻ってきました!プロジェクトを進める過程で、考えるべき点が数多くありましたので、簡単にお話ししたいと思います。 最初に遭遇する問題は、Web ページ サイズの適応の問題です。

最も一般的に使用される方法は次のとおりです。

• まず、ページ サイズは画面からはみ出さずに画面いっぱいに表示される必要があります。 html <head> タグに viewport を追加するだけです (以下を参照)。パラメータは、ページ幅 = 画面幅、最大および最小の拡大縮小率はどちらも 1、ユーザーは拡大または縮小できないことを表します。

XML/HTML コードコンテンツをクリップボードにコピー
  1. <メタ  name = "ビューポート"  コンテンツ= "幅=デバイス幅、最大スケール=1.0、最小スケール=1.0、ユーザースケーラブル=いいえ" >   

• パーセンテージの適応: 長さの単位をパーセンテージに変換して、要素の長さと幅が異なる幅で変化するようにします。

利点: 幅間のシームレスな接続と、比較的便利な操作。

デメリット: フォント サイズを調整するには、別の一連の適応メソッドが必要です。画面の幅が 700 ピクセルを超える場合、パーセンテージに基づいていると要素が大きくなりすぎて、調整が難しくなります。

•Rem と em の適応: メディア クエリ メソッドを使用して、さまざまな画面幅での <html> または <body> のフォント サイズを決定します。次に、適応性を実現するために、単位として px ではなく rem と em を使用します。

利点: さまざまな画面幅に応じて設定できるため、画面が大きすぎる場合に前述の比率の問題を完全に解決できます。フォントサイズも問題ありません。

デメリット: 幅の範囲に応じて設定され、シームレスな変換を実現できません。

--------------------------------------------------------------------------------

これらの互換性方法にはそれぞれ長所と短所があり、どれも完璧ではありません。短所を回避しながら長所を組み合わせるにはどうすればよいでしょうか。

Taobao の適応方式を参考にすると、偶然、ページ <html> のフォントサイズが画面の幅に応じて自動的に調整され、画面の幅と設定されたフォントサイズの商が一定であることを発見しました。

つまり、JS を使用して画面の幅を取得し、それを固定比率に従って縮小し、それを rem の単位長さとして使用して適応を実現するのだと思います。

これはあらゆる利点を備えた解決策ではないでしょうか? ?ちょっと興奮させてください(☆_☆)

--------------------------------------------------------------------------------

JS コードは非常に簡単に記述でき、rem 設定を使用してシームレスな接続を実現できないという問題を完全に解決します。

しかし、モバイル側でテストした後、問題が発生しました。モバイル側の Safari は、HTML が読み込まれる前に JS を超高速で実行しました。ページがビューポートに応じて幅を設定する前に、JS は間違った幅を読み取り、要素が以前の 0^0 の 2 倍の大きさになりました。この問題を解決するには、setTimeout() が必要でした。

--------------------------------------------------------------------------------

最終コード

JavaScriptコードコンテンツをクリップボードにコピー
  1. ゼプト(関数($){
  2.      var win = ウィンドウ、
  3. doc = ドキュメント;
  4.   
  5.     関数setFontSize() {
  6.          var winWidth = $(window).width();
  7.          // 幅を640以上に制限する  
  8.          varサイズ = (winWidth / 640) * 100;
  9. doc.documentElement.style.fontSize = (サイズ < 100 ? サイズ : 100) + 'px' ;
  10. };
  11.        
  12.      //HTMLが完全に読み込まれていない場合は実行を防止し、正しいページ幅を確保します  
  13. setTimeout(関数() {
  14.          // 初期化  
  15. フォントサイズを設定します。
  16.            
  17. }, 200);
  18.     
  19. });

最後に、適応のために rem を使用する際に発見した落とし穴について付け加えておきます。HTML で大きなフォント サイズを設定すると、ブロック要素内のインライン要素のマージンとパディングに追加の値が割り当てられます。解決策は、外側のブロック要素のフォント サイズを 0 に設定することです。

適応型モバイル Web ページ サイズを実装する上記の方法は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

オリジナル URL: http://www.cnblogs.com/daisykoo/archive/2016/05/24/5522958.html

<<:  CSS の Display、Visibility、Opacity、rgba、z-index: -1 の違い

>>:  Vue の自動書式設定の改行保存の詳細な説明

推薦する

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

異なるデータベースで DROP TABLE を書く方法

異なるデータベースで DROP TABLE を書く方法1.MySQL 存在する場合はテーブルを削除 ...

MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます

データベースの移行は、よく遭遇する問題です。データ量が少ない場合、移行は基本的に問題になりません。実...

枠線や境界線のない iframe を使用するための完全ガイド (実践経験のまとめ)

<iframe src=”ページのURL” width=”100″ height=”30″ f...

Linux で rsync を使用する方法

目次1. はじめに2. インストール3. 基本的な使い方3.1、-rパラメータ3.2、-aパラメータ...

MySQL インデックス プッシュダウンを 5 分で理解する

目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...

ビューポートの基本原理と詳細な使用方法

1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...

IE6/7 における a.getAttribute(href,2) 問題の分析と解決

簡単な説明<br />IE6および7では、一般的なaタグ(HTMLで記述され、DOM操作...

Vueが学生管理機能を実装

この記事では、学生管理を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次の...

Navicat for MySQL 11 登録コード\アクティベーションコードの概要

おすすめの読み物: Navicat12.1シリーズのクラッキングとアクティベーションのチュートリアル...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

Dockerコンテナのデータを復元する方法

プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...

Swiper.jsプラグインを使用すると、カルーセル画像を非常に簡単に実装できます。

Swiper は、携帯電話やタブレットなどのモバイル端末向けに設計された、純粋な JavaScri...

MySQL ログイン エラーを解決する: 'ユーザー 'root'@'localhost' へのアクセスが拒否されました

まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...

MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作の SQL ステートメントの効率最適化の問題を分析します。

前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...