レムの簡単な分析まず、remはCSS単位です。pxの固定ピクセル単位と比較すると、remはより柔軟性があり、vmも比較的優れています。今まで知らなかった方は、まずはご覧になってみてください。 rem 適応型。 CSS3 REMはフォントサイズを設定します
簡単に言えば、rem は HTML 要素のフォント サイズに基づいて計算されます。私たちの要件は、さまざまな解像度に応じて要素のサイズを変更し、非常に快適な視覚効果を実現できることです。 PC 側で作業する場合を考えてみましょう。通常は、中間のサイズを固定します。たとえば、1200 ピクセルです。次に、最小サイズを 1200 ピクセルにして、両側に空白スペースを残します。これにより、拡大または縮小しても効果に影響しません。しかし、現在ではさまざまなモバイル画面が登場し、適応性はさらに高まっています。異なる解像度に応じて HTML のフォント サイズを変更するには、ページに rem を記述します。rem はルート要素のフォント サイズを基準に計算されるため、適応効果を実現できます。 1. 適応方法適応ソリューションでは、rem レイアウトを使用します。さまざまな画面解像度に応じて、ルート要素 html のフォント サイズが調整されるため、各要素の幅と高さが自動的に変更され、さまざまな画面に適応できます。 2. postcss-px2rem-excludeプラグインを使用するインストールnpm install postcss-px2rem-exclude --save-dev プロジェクトのルートディレクトリにpostcss.config.jsファイルを作成します。 モジュール.エクスポート = { プラグイン: { 自動プレフィックス: {}, 'postcss-px2rem-exclude': { remユニット: 192 // 除外: /node_modules|folder_name/i, } } } 3. Flexible.js をインストールします(ローカルに配置することを推奨)インストールコマンド npm install lib-flexible (関数(win, lib) { var doc = win.document var docEl = doc.documentElement var metaEl = doc.querySelector('meta[name="viewport"]') var フレキシブルEl = doc.querySelector('meta[name="フレキシブル"]') var dpr = 0 varスケール = 0 var tid var フレキシブル = lib.フレキシブル || (lib.フレキシブル = {}) if (メタEl) { console.warn('ズーム率は既存のメタタグに従って設定されます') var マッチ = metaEl .getAttribute('コンテンツ') // eslint は次の行を無効にして、無駄なエスケープを禁止します .match(/initial\-scale=([\d\.]+)/) (一致)の場合{ スケール = parseFloat(match[1]) dpr = parseInt(1 / スケール) } } そうでない場合 (flexibleEl) { var コンテンツ = FlexibleEl.getAttribute('コンテンツ') if (コンテンツ) { // eslint は次の行を無効にして、無駄なエスケープを禁止します var initialDpr = content.match(/initial\-dpr=([\d\.]+)/) // eslint は次の行を無効にして、無駄なエスケープを禁止します var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/) (初期Dpr)の場合{ dpr = parseFloat(初期Dpr[1]) スケール = parseFloat((1 / dpr).toFixed(2)) } (最大Dpr)の場合{ dpr = parseFloat(最大Dpr[1]) スケール = parseFloat((1 / dpr).toFixed(2)) } } } (!dpr && !スケール){ // var isAndroid = win.navigator.appVersion.match(/android/gi); var isIPhone = win.navigator.appVersion.match(/iphone/gi) var デバイスピクセル比 = win.デバイスピクセル比 if (isIPhone) { // iOS では、2 画面と 3 画面の場合は 2 倍のソリューションを使用し、それ以外の場合は 1 倍のソリューションを使用します if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) { dpr = 3 } そうでない場合 (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) { dpr = 2 } それ以外 { dpr = 1 } } それ以外 { // 他のデバイスでは、1xソリューションが引き続き使用されますdpr = 1 } スケール = 1 / dpr } docEl.setAttribute('data-dpr', dpr) if (!metaEl) { metaEl = doc.createElement('meta') metaEl.setAttribute('名前', 'ビューポート') metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no') docEl.firstElementChildの場合{ docEl.firstElementChild.appendChild(metaEl) } それ以外 { var wrap = doc.createElement('div') wrap.appendChild(メタEl) doc.write(wrap.innerHTML) } } 関数refreshRem() { var 幅 = docEl.getBoundingClientRect().width (幅 / dpr > 540)の場合{ 幅 = 幅 * dpr } var rem = 幅 / 10 docEl.style.fontSize = rem + 'px' フレキシブル.rem = win.rem = rem } win.addEventListener() 関数は、 「サイズ変更」、 関数() { クリアタイムアウト(tid) tid = setTimeout(リフレッシュ間隔、300) }, 間違い ) win.addEventListener() 関数は、 'ページ表示', 関数(e) { if (e.persisted) { クリアタイムアウト(tid) tid = setTimeout(リフレッシュ間隔、300) } }, 間違い ) doc.readyState === '完了'の場合{ doc.body.style.fontSize = 12 * dpr + 'px' } それ以外 { doc.addEventListener() 関数は、 'DOMコンテンツがロードされました'、 関数() { doc.body.style.fontSize = 12 * dpr + 'px' }, 間違い ) } リフレッシュRem() フレキシブル.dpr = win.dpr = dpr フレキシブル.refreshRem = リフレッシュRem フレキシブル.rem2px = 関数(d) { var val = parseFloat(d) * this.rem (typeof d === 'string' && d.match(/rem$/))の場合{ val += 'px' } 戻り値 } フレキシブル.px2rem = 関数(d) { var val = parseFloat(d) / this.rem if (typeof d === 'string' && d.match(/px$/)) { val += 'rem' } 戻り値 } })(ウィンドウ、ウィンドウ['lib'] || (ウィンドウ['lib'] = {})) 上記のコードはインストールされたflexible.jsとは異なります 修正済み 関数refreshRem() { var 幅 = docEl.getBoundingClientRect().width (幅 / dpr > 540)の場合{ 幅 = 幅 * dpr } var rem = 幅 / 10 docEl.style.fontSize = rem + 'px' フレキシブル.rem = win.rem = rem } main.js にインポートする
要約するVue プロジェクトの大画面への適応に関するこの記事はこれで終わりです。Vue の大画面への適応に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux でユーザーにルート権限を追加する方法の概要
>>: MySQL エラー 1290 (HY000) の解決方法
自動検出を行う際には、ポートなどの情報を取得してjson形式で返すスクリプトが必ず存在します。Red...
この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...
この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...
なぜ?最も簡単に言えば、ピクセルは均等ではないということです。携帯電話に表示される写真はとても繊細に...
物件の詳細な説明transition 属性の目的は、一部の CSS プロパティ (背景など) をスム...
目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...
目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...
処理能力と同時実行性を向上させるために、Web コンテナは通常、リクエストを処理するタスクをスレッド...
質問一部のページでは、onload でデータを要求してからビューをレンダリングするため、ミニプログラ...
Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...
目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...
CLion のプロセス全体を最初から説明します。CLion は、JetBrains がリリースした新...
概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...
目次1. 背景2. 検証プロセス3. 検証を作成する4. フロントエンドコード4.1 コアjsファイ...
DOSBox を使用すると、Windows で DOS をシミュレートし、楽しい作業を行うことができ...