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 相关文章推荐
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
js动态创建、删除表格示例代码
Aug 07 Javascript
jQuery简单图表peity.js使用示例
May 02 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
vue-router路由简单案例介绍
Feb 21 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
javascript实现评分功能
Jun 24 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
编写v-for循环的技巧汇总
Dec 01 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
codeigniter框架批量插入数据
2014/01/09 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
json 实例详细说明教程
2009/10/31 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
python中time.ctime()实例用法
2021/02/03 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
上班睡觉检讨书
2014/01/09 职场文书
团组织关系介绍信
2014/01/12 职场文书
培训专员岗位职责
2014/02/26 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
美化环境标语
2014/06/20 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
音乐会主持人开场白
2015/05/28 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS