Vue-cli3.0 px转换为rem,完成h5自适应

设计稿对于前端来讲是很是重要的,可是设计稿的单位是px,而h5的适配单位如今用得最多的是rem,百度了下都是比较老旧的实现方法,要么本身去计算rem值,要么依靠编辑器安装插件转换,接着我便查了一些资料,而后在这里记录下css

技术栈

  • vue-cli 3.0: 使用脚手架工具建立项目
  • postcss-pxtorem: 转换px为rem的插件

自动设置根节点html的font-size

由于rem单位是相对于根节点的字体大小的,因此经过设置根节点的字体大小能够动态的改变rem的大小, html的font-size===1rem,网上有不少关于rem的介绍,这里就不记录了html

一、建立 rem.js 文件

# 基准大小
const baseSize = 32
# 设置 rem 函数
function setRem () {
  # 当前页面宽度相对于 750 宽的缩放比例,可根据本身须要修改。
  const scale = document.documentElement.clientWidth / 750
  # 设置页面根节点字体大小
  document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px'
}

# 初始化
setRem()
# 改变窗口大小时从新设置 rem
window.onresize = function () {
  setRem()
}
复制代码

一、在 main.js 中引入rem.js

# main.js
import './utils/rem'
复制代码

引入文件后可查看下html是否添加了font-size属性或者font-size被动态的改变了,以此来肯定是否引入成功, 其实到这里基本上完成了rem布局了, h5会动态的去自适应,不过这样子在实际开发中仍是要去计算px等于多少rem,接下来咱们使用 postcss-pxtorem 自动转换px为对应的rem值前端


使用 postcss-pxtorem 将px转换为对应的rem值

先安装依赖包 postcss-pxtoremvue

npm install postcss-pxtorem --save-dev
复制代码

接下来配置 postcss-pxtoremvue-cli

# vue.config.js
module.exports = {
  lintOnSave: true,
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require('postcss-pxtorem')({
            rootValue : 16, // 换算的基数
            selectorBlackList  : [], // 忽略转换正则匹配项
            propList   : ['*'],
          }),
        ]
      }
    }
  }
}
复制代码

通过上面一通噼里啪啦的捣鼓后, 没出什么报错的话,即可用 px 做为单位开发npm

例如设计给出的设计图是 750 * 1136,那么能够直接在页面中写bash

body {
	width: 750px;
	height: 1136px;
}
# 将被转换为

body {
	widht: 23.4375rem;
	height: 35.5rem;
}
复制代码
相关文章
相关标签/搜索