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 相关文章推荐
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
Jun 08 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
jquery选择器使用详解
Apr 08 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
Nov 22 Javascript
详解vue过滤器在v2.0版本用法
Jun 01 Javascript
Node.js中 __dirname 的使用介绍
Jun 19 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
JS实现简易换图时钟功能分析
Jan 04 Javascript
微信小程序实现日历功能
Nov 27 Javascript
JavaScript canvas仿代码流瀑布
Feb 10 Javascript
OpenLayer学习之自定义测量控件
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安装全攻略:APACHE
2006/10/09 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
php-msf源码详解
2017/12/25 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python多线程threading.Lock锁用法实例
2014/11/01 Python
Cpy和Python的效率对比
2015/03/20 Python
Python Grid使用和布局详解
2018/06/30 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
Python 面试中 8 个必考问题
2018/11/16 Python
django celery redis使用具体实践
2019/04/08 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
抽象类和接口的区别
2012/09/19 面试题
年终晚会主持词
2014/03/25 职场文书
合作投资意向书
2014/04/01 职场文书
小学课外阅读总结
2014/07/09 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
python3 hdf5文件 遍历代码
2021/05/19 Python
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记