zoukankan      html  css  js  c++  java
  • 如何在Vue项目将 px 转换为 rem

    技术栈(vue2.x)

    vue-cli:使用脚手架工具创建项目。

    postcss-pxtorem:转换px为rem的插件。

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

    因为rem单位是相对于根节点的字体大小的,所以通过设置根节点的字体大小可以动态的改变rem的大小。

    1、创建rem.js文件

    很多人写这种小工具文件会习惯性的加上闭包,这个其实是没有必要的。ES6中每个文件都是单独的一个模块。

    // 基准大小
    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()
    }

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

    import './utils/rem'

    引入文件后,查看页面的html节点,是否有被自动添加 font-size。

    注意:完成到这一步,也就是实现了rem布局,实际开发的时候,还是需要我们去计算对应的rem值去开发。

    下一步我们就配置一下webpack,自动转换px为对应的rem值。

    配置 postcss-pxtorem 自动转换px为rem

    1、安装 postcss-pxtorem

    $ npm install postcss-pxtorem -D

    2、修改 /build/utils.js 文件

    找到 postcssLoader 的代码块

    const postcssLoader = {
     loader: 'postcss-loader',
     options: {
      sourceMap: options.sourceMap
     }
    }

    修改为:

    const postcssLoader = {
      loader: 'postcss-loader',
      options: {
       sourceMap: options.sourceMap,
       plugins: [
        require('postcss-pxtorem')({
         'rootValue': 32,
         propList: ['*']
        })
       ]
     }
    }

    按照上述配置项目后,即可在开发中直接使用 px 单位开发。

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

    body {
      750px;
     height: 1136px;
    }

    将被转换为

    body {
     widht: 23.4375rem;
     height: 35.5rem;
    }

    如果要让部分属性不转换成 rem,可以将 px 写成 Px:

    div{
       375Px;
      height: 812px;
    }

    这时页面就会保留375px

    body {
     widht: 375px;
     height: 35.5rem;
    }
  • 相关阅读:
    010-你觉得单元测试可行吗
    跳台阶
    斐波那契数列
    旋转数组的最小数字
    用两个栈实现队列
    重建二叉树
    从尾到头打印链表
    替换空格
    二维数组中的查找
    Best Time to Buy and Sell Stock III
  • 原文地址:https://www.cnblogs.com/xiaoyaoxingchen/p/15710335.html
Copyright © 2011-2022 走看看