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 document.compatMode兼容性
Feb 23 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
浅谈AngularJS中ng-class的使用方法
Nov 11 Javascript
简单实现js选项卡切换效果
Feb 09 Javascript
详解React中的组件通信问题
Jul 31 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
es6函数name属性功能与用法实例分析
Apr 18 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
深入PHP5中的魔术方法详解
2013/06/17 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
基于php实现的验证码小程序
2016/12/13 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python类如何定义私有变量
2020/02/03 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
django的autoreload机制实现
2020/06/03 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
win10安装python3.6的常见问题
2020/07/01 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
党员学习十八大感想
2014/01/17 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
个人自我剖析材料
2014/09/30 职场文书
幼师中班个人总结
2015/02/12 职场文书
护士岗位竞聘书
2015/09/15 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL