高级前端—— Rem及其转换原理

rem 是 CSS3 新增的相对长度单位,是指相对于根元素 html 的 font-size 计算值的大小。rem 直接相对于根元素 html,避开层级关系,移动端新型浏览器对其支持较好;

默认根元素的 font-size 都是 16px的。如果想要设置 12px 的字体大小也就是 12px/16px = 0.75rem。可以直接使用,也不需要安装什么插件。如果你想计算方便,可以设置默认的font-size等于10px。这样的话,设置12px的字体就是0.12rem了。

不过我目前开发的web平台较多,使用的px比较多。个人的使用习惯问题。
如果需要,也可以安装插件来装转换。

移动端适配(px转vw)(postcss-px-to-viewport配置)

安装

npm install postcss-px-to-viewport

创建js文件

根目录新建postcss.config.js文件

文件内容

//postcss.config.js文件
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', //需要转换的单位,默认为"px"
      viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度
      viewportHeight: 1334,//视窗的高度,根据375设备的宽度来指定,一般指定667,也可以不配置
      unitPrecision: 13, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
      propList: ['*'], // 能转化为vw的属性列表
      viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
      fontViewportUnit: 'vw', //字体使用的视口单位
      selectorBlackList: ['.ignore-', '.hairlines'], //指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false, // 允许在媒体查询中转换`px`
      replace: true, //是否直接更换属性值,而不添加备用属性
      exclude: [
        /RightBar/,
        /gotop.vue/,
      ], //忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
      landscape: false, //是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', //横屏时使用的单位
      landscapeWidth: 1134 //横屏时使用的视口宽度
    }
  }
}

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注