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
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    【转】HTTP 状态码详解
    程序员自我提升之粗粮与细粮
    配置Eclipse支持MacBook Pro Retina屏幕的办法(解决Retina屏幕下eclipse字体变虚的问题)
    IE6下lineheight失效:当文字与图片img在同一行中显示时lineheight失效的解决办法
    2013年第二周的总结
    为什么这么多的云存储产品却没有一个能够统一管理它们的应用出现
    微软的云笔记:OneNote+SkyDrive
    完美的外出上网解决方案随身随地享用你的专有WIFI网络(3G无线路由器+sim卡卡托+3G资费卡)
    [转]如何才能更加有效率
    Perl Note
  • 原文地址:https://www.cnblogs.com/yuerdong/p/8427807.html
Copyright © 2011-2022 走看看