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 28 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
Nov 30 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
妙用Angularjs实现表格按指定列排序
Jun 23 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
js实现星星海特效的示例
Sep 28 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 错误之引号中使用变量
2009/05/04 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
PHP图片水印类的封装
2017/07/06 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
jquery一句话全选/取消全选
2011/03/01 Javascript
js中eval详解
2012/03/30 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
Python 文件读写操作实例详解
2014/03/12 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
Python中super()函数简介及用法分享
2016/07/11 Python
详解Python传入参数的几种方法
2019/05/16 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
高中三年学习生活的自我评价
2013/10/10 职场文书
项目经理的岗位职责
2013/11/23 职场文书
关爱残疾人标语
2014/06/25 职场文书
应聘护士求职信
2014/07/21 职场文书
学校2014年度工作总结
2014/12/06 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Java实现带图形界面的聊天程序
2022/06/10 Java/Android