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 相关文章推荐
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
jquery选择器之内容过滤选择器详解
Jan 27 Javascript
jquery访问ashx文件示例代码
Aug 11 Javascript
JavaScript闭包详解
Feb 02 Javascript
javascript计时器编写过程与实现方法
Feb 29 Javascript
JS读写CSS样式的方法汇总
Aug 16 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
详解Vue源码之数据的代理访问
Dec 11 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
Nov 05 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
我的php学习笔记(毕业设计)
2012/02/21 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
php 可变函数使用小结
2018/06/12 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
Js自定义多选框效果的实例代码
2017/07/05 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
项目建议书格式
2014/03/12 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
Python基础详解之描述符
2021/04/28 Python
教你使用pyinstaller打包Python教程
2021/05/27 Python