亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解基于Vue/React項目的移動端適配方案

2019-11-19 10:59:29
字體:
來源:轉載
供稿:網友

前言

本文的目標是通過下文介紹的適配方案,使用vue或react開發移動端及H5的時候,不需要再關心移動設備的大小,只需要按照固定設計稿的px值布局,提升開發效率。

下文給出了本人分別使用create-react-app搭建的react(create-react-app)項目和使用vue-cli 2.x 搭建的vue項目中的 親測可用 配置方案。

px2rem或postcss-px2rem

  • 在移動端中,為了設配不同的設備,通常使用rem來做適配。
  • rem是通過根元素進行適配的,網頁中的根元素指的是<html>,我們通過設置<html>的字體大小就可以控制 rem 的大?。?rem = 1根元素字體大?。?。
  • 可見,只要我們根據不同屏幕(使用css媒體查詢或js)設定好根元素<html>的字體大小,其他已經使用了rem單位的元素就會自適應顯示相應的尺寸。
  • 設計稿一般是按照一種特定設備型號(如iphone6)為基礎且以px單位來定義樣式,為了讓設計稿能夠通用在不同的設備型號中,則存在著從px到rem的繁瑣計算轉化過程,因此需要更加科學的方式來使用rem單位。
  • px2rem或postcss-px2rem的原理:將css中px編譯為rem,配合js根據不同手機型號計算出dpr的值,修改<meta>的viewport值和置<html>的font-size。

項目中的使用

recat項目配置postcss-px2rem

首先,我們使用 react 的腳手架 create-react-app 初始化一個 webpack 項目(前提是已經安裝過create-react-app,具體不再闡述)。

create-react-app my-app

暴露webpack配置,即 react-scripts 包:

yarn eject

使用yarn 安裝項目所需依賴后,安裝 lib-flexible 、 postcss-px2rem 和 postcss-loader:

yarn add postcss-px2rem lib-flexible yarn add postcss-loader --dev

在入口頁面 index.html 中設置<meta>標簽:

<meta name="viewport" content="width=device-width,inital-scale=1.0,  maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">

然后在項目入口文件 index.js 中引入 lib-flexible:

import 'lib-flexible';

接著,在項目config目錄下的 webpack.config.js 中引入 postcss-px2rem :

const px2rem = require('postcss-px2rem')

同時,在 webpack.config.js 的 postcss-loader loader里面添加 :

