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对象的property和prototype是什么一种关系
Aug 06 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
vue cli升级webapck4总结
Apr 04 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 Javascript
原生js实现表格循环滚动
Nov 24 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 jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python实现建立SSH连接的方法
2015/06/03 Python
python 判断网络连通的实现方法
2018/04/22 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
django queryset相加和筛选教程
2020/05/18 Python
django和flask哪个值得研究学习
2020/07/31 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
期中考试后的反思
2014/02/08 职场文书
六查六看自查材料
2014/02/17 职场文书
建国大业观后感600字
2015/06/01 职场文书
公司出差管理制度范本
2015/08/05 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
浅谈JS的原型和原型链
2021/06/04 Javascript
Python语言规范之Pylint的详细用法
2021/06/24 Python
Python+Tkinter打造签名设计工具
2022/04/01 Python