index.html
1 | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"> |
vue3
Viewport 布局
安装插件
1 | npm i amfe-flexible postcss-pxtorem; |
配置
1 | module.exports = { |
Rem 布局适配
安装插件
1 | npm i amfe-flexible postcss-pxtorem; |
配置
postcss.config.js
1 | module.exports = { |
vite
vite.config.js
1 | import postcsspxtoviewport from "postcss-px-to-viewport" |
Vue2
vue-cli4
安装插件
1 | npm i amfe-flexible postcss-pxtorem -S; |
配置插件
mainjs
1 | import 'lib-flexible' |
vue.config.js
1 | module.exports = { |
或者 package.json
1 | { |
或者 postcss.config.js
1 | module.exports = { |
vue-cli3
安装插件
1 | npm i lib-flexible px2rem-loader -S; |
配置插件
main.js
1 | import 'lib-flexible' |
- 打开build/utils.js文件,找到exports.cssLoaders方法,在里面添加如下代码
1 | const px2remLoader = { |
- 打开build/utils.js文件,找到generateLoaders方法
1 | function generateLoaders(loader, loaderOptions) { |
build/utils.js文件 添加 generateSassResourceLoader方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function generateSassResourceLoader () {
const loaders = [
cssLoader,
px2remLoader,
'less-loader'
]
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}修改 build/utils.js文件 return
1
2
3
4
5return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateSassResourceLoader() // 修改less的值
}修改/node_modules/px2rem-loader/lib/px2rem-loader.js
1
2
3
4
5
6
7
8
9var loaderUtils = require('loader-utils')
var Px2rem = require('px2rem')
module.exports = function (source) {
var options = loaderUtils.getOptions(this)
if (/node_modules/.test(this.resourcePath)) return source
var px2remIns = new Px2rem(options)
return px2remIns.generateRem(source)
}
重启,一切ok~
1 | npm run dev |