安装插件
npm i postcss-pxtorem@5.1.1 -S
npm i autoprefixer
main.js引入
import '/@/utils/rem.js';
const baseSize = 32; //32
// 设置 rem 函数
function setRem() {
// 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
const scale = document.documentElement.clientWidth / 375;
// 设置页面根节点字体大小
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px';
}
// 初始化
setRem();
// 改变窗口大小时重新设置 rem
window.onresize = function() {
setRem();
}
与package.json同级目录(根目录)创建.postcssrc.js文件
// module.exports = {
// plugins: {
// autoprefixer: {},
// "postcss-pxtorem": {
// rootValue: 192, // 根据设计图尺寸写,设计图是1920,就写192
// propList: ['*'], // 需要被转换的属性
// selectorBlackList: ['el'] // 不进行px转换的选择器,不转换element的标签样式,根据自己项目需求来定义
// }
// }
// }
module.exports = {
plugins: {
autoprefixer: {
overrideBrowserslist: [
"Android 4.1",
"iOS 7.1",
"Chrome > 31",
"ff > 31",
"ie >= 8",
"last 10 versions", // 所有主流浏览器最近10版本用
],
grid: true,
},
'postcss-pxtorem': {
rootValue: 32,
propList: ['*', '!border'], // 除 border 外所有px 转 rem
selectorBlackList: ['.am-'] // 过滤掉.am-开头的class,不进行rem转换
}
}
}
// module.exports = {
// "plugins": {
// "postcss-pxtorem": {
// rootValue: 192, // 根据设计图尺寸写,设计图是1920,就写192
// propList: ['*'], // 需要被转换的属性
// selectorBlackList: ['el'] // 不进行px转换的选择器,不转换element的标签样式,根据自己项目需求来定义 }
// }
// }
// module.exports = {
// "plugins": {
// "postcss-pxtorem": {
// "autoprefixer": {
// browsers: ['Android >= 4.0', 'iOS >= 7']
// },
// 'postcss-pxtorem': {
// rootValue:16,
// propList: ['*']
// }
// }
// }
// }
index.html
<style>
#app {
max-width: 1300px;
overflow: hidden;
}
html,
body {
margin: 0;
padding: 0;
box-sizing: border-box;
font-size: 14px;
}
</style>
//移动端添加
<script>
/(pad|pod|iPad|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTagName('head'),viewport=document.createElement('meta'),viewport.name='viewport',viewport.content='target-densitydpi=device-dpi, width=480px, user-scalable=no',head.length>0&&head[head.length-1].appendChild(viewport));
</script>
文字最小是12px;要想把文字缩到更小,可以使用transform,但是必须保证元素是块级元素:如:
font-size:16px;
display:inline-block;
transform: scale(0.9);