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 相关文章推荐
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
js实现炫酷光感效果
Sep 05 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实现在线阅读PDF文件的方法
2015/06/17 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
javascript与CSS复习(二)
2010/06/29 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
JS常用函数使用指南
2014/11/23 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python3的输入方式及多组输入方法
2018/10/17 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
自荐信封面
2013/12/04 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
大连星海广场导游词
2015/02/10 职场文书
食品安全责任书范本
2015/05/09 职场文书
人与自然观后感
2015/06/16 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
2016十一国庆节感言
2015/12/09 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle