第一步安裝lib-flexible及postcss-px2rem-exclude
npm install lib-flexible --save
npm install postcss-px2rem-exclude --save
或
cnpm install lib-flexible --save
cnpm install postcss-px2rem-exclude --save
將lib-flexible在項(xiàng)目入口文件main.js中引入
import 'lib-flexible'
通過(guò)要以上兩步尺迂,就完成了在vue項(xiàng)目使用lib-flexible來(lái)解決移動(dòng)端適配了。
lib-flexible會(huì)自動(dòng)在html的head中添加一個(gè)meta name="viewport"的標(biāo)簽宁舰,同時(shí)會(huì)自動(dòng)設(shè)置html的font-size為屏幕寬度除以10戳杀,也就是1rem等于html根節(jié)點(diǎn)的font-size芒填。假如設(shè)計(jì)稿的寬度是750px跺株,此時(shí)1rem應(yīng)該等于75px。假如量的某個(gè)元素的寬度是150px惭聂,那么在css里面定義這個(gè)元素的寬度就是 width: 2rem
注意:
1.檢查一下html文件的head中,如果有 meta name="viewport"標(biāo)簽相恃,需要將他注釋掉辜纲,因?yàn)槿绻羞@個(gè)標(biāo)簽的話,lib-flexible就會(huì)默認(rèn)使用這個(gè)標(biāo)簽豆茫。而我們要使用lib-flexible自己生成的 meta name="viewport"來(lái)達(dá)到高清適配的效果侨歉。
2.因?yàn)閔tml的font-size是根據(jù)屏幕寬度除以10計(jì)算出來(lái)的,所以我們需要設(shè)置頁(yè)面的最大寬度是10rem揩魂。
3.如果每次從設(shè)計(jì)稿量出來(lái)的尺寸都手動(dòng)去計(jì)算一下rem幽邓,就會(huì)導(dǎo)致我們效率比較慢,還有可能會(huì)計(jì)算錯(cuò)誤火脉,所以我們可以使用postcss-px2rem-exclude自動(dòng)將css中的px轉(zhuǎn)成rem
使用postcss-px2rem-exclude自動(dòng)將css中的px轉(zhuǎn)換成rem
在項(xiàng)目的根目錄下創(chuàng)建文件postcss.config.js牵舵,創(chuàng)建完成后將下方代碼添加進(jìn)去
module.exports = {
plugins: {
autoprefixer: {},
"postcss-px2rem-exclude": {
remUnit: 37.5,
exclude: /node_modules|folder_name/i
}
}
};
然后重新npm run dev柒啤,打開控制臺(tái)可以看到代碼中的px已經(jīng)被轉(zhuǎn)成了rem
注意:
1.此方法只能將.vue文件style標(biāo)簽中的px轉(zhuǎn)成rem,不能將script標(biāo)簽和元素style里面定義的px轉(zhuǎn)成rem
2.如果在.vue文件style中的某一行代碼不希望被轉(zhuǎn)成rem畸颅,只要在后面寫上注釋 /* no*/就可以了
答:有時(shí)候我們?cè)谑謾C(jī)端項(xiàng)目的時(shí)候需要導(dǎo)入第三方UI庫(kù),例如:VUX,MINT等没炒,這時(shí)你就會(huì)發(fā)現(xiàn)第三方的組件樣式都變小了涛癌,變小的主要原因是第三庫(kù) css一依據(jù) data-dpr="1" 時(shí)寫死的尺寸,我們使用的flexible引入時(shí) data-dpr不是一個(gè)寫死了的送火,是一個(gè)動(dòng)態(tài)的拳话,就導(dǎo)致這個(gè)問(wèn)題。
這里就不再修改第三方的UI樣式种吸,直接忽略掉弃衍,簡(jiǎn)單直接實(shí)用。