最近开发微信小程序,在写样式表的时候发现用PX的效果不太理想,而官方文档用rpx来做响应式布局单位,就仔细研究了下,在此做个小总结:

这里先引用官方定义的尺寸单位‘rpx’:可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

看不懂?没关系,我们接着往下看....

日常开发中,我们常用rem、em来做响应式布局的像素单位,他们都是相对单位。rem相对于文档的根元素,em相对于父元素。

那么问题来了,rpx到底是个啥?又该如何理解“750rpx = 375px = 750物理像素”这句话呢?

开始之前,我们先扯一扯像素、物理长度、设备独立像素、设备独立像素比都是些啥?

【像素】:它不是自然界的物理长度,指基本原色素及其灰度的基本编码。

【物理像素】:它是显示器(电脑、手机屏幕)最小的物理显示单位,每个物理像素由颜色值和亮度值组成。是不是有点眼熟?我们要记住物理像素指的是显示器上最小的点。

【设备独立像素】:它又称密度无关像素,划重点——密度无关,是计算机程序实际处理的虚拟像素(如css的px),由相关关系转化为设备像素。这个相关关系就是指下面要介绍的——设备像素比

【设备像素比】:设备像素比 = 物理像素 / 设备独立像素,单位是dpr!

以iPhone6为例:

已知,1. 设备宽高 375 * 667,在这里我们可以看做是css中的px(密度无关像素);2. retina屏幕的dpr为2。

求 iPhone6 的物理像素是多少?

送分题啊,同学们!

根据公式,我们计算出iPhone 6 的物理像素为 750 * 1334

结论:

在不同的屏幕上(普通屏幕 vs retina屏幕),css像素所呈现的大小(物理尺寸)是一致的,不同的是1个css像素所对应的物理像素个数是不一致的。

在普通屏幕下,1个css像素 对应 1个物理像素(1:1)。 在retina 屏幕下,1个css像素对应 2*2个物理像素(1:4)。

【位图像素】:一个位图像素是栅格图像(如:png, jpg, gif等)最小的数据单元。每一个位图像素都包含着一些自身的显示信息(如:显示位置,颜色值,透明度等)。觉得复杂?你只需要记住1px表示一个图片最小的点。不信?我们来用PS放大一张图片,可以看到图片被拆分成无数个点,但无论你如何放大那些小点,他们都不能再次被拆分了,因为他们已经是像素级别的点了,已经是最小的了。

理论上,1个位图像素对应于1个物理像素,图片才能得到完美清晰的展示。

所以,在宽高375 * 667,dpr为2 的 iPhone 6中完美显示200*300(css pixel)img标签,图片的尺寸应该为多少呢?答案是:400 * 600。

这就是我们针对iPhone 6 的设计稿的尺寸基于 750*1334 来设计的目的了。

回到正题.......rpx是啥?

有了上面的做铺垫,我们知道了对于iPhone6 来说, 1rpx = 1物理像素,1rpx = 0.5px;

如果不是iPhone 6 呢?

1rpx = window.innerWidth/750。

1px = 1rpx * dpr。

完......

【微信小程序】——rpx、px、rem等尺寸间关系浅析的更多相关文章

  1. 微信小程序rpx单位

    rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375p ...

  2. 微信小程序-rpx

    rpx 是微信小程序解决自适应屏幕尺寸的尺寸单位.微信小程序规定屏幕的宽度为750rpx. 微信小程序同时也支持rem尺寸单位, rem 规定屏幕的宽度为20rem, 所以 1rem = (750/2 ...

  3. 微信小程序自定义组件封装及父子间组件传值

    首先在我们可以直接写到需要的 page 中,然后再进行抽取组件,自定义组件建议 wxzx-xxx 命名 官网地址:https://developers.weixin.qq.com/miniprogra ...

  4. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  5. 微信小程序的尺寸单位rpx介绍

    rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应. 规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375 ...

  6. 微信小程序尺寸单位rpx以及样式相关介绍

    rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375p ...

  7. 微信小程序开发技巧及填坑记录

    以下是自己在开发过程中遇到的坑和小技巧,记录以下: 1.出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add pag ...

  8. 微信小程序中的单位

    vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%. vh:viewpoint height,视窗高度,1vh等于视窗高度的1%. rpx:rpx单位是微信小程序中css的尺寸单 ...

  9. 微信小程序 常见问题 小结

    1.微信小程序 尺寸单位 rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则 ...

随机推荐

  1. 磁盘存储结构与文件恢复实验(FAT文件系统)

    实验地点:主楼A2-412 一.实验室名称:主楼实验室A2-412                  二.实验项目名称:磁盘存储结构与文件恢复实验 三.实验学时:6学时 四.实验原理: 在Debug环 ...

  2. nat转发

    http://www.revsys.com/writings/quicktips/nat.html https://www.alibabacloud.com/zh/product/nat?spm=a3 ...

  3. Golang学习系列:(一)介绍和安装

    Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几 ...

  4. c语言define和typedef区别和使用

    define完全可以理解替换,typedef代表别名.听着差不多的意思,那2者区别在哪? 先来个简单例子查看基本使用. //define和typedef区别 #define DB double //替 ...

  5. ubuntu账户密码正确但是登录不进去系统

    ubuntu12.04管理员账户登录不了桌面,只能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,只能客人会话登录. ctrl+alt+f1 ,切换到tty1,输入管理员帐号和密码 ...

  6. 2.QWidget类

    简述: QWidget类是所有用户界面对象的基类. Widget是用户界面的基本单元:它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制自己. 每个Widget都是矩形的,它们按照Z-order进行 ...

  7. 从cookie中取值$.cookie()

    从cookie中取值: var userid = $.cookie("remoteuserid");例子: function delUser() {     var table = ...

  8. HAService 刨坑

    High availability is a characteristic of a system, which describes the duration (length of time) for ...

  9. (广搜)聪明的打字员 -- POJ --1184

    链接: http://poj.org/problem?id=1184 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#probl ...

  10. android多lib库工程的自动批量构建--准备

    打包这个活儿吧,本来没什么技术含量,千篇一律的更改渠道名称,然后编译,签名即可.但是如果发布渠道比较多的话,这种重复工作让人烦不胜烦.我们的应用发布渠道有30多个,若是手工打包,基本不用做其他的事情了 ...