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 相关文章推荐
屏蔽F1~F12的快捷键的js函数
May 06 Javascript
javascript中bind函数的作用实例介绍
Sep 28 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
常用的Javascript数据验证插件
Aug 04 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
VUE中使用Vue-resource完成交互
Jul 21 Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
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
JAVA/JSP学习系列之七
2006/10/09 PHP
php字符串截取的简单方法
2013/07/04 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
PHP单链表的实现代码
2016/07/05 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
图片按比例缩放函数
2006/06/26 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
基于python实现聊天室程序
2018/07/27 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python 堆和优先队列的使用详解
2019/03/05 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
自荐信格式简述
2014/01/25 职场文书
单位创先争优活动方案
2014/01/26 职场文书
职务任命书范本
2014/06/05 职场文书
会议欢迎标语
2014/06/30 职场文书
工作求职信
2014/07/04 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
迎国庆横幅标语
2014/10/08 职场文书
公司租房协议书范本
2014/10/08 职场文书
公务员考察材料
2014/12/23 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
MySQL七种JOIN类型小结
2021/10/24 MySQL