{    loader: require.resolve('postcss-loader'),    options: {     /* 省略代碼... */     plugins: () => [      require('postcss-flexbugs-fixes'),      require('postcss-preset-env')({       autoprefixer: {        flexbox: 'no-2009',       },       stage: 3,      }),      px2rem({remUnit: 37.5}), // 添加的內容      /* 省略代碼... */     ],     sourceMap: isEnvProduction && shouldUseSourceMap,    },   },

最后,使用 yarn start 重啟項目,則會發現項目中的postcss-px2rem配置完成。

vue項目配置px2rem

首先,我們使用 vue 的腳手架 vue-cli 初始化一個 webpack 項目(前提是已經安裝過vue-cli,具體不再闡述),一些選項根據自己項目需要選擇。

vue init webpack my-app

命令執行之后,會在當前目錄生成一個以“my-app”命名的項目文件夾。進入項目目錄:

cd my-app

使用yarn 安裝項目所需依賴后,安裝 lib-flexible 和  px2rem-loader:

yarn add lib-flexibleyarn add px2rem-loader --dev

在入口頁面 index.html 中設置<meta>標簽:

<meta name="viewport" content="width=device-width,inital-scale=1.0,  maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">

然后在項目入口文件 main.js 中引入 lib-flexible:

import 'lib-flexible/flexible.js';

同時,在項目build目錄下的 utils.js 中,將px2rem-loader 添加到cssLoaders中。通過搜索找到 generateLoaders 方法,在這里添加:

exports.cssLoaders = function (options) { /* 省略代碼塊 */ const cssLoader = {  /* 省略代碼塊 */ } /* 添加的代碼塊 */ const px2remLoader = {  loader: 'px2rem-loader',  options: {   remUnit: 37.5 // 基準大小 baseSize,設計稿寬度/10  } } /* 添加的代碼塊 */  // generate loader string to be used with extract text plugin function generateLoaders (loader, loaderOptions) {  const loaders = [cssLoader, px2remLoader] // 添加px2remLoader  if (loader) {   /* 省略代碼塊 */  }  /* 省略代碼塊 */}

最后,使用 yarn dev 重啟項目,會發現自己設置的px被轉為rem 了。

適用情況 & 不適用情況

以上實現轉換適用于:
(1)vue 組件中編寫的<style></style>下的css。
(2)從 react 項目的 index.js 或者 vue 項目的 main.js 中通過import ‘../../static/css/reset.css'引入css。
(3)在 vue 組件的<script type=”text/ecmascript-6″>import ‘../../static/css/reset.css'</script>中引入css。

另外的情況不適用:
(1)在 vue 組件的<style></style>中通過@import “../../static/css/reset.css (可考慮上面(2)、(3)的形式引入)。
(2)外部樣式:<link rel=”stylesheet” href=”static/css/reset.css”>。
(3)元素內部樣式:style="height: 417px; width: 550px;"。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产欧美亚洲国产日韩mv天天看完整| 福利视频导航一区| 日韩亚洲精品视频| 国产日韩在线免费| 国产美女91呻吟求| 欧美午夜视频在线观看| 色婷婷成人综合| 久久人91精品久久久久久不卡| 亚洲直播在线一区| 97视频在线观看成人| 久久91精品国产91久久久| 日韩在线视频中文字幕| 日产日韩在线亚洲欧美| 久久久久久久久久婷婷| 国产视频丨精品|在线观看| 欧美激情国产日韩精品一区18| 国产精品第一区| 日韩影视在线观看| 欧美成人免费全部观看天天性色| 日本人成精品视频在线| 91在线观看免费网站| 欧美精品videossex性护士| 国产精品久久网| 萌白酱国产一区二区| 国产欧美精品在线| 亚洲欧美中文字幕在线一区| 91丝袜美腿美女视频网站| 2019亚洲男人天堂| 亚洲欧美在线一区二区| 日韩欧美有码在线| 国产精品自拍偷拍| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲欧美在线免费| 久久精品国产2020观看福利| 亚洲a在线播放| 久久人人爽亚洲精品天堂| 国产精品∨欧美精品v日韩精品| 在线国产精品视频| 欧美电影免费播放| 97人人爽人人喊人人模波多| 国产精品久久久久久久久影视| 色爱av美腿丝袜综合粉嫩av| 国产999精品久久久影片官网| 色综合伊人色综合网站| 国产成人免费av电影| 欧美日韩激情视频8区| 91国语精品自产拍在线观看性色| 91精品国产色综合久久不卡98| 精品久久久久人成| 国产精品久久久久久久久粉嫩av| 久久久久中文字幕| 欧美中文在线字幕| …久久精品99久久香蕉国产| 狠狠色噜噜狠狠狠狠97| 国产精品综合网站| 午夜免费在线观看精品视频| 日韩精品日韩在线观看| 国产视频福利一区| 精品国产成人av| 久久精品国产99国产精品澳门| 国产激情视频一区| 国产欧美日韩高清| 日本电影亚洲天堂| 91亚洲精品久久久| 国产免费一区二区三区在线能观看| 国产精品一区二区三区在线播放| 欧美成人精品一区| 亚洲第一男人天堂| 青青在线视频一区二区三区| 中文字幕日本精品| 2020欧美日韩在线视频| 亚洲精品第一国产综合精品| 国产精品视频1区| 4438全国亚洲精品在线观看视频| 国产激情综合五月久久| 亚洲精品国产suv| 中文综合在线观看| 国产精品日韩在线| 亚洲国产成人精品一区二区| 国产精品第10页| 萌白酱国产一区二区| 欧美在线观看网站| 在线播放日韩av| 国产精品国产三级国产aⅴ浪潮| 欧美午夜xxx| 日韩午夜在线视频| 亚洲欧美国产精品久久久久久久| 亚洲福利视频久久| 国产在线高清精品| 国产精品美女网站| 欧美激情综合色| 91精品国产综合久久久久久蜜臀| 国产精品扒开腿做爽爽爽视频| 国模私拍视频一区| 4444欧美成人kkkk| 成人h视频在线观看播放| 亚洲一区二区免费在线| 国产精品久久97| 欧美视频精品一区| 美女999久久久精品视频| 国产一区二区动漫| 欧美精品制服第一页| 欧美麻豆久久久久久中文| 成人性生交大片免费观看嘿嘿视频| 一区二区日韩精品| 中文字幕自拍vr一区二区三区| 欧美激情性做爰免费视频| 欧美精品一区二区免费| 美日韩精品免费视频| 亚洲一区二区久久久久久| 日韩精品高清在线观看| 国产ts一区二区| 日韩欧美在线看| 国模精品视频一区二区三区| 热久久视久久精品18亚洲精品| www欧美xxxx| 福利微拍一区二区| 亚洲一区二区国产| 亚洲a一级视频| 亚洲精选一区二区| 国产一区二区激情| 久久久亚洲福利精品午夜| 国产午夜精品理论片a级探花| 国产在线观看精品一区二区三区| 久久久久久久久久久免费精品| 美女性感视频久久久| 国产日韩在线免费| 亚洲欧洲在线视频| 国产噜噜噜噜噜久久久久久久久| 国产一区二区三区视频在线观看| 日韩电影在线观看永久视频免费网站| 俺去了亚洲欧美日韩| 不卡av电影院| 久久999免费视频| 久久久综合免费视频| 国产成人亚洲精品| 国产日韩av在线| 91美女福利视频高清| 国产免费久久av| 日韩av在线一区| 热久久99这里有精品| 欧美老女人xx| 中文字幕亚洲无线码a| 日韩欧美国产视频| 亚洲国产精品99| 韩国精品久久久999| 欧美性猛交xxxx黑人猛交| 国产精品96久久久久久又黄又硬| 日韩av三级在线观看| 国产色视频一区| 国产精品pans私拍| 国产精品一区二区av影院萌芽| 精品magnet| 91人人爽人人爽人人精88v| 国产在线精品成人一区二区三区| 欧美交受高潮1| 欧美日韩另类字幕中文| 日韩av手机在线看| 97**国产露脸精品国产| 永久免费看mv网站入口亚洲| 亚洲 日韩 国产第一| 国产精品自产拍在线观看| 一区二区三区精品99久久| 欧美大片大片在线播放|