
uniapp rem 的适配方案
pnpm 安装两个包
- install amfe-flexible --save
- install postcss-pxtorem --save-dev
vite.config.ts 里配置
export default defineConfig({
plugins: [
vue(),
viteCompression(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
resolve: {
alias: {
'@/': new URL('./src/', import.meta.url).pathname,
},
},
css: {
preprocessorOptions: {
scss: {
additionalData: '@use "@/styles/global-variables.scss" as *;',
},
},
postcss: {
plugins: [
require('postcss-pxtorem')({
rootValue: 20,
unitPrecision: 3,
propList: ['*'],
exclude: /(node_module)/,
selectorBlackList: ['.van'],
mediaQuery: false,
minPixelValue: 1,
}),
require('autoprefixer'),
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove()
}
},
},
},
],
},
},
build: {
terserOptions: {
compress: {
drop_console: true,
},
},
},
})
src -> assets -> ts -> rem.ts
const baseSize = 37.5
function setRem() {
const scale = document.documentElement.clientWidth / 750
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
setRem()
window.onresize = function () {
setRem()
}
export {}
main.js 引入
- import 'amfe-flexible'
- import './assets/ts/rem'
- 因为是修改的配置文件, 所以配置完毕需要重启项目