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 concat数组累加 示例
Sep 03 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
Jul 31 Javascript
js sort 二维数组排序的用法小结
Jan 24 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
jQuery插件jPaginate实现无刷新分页
May 04 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
webpack external模块的具体使用
Mar 10 Javascript
JS获取本地地址及天气的方法实例小结
May 10 Javascript
layui实现给某一列加点击事件
Oct 26 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
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
使用Python读取大文件的方法
2018/02/11 Python
django-filter和普通查询的例子
2019/08/12 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python实现拼接图片
2020/03/23 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
中学生校园广播稿
2014/01/16 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
七个Python必备的GUI库
2021/04/27 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
使用python绘制横竖条形图
2022/04/21 Python