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
Feb 25 Javascript
用JavaScript调用WebService的示例
Apr 07 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
May 04 Javascript
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
JavaScript中使用指数方法Math.exp()的简介
Jun 15 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
纯js封装的ajax功能函数与用法示例
May 14 Javascript
浅谈vue项目用到的mock数据接口的两种方式
Oct 09 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
javascript实现贪吃蛇小练习
Jul 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过滤★等特殊符号的正则
2014/01/27 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
php 浮点数比较方法详解
2017/05/05 PHP
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python实现广度优先搜索过程解析
2019/10/19 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python如何实现远程方法调用
2020/08/07 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
优秀员工自荐信范文
2013/10/05 职场文书
室内设计专业个人的自我评价
2013/10/19 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
国旗下演讲稿
2014/05/08 职场文书
学校春季防火方案
2014/06/08 职场文书
应届生求职自荐信
2014/07/04 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
群众路线表态发言材料
2014/10/17 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
不同意离婚上诉状
2015/05/23 职场文书
装修安全责任协议书
2016/03/22 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python