zoukankan      html  css  js  c++  java
  • Vue项目自动转换 px 为 rem,高保真还原设计图

    技术栈

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

    自动设置根节点htmlfont-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、修改根目录 .postcssrc.js 文件

    找到 plugins 属性新增pxtorem的设置

    "postcss-pxtorem": {
      "rootValue": 32,
      "propList": ["*"],
      // 注意:如果有使用第三方UI如VUX,则需要配置下忽略选择器不转换。
      // 规则是class中包含的字符串,如vux中所有的class前缀都是weui-。也可以是正则。
      "selectorBlackList": ["weui-"]
    }
    

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

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

    body {
    	 750px;
    	height: 1136px;
    }
    

    将被转换为

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

    注意:此方法支持import.vue单文件中style。暂不支持style中使用@import url();


    作者:猪不乐意
    链接:https://juejin.im/post/5a716c4c6fb9a01cb42cac4b
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Oracle之:Function :dateToNumber()
    Oracle之:Function :getcurrdate()
    Oracle之:Function :getdate()
    Hadoop-No.15之Flume基于事件的数据收集和处理
    Hadoop-No.14之文件传输的特点
    Hadoop-No.13之数据源系统以及数据结构
    Hadoop-No.12之数据采集的时效性
    Hadoop-No.11之元数据
    Hadoop-No.10之列簇
    Hadoop-No.9之表和Region
  • 原文地址:https://www.cnblogs.com/yuerdong/p/8427807.html
Copyright © 2011-2022 走看看