Vue项目自动转换 px 为 rem的实现方法


Posted in Javascript onOctober 29, 2018

前端开发中还原设计图的重要性毋庸置疑,目前来说应用最多的应该也还是使用rem。然而很多人依然还是处于刀耕火种的时代,要么自己去计算rem值,要么依靠编辑器安装插件转换。

而本文的目标就是通过一系列的配置后,在开发中可以直接使用设计图的尺寸开发,项目为我们自动编译,转换成rem。

技术栈

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 {
 width: 750px;
 height: 1136px;
}

将被转换为

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

总结

以上所述是小编给大家介绍的Vue项目自动转换 px 为 rem的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
微信小程序开发(二)图片上传+服务端接收详解
Jan 11 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
vue cli4.0项目引入typescript的方法
Jul 17 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 #Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 #Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 #Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
Oct 29 #Javascript
简单说说angular.json文件的使用
Oct 29 #Javascript
JS 实现获取验证码 倒计时功能
Oct 29 #Javascript
浅析微信扫码登录原理(小结)
Oct 29 #Javascript
You might like
关于php 高并发解决的一点思路
2017/04/16 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
Python读取word文本操作详解
2018/01/22 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
关于python中的xpath解析定位
2020/03/06 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
园长自我鉴定
2013/10/06 职场文书
综合实践活动方案
2014/02/14 职场文书
双拥工作宣传标语
2014/06/26 职场文书
公证委托书格式
2014/09/13 职场文书
招标保密承诺书
2015/01/20 职场文书
收费员岗位职责
2015/02/14 职场文书
施工安全责任协议书
2016/03/23 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers