PC端项目适配rem方案

1,024 阅读2分钟

项目背景:PC端项目,因为UI设计稿1440导致开发完的UI视觉偏大,且在小屏幕浏览器上看着更大(项目中即使做了媒介查询也不行)

项目脚手架:vue-cli 3 页面布局:后台管理系统,左侧菜单,右侧内容部分

image.png

代码实现:

1.安装npm包

npm install postcss-pxtorem --save-dev
npm install postcss-loader

2、项目根目录创建.postcss.config.js

3、.postcss.config.js内容,rootValue = 设计稿的宽度/10

module.exports = {
    plugins: {
      // 这个工具可以实现自动添加CSS3前缀
      "autoprefixer": {
        overrideBrowserslist: ["last 5 version", ">1%", "ie >=8"]
      },
      // 如果你使用rem来实现移动端多设备适配,这个工具可以把px转换为rem
      "postcss-pxtorem": {
        //1024       1280          1366      1440       1680       1920 
        rootValue: 178, // 指定转换倍率,我现在设置这个表示1rem=100px;
        propList: ["*"], // 属性列表,表示你要把哪些css属性的px转换成rem,这个*表示所有
        minPixelValue: 5, // 需要转换的最小值,一般1px像素不转换,以上才转换
        unitPrecision: 4, // 转换成rem单位的小数点后的保留位数
        selectorBalckList: [], // 匹配不被转换为rem的选择器
        replace: true, // 替换包含rem的规则,而不是添加回退
        mediaQuery: false // 允许在媒体查询中转换px
      }
    }
  }

4、页面加入媒介查询,(不能在项目文件写,会被转化成rem),根目录字体 = 设计稿宽度/10

  • 超过设计稿最大宽度,固定按照设计稿设置根字体大小,屏幕变大字体和宽度不在变大
  • 最小屏幕设置960px,再小出现滚动条,不再用字体适配
/*1024       1280          1366      1440       1680       1920 */
      @media screen and (min-width:1780px) {
        html,
        body{
          font-size:178px!important;/*190*/
        }
      }
      @media screen and (max-width:960px) {
        html{
          font-size:90px!important;
        }
        /*兼容小屏*/
        body{
          font-size:90px!important;
        }
        .container{
          width: 960px;
        }
      }
    </style>

5、以上方案需分情况,部分内容需要显式设置字体fontSize,否则会出现字体超大(继承根字体大小)的情况