vue3.0中使用postcss-pxtorem的具体方法


Posted in Javascript onNovember 20, 2019

postcss-pxtorem是PostCSS的插件,用于将像素单元生成rem单位。

前端开发还原设计稿的重要性毋庸置疑,目前应用的单位最多还是rem,然而每次在制作过程中需要自己计算rem值,为了能够直接按照设计图的尺寸开发,并且能自动编译转换成rem,下面就来分享下postcss-pxtorem的使用。

1.安装依赖

npm install postcss-pxtorem -D

2.设置规则(更改postcss.config.js,该文件为使用vue-cli3自动创建的文件)

module.exports = {
 plugins: {
  'autoprefixer': {
   browsers: ['Android >= 4.0', 'iOS >= 7']
  },
  'postcss-pxtorem': {
   rootValue: 16,//结果为:设计稿元素尺寸/16,比如元素宽320px,最终页面会换算成 20rem
   propList: ['*']
  }
 }
}

操作到这里移动端自动适配了吗,当然不能,目前只是将px单位转换成rem,移动端适配还差最后一步,初接触rem理解起来有点懵,后来发现了一个好理解的方法,下面来分享一下。

现在我们作一个实验,你可以新建一个网页,并写入如下代码:

<div class="test">
  <p class="hello">Hello</p>
</div>

然后给html一个基本的样式:

.test{
  width:320px;
  height:160px;
  background-color: bisque;
  text-align: center;
}
.hello{
  color:red;
}

上边我们使用了还是传统的使用px作为单位,我们在移动端调试模式iphone5环境查看一下。会发现div的宽度是正好的,我们再查看一下字体,发现大小是16px。

我们现在可以把CSS中的px单位换成rem单位来进行测试。因为html根元素的字体大小是16px,那么换成rem单位,直接除以16就好。

.test{
  width:20rem;
  height:10rem;
  background-color: bisque;
  text-align: center;
}
.hello{
  color:red;
  font-size:1rem;
}

明白了REM的原理后,我们就可以使用这个特点来进行适应布局了,这也是现在比较主流的移动端web适配方案。src目录下,新建 libs/rem.js 输入如下代码

// 设置 rem 函数
function setRem () {

  // 320 默认大小16px; 320px = 20rem ;每个元素px基础上/16
  let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth;
//得到html的Dom元素
  let htmlDom = document.getElementsByTagName('html')[0];
//设置根元素字体大小
  htmlDom.style.fontSize= htmlWidth/20 + 'px';
}
// 初始化
setRem();
// 改变窗口大小时重新设置 rem
window.onresize = function () {
  setRem()
}

在main.js中引入rem.js

import './libs/rem.js';

最后刷新页面看下,就会发现原本用px的单位已经自动换算成了rem;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js对数字的格式化使用说明
Jan 12 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
JavaScript实现快速排序的方法
Jul 31 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
前端开发之CSS原理详解
Mar 11 Javascript
three.js实现3D视野缩放效果
Nov 16 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
Vue中使用的EventBus有生命周期
Jul 12 Javascript
vue 组件内获取actions的response方式
Nov 08 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 Javascript
JavaScript中的LHS和RHS分析详情
Apr 06 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 #Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 #Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 #Javascript
详解Nuxt.js 实战集锦
Nov 19 #Javascript
javascript的delete运算符知识点总结
Nov 19 #Javascript
100行代码实现vue表单校验功能(小白自编)
Nov 19 #Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 #Javascript
You might like
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
简单谈谈Python中的闭包
2016/11/30 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python命令行解析模块详解
2018/02/01 Python
python os用法总结
2018/06/08 Python
pip命令无法使用的解决方法
2018/06/12 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
基于Python函数和变量名解析
2019/07/19 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
python线程的几种创建方式详解
2019/08/29 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
英国综合网上购物商城:The Hut
2018/07/03 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
大学生村官考核材料
2014/05/23 职场文书
好的促销活动方案
2014/08/21 职场文书
在职证明范本
2015/06/15 职场文书
详解python网络进程
2021/06/15 Python