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 相关文章推荐
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
简单实现AngularJS轮播图效果
Apr 10 Javascript
深入理解 JavaScript 中的 JSON
Apr 06 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
解决vue attr取不到属性值的问题
Sep 18 Javascript
javascript实现日历效果
Jun 17 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 URL编码解码函数代码
2009/03/10 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
php实现插入排序
2015/03/29 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python爬取京东的商品分类与链接
2016/08/26 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python实现名片管理系统
2020/02/14 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
新闻专业推荐信范文
2013/11/20 职场文书
初中生个人学习的自我评价
2013/12/04 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
出纳会计岗位职责
2014/03/12 职场文书
综艺节目策划方案
2014/06/13 职场文书
迎国庆演讲稿
2014/09/15 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers