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 相关文章推荐
判断对象是否Window的实现代码
Jan 10 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
JS中Safari浏览器中的Date
Jul 17 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
Vue 设置axios请求格式为form-data的操作步骤
Oct 29 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极大的增强功能和性能
2006/10/09 PHP
PHP输入流php://input介绍
2012/09/18 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
bootstrap轮播图示例代码分享
2017/05/17 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python hashlib模块加密过程解析
2019/11/05 Python
django 读取图片到页面实例
2020/03/27 Python
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
师范生的个人求职信范文
2014/01/04 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
英语生日邀请函
2014/01/23 职场文书
中学校园广播稿
2015/08/18 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
选购到合适的激光打印机
2022/04/21 数码科技