vue3.0+vite 使用 postcss-pxtorem 自适应(px转rem)

24 篇文章 0 订阅

安装插件

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);
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值