微信小程序中单位rpx和rem的使用


Posted in Javascript onDecember 06, 2016

前言

这篇文章主要给大家讲解了rpx和rem应用于微信小程序,如果你还没有入门,建议先从下面看起

     微信小程序官方文档

     >web app变革之rem

     >rpx单位官方文档

     >rpx单位基础介绍

如果看完上面几篇文章,我们开始进入正题吧~~

一、rem的使用

1) js中导入下面这段代码

(function (doc, win) {
 var docEl = doc.documentElement,
 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
 recalc = function () {
 var clientWidth = docEl.clientWidth;
 if (!clientWidth) return;
 docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
 };

 if (!doc.addEventListener) return;
 win.addEventListener(resizeEvt, recalc, false);
 doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

2) 根据设计稿宽度算出rem和px直接的转换公式

例如:

640px的设计稿,转换公式就是按照上面js中这句而来【docEl.style.fontSize = 20 * (clientWidth / 320) + 'px'】,最终 1rem = 20 x 640/320 + 'px' = 40px;

3)根据设计稿按照1rem = 40px 对着各个元素进行单位转换

例如:

我们测量一个元素宽度是400px,那么最终css中这样写 width:400/40 = 10rem

微信小程序中单位rpx和rem的使用
正常情况下rem的使用

二、rpx的使用

1)小程序中rpx与px的转换

例如:设计稿750px宽度

那么恭喜您,你ps上量出宽度是多少,那么你就定义多少rpx,也就是 1px = 1rpx

例如:设计稿640px宽度

那么很遗憾,你需要转换一下 1px = 750/640 rpx

微信小程序中单位rpx和rem的使用
小程序中rpx和px的转换

2)小程序中如何继续使用rem

例如:设计稿750px宽度

此时1rem = (750/20)rpx = 37.5px

例如:设计稿640px宽度

此时1rem = (750/20)rpx = 32px

微信小程序中单位rpx和rem的使用
小程序中rem的使用

注意:无论设计稿多少,rem与rpx换算总是一样的,但是rem与px在小程序中换算是 rem = 设计稿宽/20,这一点与我们平时使用的rem完全不一样。

总结

小程序毕竟出来不久,以上言论有的属于官方文档,有的属于自己瞎捉摸,大家不能全信,要自己测了才知道。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript里的条件判断
Feb 27 Javascript
js实现的网页颜色代码表全集
Jul 17 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 Javascript
js实现文字截断功能
Sep 14 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
React Native时间转换格式工具类分享
Oct 24 Javascript
微信小程序实现留言板(Storage)
Nov 02 Javascript
React Native中Mobx的使用方法详解
Dec 04 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
JavaScript定时器实现的原理分析
Dec 06 #Javascript
原生js实现弹出层登录拖拽功能
Dec 05 #Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 #Javascript
原生js编写基于面向对象的分页组件
Dec 05 #Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 #Javascript
浅谈Node.js:Buffer模块
Dec 05 #Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
Dec 05 #Javascript
You might like
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php对称加密算法示例
2014/05/07 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
js预加载图片方法汇总
2015/06/15 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python 专题一 函数的基础知识
2017/03/16 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
python实现梯度下降法
2020/03/24 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
如何强制垃圾回收
2015/10/06 面试题
仓管岗位职责范本
2014/02/08 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
防卫过当辩护词
2015/05/21 职场文书
《七月的天山》教学反思
2016/02/19 职场文书