這篇文章主要介紹了vue如何做移動(dòng)端適配,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有疏附免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。vw 解決方案
1. 安裝并配置PostCss插件
npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano --S
2. 對(duì) PostCss 進(jìn)行配置
找到在根目錄中的.postcssrc.js,對(duì)PostCSS插件進(jìn)行配置
module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, // to edit target browsers: use "browserslist" field in package.json "postcss-write-svg": { uft8: false }, "postcss-cssnext": {}, "postcss-px-to-viewport": { viewportWidth: 750, // 視窗的寬度,對(duì)應(yīng)的是我們?cè)O(shè)計(jì)稿的寬度,一般是750 viewportHeight: 1334, // 視窗的高度,根據(jù)750設(shè)備的寬度來(lái)指定,一般指定1334,也可以不配置 unitPrecision: 3, // 指定`px`轉(zhuǎn)換為視窗單位值的小數(shù)位數(shù)(很多時(shí)候無(wú)法整除) viewportUnit: 'vw', // 指定需要轉(zhuǎn)換成的視窗單位,建議使用vw selectorBlackList: ['.ignore', '.hairlines'], // 指定不轉(zhuǎn)換為視窗單位的類,可以自定義,可以無(wú)限添加,建議定義一至兩個(gè)通用的類名 minPixelValue: 1, // 小于或等于`1px`不轉(zhuǎn)換為視窗單位,你也可以設(shè)置為你想要的值 mediaQuery: false // 允許在媒體查詢中轉(zhuǎn)換`px` }, "postcss-viewport-units": {}, "cssnano": { preset: "advanced", autoprefixer: false, // 和cssnext同樣具有autoprefixer,保留一個(gè) "postcss-zindex": false } } }
3. 引入viewport-units-buggyfill解決兼容問(wèn)題
在 index.html 中引入js
最近在做商城的項(xiàng)目,發(fā)現(xiàn)有贊的ui非常適合,但有一個(gè)問(wèn)題是有贊的ui用的單位是px,做不了移動(dòng)端的適配,官網(wǎng)的提供的vw適配方案發(fā)現(xiàn)不可行,最后還是決定rem來(lái)做適配,上網(wǎng)搜了一下,發(fā)現(xiàn)了一套可用方案,親測(cè)有效哦
它的原理是借助px2rem 插件方便的將px單位轉(zhuǎn)為了rem
具體步驟:
安裝
npm install px2rem-loader lib-flexible --save
在main.js中引入lib-flexible
import 'lib-flexible/flexible.js'
在build下的 utils.js中,找到generateLoaders 方法,添加以下代碼
const px2remLoader = { loader: 'px2rem-loader', options: { remUnit: 37.5 } } function generateLoaders (loader, loaderOptions) { const loaders = [cssLoader, px2remLoader] if (loader) { loaders.push({ loader: loader + '-loader', options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) }
重啟項(xiàng)目,會(huì)發(fā)現(xiàn)自己設(shè)置的px被轉(zhuǎn)為rem 了
但是有一定的局限性
以上實(shí)現(xiàn)轉(zhuǎn)換適用于:
(1)組件中編寫的下的css
(2)從index.js或者main.js中import ‘../../static/css/reset.css'引入css
(3)在組件的中引入css
另外的情況不適用:
(1)組件中@import “../../static/css/reset.css (可考慮上面(2)、(3)的形式引入)
(2)外部樣式:
(3)元素內(nèi)部樣式:style=”height: 417px; width: 550px;”
另外我要補(bǔ)充的是:在做移動(dòng)端適配的時(shí)候我們不建議給字體也設(shè)置rem的單位,針對(duì)這種情況,我為字體適配的解決方案是使用媒體查詢,文件以組件中@import “../../static/css/reset.css形式引入,可完美解決移動(dòng)端適配問(wèn)題
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“vue如何做移動(dòng)端適配”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!