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 27 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
含有CKEditor的表单如何提交
Jan 09 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
vue实现单选和多选功能
Aug 11 Javascript
angular指令笔记ng-options的使用方法
Sep 18 Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 Javascript
更改BootStrap popover的默认样式及popover简单用法
Sep 13 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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页面函数设置超时限制的方法
2014/12/01 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
js验证表单第二部分
2006/11/25 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
python实现图片批量剪切示例
2014/03/25 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
事业单位考察材料范文
2014/12/25 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js