vue做移動端適配最佳解決方案(親測有效)
vw 解決方案
1. 安裝并配置PostCss插件
2. 對 PostCss 進行配置
找到在根目錄中的.postcssrc.js,對PostCSS插件進行配置
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, // 視窗的寬度,對應的是我們設計稿的寬度,一般是750 viewportHeight: 1334, // 視窗的高度,根據(jù)750設備的寬度來指定,一般指定1334,也可以不配置 unitPrecision: 3, // 指定`px`轉(zhuǎn)換為視窗單位值的小數(shù)位數(shù)(很多時候無法整除) viewportUnit: 'vw', // 指定需要轉(zhuǎn)換成的視窗單位,建議使用vw selectorBlackList: ['.ignore', '.hairlines'], // 指定不轉(zhuǎn)換為視窗單位的類,可以自定義,可以無限添加,建議定義一至兩個通用的類名 minPixelValue: 1, // 小于或等于`1px`不轉(zhuǎn)換為視窗單位,你也可以設置為你想要的值 mediaQuery: false // 允許在媒體查詢中轉(zhuǎn)換`px` }, "postcss-viewport-units": {}, "cssnano": { preset: "advanced", autoprefixer: false, // 和cssnext同樣具有autoprefixer,保留一個 "postcss-zindex": false } } }
3. 引入viewport-units-buggyfill解決兼容問題
在 index.html 中引入js
<script src="http://g.alicdn.com/fdilab/lib3rd/viewport-units-buggyfill/0.6.2/??viewport-units-buggyfill.hacks.min.js,viewport-units-buggyfill.min.js"></script> <script> window.onload = function () { window.viewportUnitsBuggyfill.init({ hacks: window.viewportUnitsBuggyfillHacks }); } </script>
最近在做商城的項目,發(fā)現(xiàn)有贊的ui非常適合,但有一個問題是有贊的ui用的單位是px,做不了移動端的適配,官網(wǎng)的提供的vw適配方案發(fā)現(xiàn)不可行,最后還是決定rem來做適配,上網(wǎng)搜了一下,發(fā)現(xiàn)了一套可用方案,親測有效哦
它的原理是借助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 }) }) }
重啟項目,會發(fā)現(xiàn)自己設置的px被轉(zhuǎn)為rem 了
但是有一定的局限性
以上實現(xiàn)轉(zhuǎn)換適用于:
(1)組件中編寫的<style></style>下的css
(2)從index.js或者main.js中import ‘../../static/css/reset.css'引入css
(3)在組件的<script type=”text/ecmascript-6″> import ‘../../static/css/reset.css'</script>中引入css
另外的情況不適用:
(1)組件<style></style>中@import “../../static/css/reset.css (可考慮上面(2)、(3)的形式引入)
(2)外部樣式:<link rel=”stylesheet” href=”static/css/reset.css”>
(3)元素內(nèi)部樣式:style=”height: 417px; width: 550px;”
另外我要補充的是:在做移動端適配的時候我們不建議給字體也設置rem的單位,針對這種情況,我為字體適配的解決方案是使用媒體查詢,文件以組件<style></style>中@import “../../static/css/reset.css形式引入,可完美解決移動端適配問題
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項目中實現(xiàn)el-dialog組件可拖拽效果
本文主要介紹了vue項目中實現(xiàn)el-dialog組件可拖拽效果,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01Vue中watch監(jiān)聽第一次不觸發(fā)、深度監(jiān)聽問題
這篇文章主要介紹了Vue中watch監(jiān)聽第一次不觸發(fā)、深度監(jiān)聽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10Vue3新特性之在Composition API中使用CSS Modules
這篇文章主要介紹了Vue3新特性之在Composition API中使用CSS Modules,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07Vue開發(fā)中出現(xiàn)Loading?Chunk?Failed的問題解決
本文主要介紹了Vue開發(fā)中出現(xiàn)Loading?Chunk?Failed的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-03-03Vue文件如何轉(zhuǎn)換成base64并去除多余的文件類型前綴
這篇文章主要介紹了Vue文件如何轉(zhuǎn)換成base64并去除多余的文件類型前綴問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03解決vue中監(jiān)聽input只能輸入數(shù)字及英文或者其他情況的問題
今天小編就為大家分享一篇解決vue中監(jiān)聽input只能輸入數(shù)字及英文或者其他情況的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08