vueH5最佳適配方案(轉(zhuǎn))

轉(zhuǎn)自:https://www.cnblogs.com/zhangnan35/p/12682925.html

第一種方案是lib-flexible+postcss-pxtorem,在相當(dāng)長(zhǎng)一段時(shí)間里梁钾,這兩個(gè)插件搭配都是解決移動(dòng)端布局的神器溃槐,lib-flexible是阿里手淘系開源的一個(gè)庫(kù)舌缤,用于設(shè)置font-size楣责,同時(shí)處理一些窗口縮放的問(wèn)題。其中一位主要貢獻(xiàn)者正是阿里的大神winter。

直到2020年的今天穿扳,我仍然可以說(shuō),lib-flexible+postcss-pxtorem是解決移動(dòng)端布局的主流国旷,但是我們可以好好想一想矛物,它是否有什么不足?

從我個(gè)人來(lái)說(shuō)跪但,我認(rèn)為它主要有以下兩個(gè)不足:

1.兩個(gè)插件需要配套使用履羞,而且rootValue設(shè)置的值不好理解
2.rem是相對(duì)于html元素字體單位的一個(gè)相對(duì)單位,從本質(zhì)上來(lái)說(shuō)屡久,它屬于一個(gè)字體單位忆首,用字體單位來(lái)布局,并不是太合適

第二種方案是viewport被环,postcss-px-to-viewport就是這樣一款優(yōu)秀的插件糙及,它解決了以上提到的痛點(diǎn),也滿足以上提到的理想要求筛欢。它將px轉(zhuǎn)換成視口單位vw浸锨,眾所周知唇聘,vw本質(zhì)上還是一種百分比單位,100vw即等于100%柱搜,即window.innerWidth

1迟郎。我們先把它安裝到項(xiàng)目的開發(fā)環(huán)境中:
npm i postcss-px-to-viewport -D
yarn add postcss-px-to-viewport -D

2.在項(xiàng)目根目錄下添加.postcssrc.js文件,寫入下面的代碼

3.適配UI框架和H5頁(yè)面

vant團(tuán)隊(duì)的是根據(jù)375px的設(shè)計(jì)稿去做的,理想視口寬度為375px聪蘸。

那么宪肖,我們是否也要叫UI重新出一版375px的設(shè)計(jì)稿?

或者宇姚,我們?cè)跁鴮懙倪^(guò)程心算一下匈庭,所有標(biāo)注的尺寸都除以2?

讓我們回到webpack本身浑劳,重新看一下這份.postcssrc.js文件阱持,它除了暴露一個(gè)對(duì)象,也可以暴露一個(gè)函數(shù)魔熏,無(wú)論暴露什么衷咽,在webpack運(yùn)行時(shí),都會(huì)被我們配置的海量文件讀取并執(zhí)行蒜绽。

暴露函數(shù)有一個(gè)好處镶骗,可以拿到webpack運(yùn)行的當(dāng)前執(zhí)行文件的信息。

那么我們可以有這樣一個(gè)思路:如果讀取的是vant相關(guān)的文件躲雅,viewportWidth就設(shè)為375鼎姊,如果是其他的文件,我們就按照我們UI的寬度來(lái)設(shè)置viewportWidth相赁,即750相寇。

改寫.postcssrc.js文件配置如下:

const path = require('path');

module.exports = ({ file }) => {
  const designWidth = file.dirname.includes(path.join('node_modules', 'vant')) ? 375 : 750;

  return {
    plugins: {
      autoprefixer: {},
      "postcss-px-to-viewport": {
        unitToConvert: "px",
        viewportWidth: designWidth,
        unitPrecision: 6,
        propList: ["*"],
        viewportUnit: "vw",
        fontViewportUnit: "vw",
        selectorBlackList: [],
        minPixelValue: 1,
        mediaQuery: true,
        exclude: [],
        landscape: false
      }
    }
  }

}
注意:這里使用path.join('node_modules', 'vant')是因?yàn)檫m應(yīng)不同的操作系統(tǒng),在mac下結(jié)果為node_modules/vant钮科,而在windows下結(jié)果為node_modules\vant
//需要注意的
1.propList: 當(dāng)有些屬性的單位我們不希望轉(zhuǎn)換的時(shí)候唤衫,可以添加在數(shù)組后面,并在前面加上!號(hào)绵脯,如propList: ["*","!letter-spacing"],這表示:所有css屬性的屬性的單位都進(jìn)行轉(zhuǎn)化佳励,除了letter-spacing的
2.selectorBlackList:轉(zhuǎn)換的黑名單,在黑名單里面的我們可以寫入字符串蛆挫,只要類名包含有這個(gè)字符串赃承,就不會(huì)被匹配。比如selectorBlackList: ['wrap'],它表示形如wrap,my-wrap,wrapper這樣的類名的單位璃吧,都不會(huì)被轉(zhuǎn)換
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楣导,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畜挨,更是在濱河造成了極大的恐慌筒繁,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巴元,死亡現(xiàn)場(chǎng)離奇詭異毡咏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)逮刨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門呕缭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人修己,你說(shuō)我怎么就攤上這事恢总。” “怎么了睬愤?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵片仿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我尤辱,道長(zhǎng)砂豌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任光督,我火速辦了婚禮阳距,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘结借。我一直安慰自己筐摘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布船老。 她就那樣靜靜地躺著咖熟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪努隙。 梳的紋絲不亂的頭發(fā)上球恤,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音荸镊,去河邊找鬼咽斧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛躬存,可吹牛的內(nèi)容都是我干的张惹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼岭洲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宛逗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起盾剩,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雷激,失蹤者是張志新(化名)和其女友劉穎替蔬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屎暇,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡承桥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了根悼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凶异。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挤巡,靈堂內(nèi)的尸體忽然破棺而出剩彬,到底是詐尸還是另有隱情,我是刑警寧澤矿卑,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布喉恋,位于F島的核電站,受9級(jí)特大地震影響粪摘,放射性物質(zhì)發(fā)生泄漏瀑晒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一徘意、第九天 我趴在偏房一處隱蔽的房頂上張望苔悦。 院中可真熱鬧,春花似錦椎咧、人聲如沸玖详。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蟋座。三九已至,卻和暖如春脚牍,著一層夾襖步出監(jiān)牢的瞬間向臀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工诸狭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留券膀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓驯遇,卻偏偏與公主長(zhǎng)得像芹彬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叉庐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345