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 相关文章推荐
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
Nov 23 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 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
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
python基础教程之lambda表达式使用方法
2014/02/12 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
python批量生成条形码的示例
2020/10/10 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
几个常见的消息中间件(MOM)
2014/01/08 面试题
收银员的岗位职责范本
2014/02/04 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
公司门卫工作职责
2014/06/28 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
小学教师求职信范文
2015/03/20 职场文书
医院感染管理制度
2015/08/05 职场文书