モバイルページ適応、REMおよびVW適応ソリューション 基本的なポイント: rem はルート ノードのフォント サイズを基準とします。したがって、px は必要ありません。 道具vue-cli: スキャフォールディングを使用して vue フロントエンド プロジェクトを構築する プラグインをインストールするnpm および postcss、postcss-pxtorem、postcss-loader、postcss-import、postcss-url 次にそれをindex.htmlに追加します <meta name="viewport" content="width=デバイス幅、初期スケール=1、最大スケール=1"> プロジェクトのルートディレクトリに.postcssrc.jsファイルを追加します。モジュール.エクスポート = { 「プラグイン」: { "postcss-import": {}, // @import で CSS ファイルをインポートするために使用されます。"postcss-url": {}, // CSS ファイルまたは node_modules ファイルを導入するためのパス。"postcss-aspect-ratio-mini": {}, // 要素コンテナーのアスペクト比を処理するために使用されます。"postcss-write-svg": { utf8: false }, // モバイル端末用の 1px ソリューションを処理するために使用されます。このプラグインは、主に border-image と background を使用して 1px 関連の処理を行うものです。 "postcss-cssnext": {}, // このプラグインにより、CSS の将来の機能が使用できるようになり、これらの機能に関連する互換性処理が実行されます。 "postcss-px-to-viewport": { //px 単位を vw、vh、vmin、vmax などのビューポート単位に変換します。これは、vw 適応ソリューションのコア プラグインの 1 つでもあります。 viewportWidth: 750, //ビューポートの幅viewportHeight: 1334, //ビューポートの高さunitPrecision: 3, //pxをビューポート単位値に変換する小数点以下の桁数viewportUnit: 'vw', //変換するビューポート単位値を指定しますselectorBlackList: ['.ignore', '.hairlines'], //ビューポート単位値を変換しないクラスを指定します。これはカスタマイズして無制限に追加できますminPixelValue: 1, //1px以下はビューポート単位に変換されませんmediaQuery: false //メディアクエリでpxを許可 }, "postcss-viewport-units":{}, //vw、vh、vmin、vmax を適応します。これは、vw レイアウトを実装するために不可欠なプラグインです。 "cssnano": { //主に CSS コードを圧縮およびクリーンアップするために使用されます。 Webpack では、cssnano は css-loader にバンドルされているため、自分でロードする必要はありません。 preset: "advanced", //繰り返し autoprefixer: false, //cssnext と cssnano の両方に autoprefixer があります。実際は 1 つだけ必要なので、デフォルトの autoprefixer を削除し、cssnano の autoprefixer を false に設定します。 "postcss-zindex": false //このプラグインが有効になっている限り、z-index値は1にリセットされます } } } 異なる画面サイズに切り替えるときは、ルートフォントサイズを動的に変更する必要があります。簡単なjsをheadに挿入します。publicディレクトリに新しいshipei.jsを作成し、このjsをindex.htmlのheadに導入します。 //shipei.js (関数() { 関数 autoRootFontSize() { document.documentElement.style.fontSize = Math.min(screen.width,document.documentElement.getBoundingClientRect().width) / 750 * 32 + 'px'; // screen.width と document.documentElement.getBoundingClientRect().width の最小値を取得し、750 で割り、32 を掛けます。おわかりのように、元のサイズ 750 の 32px になります。画面サイズが 375px になると、フォント サイズは 16px になります。つまり、ルート fontSize のサイズは画面サイズに正比例して変化します。簡単じゃないですか? window.addEventListener('resize', autoRootFontSize); 自動ルートフォントサイズ(); })(); インデックス.html<!DOCTYPE html> <html lang=""> <ヘッド> <メタ文字セット="utf-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1、最大スケール=1"> <link rel="スタイルシート" href="/public.css" rel="外部nofollow" type="text/css"> <link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="外部 nofollow" > <title><%= htmlWebpackPlugin.options.title %></title> <script src="/shipei.js" type="text/javascript" charset="utf-8"></script> </head> <本文> <div id="アプリ"></div> <!-- ビルドされたファイルは自動的に挿入されます --> </本文> </html> パブリックに配置するものの開始ディレクトリを記述する必要がないことに注意してください。スキャフォールディングがパッケージ化されると、パブリック フォルダー内で検索されます。 についてgetBoundingClientRect().width は、実際には親の右側とブラウザの原点 (0,0) と親の左側の間の距離、つまり親の幅 + 2padding + 2border を取得します。 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル タイプ="text/css"> *{ マージン: 0; パディング: 0; } </スタイル> </head> <本文> <div id="divParent" style="background-color: #aaa; padding:8px; border:solid 7px #000; height:200px; width:500px; overflow:hidden;"> <div id="divDisplay" style="background-color: #0f0; margin: 30px; padding: 10px; 高さ: 400px; 幅: 600px; 境界線: 実線 3px #f00;"> </div> </div> </本文> </html> <script type="text/javascript"> /* getBoundingClientRect().width は、実際には親の右側とブラウザの原点 (0,0) と親の左側の間の距離、つまり親の幅 + 2padding + 2border を取得します。 このとき、clientWidth は、境界線の幅を除いて、親の幅 + 2*padding に等しくなります。 子コンテンツが非表示になっていない場合、つまりオーバーフローが自動の場合、親はボックス モデルを適応させないため、子コンテンツの幅はこの数値のままになります。後者の幅は、上で取得した幅からスクロール バーの幅 (17 px) を引いた値です。例は次のとおりです。 */ var divP = document.getElementById('divParent'); var divD = document.getElementById('divDisplay'); var クライアント幅 = divP. クライアント幅; var getWidth = divP.getBoundingClientRect().width; divD.innerHTML += 'clientWidth: ' + clientWidth + '<br/>'; divD.innerHTML += 'getWidth: ' + getWidth + '<br/>'; </スクリプト> 結果は clientWidth が 516 となり、これはコンテンツ幅 + 2padding として計算されます。 これで、vue プロジェクトで rem を使用して px を置き換える実装例に関するこの記事は終了です。vue rem を使用して px コンテンツを置き換える関連の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
>>: Linux(中心OS7)は、Java Webプロジェクトの実行環境を構築するためにJDK、Tomcat、MySQLをインストールします。
効果: css: .s_type { 境界線: なし; 境界線の半径: 5px; 背景色: #f3f...
カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...
目次MySQL Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...
目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...
通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...
この記事では、MySQL 8.0.15 winx64のインストールと設定方法を参考までに紹介します。...
テーブル構造を編集するための MySQL の alter コマンドの使用。具体的な内容は以下のとおり...
MySQL データベースのバージョンを 5.6.28 から 8.0.11 にアップグレード中にプロジ...
概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...
序文binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ...
React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...
プロジェクト(nodejs)では、一度に複数のデータをデータベースに挿入する必要があります。データベ...
ウェブフロントエンド1学生証名前性別年01張三男20 02李思女性21総人数60フォームのコンポーネ...
<br /> 第 1 部と第 2 部では、Web サイトのパフォーマンス、ページ コンテ...
Centos7 上で openresty 用の Dockerfile を作成し、ビルドしました。 d...