专栏名称: 爱范儿
关注这个时代最好的产品。
目录
相关文章推荐
51好读  ›  专栏  ›  爱范儿

为什么小程序能适配不同机型?因为微信做了这个

爱范儿  · 公众号  · 科技媒体  · 2016-12-09 11:59

正文

我们都知道,小程序是一个跨系统的平台。这就意味着,小程序会在不同的设备上运行,但不同设备的分辨率会有差异。
在小程序中,如何在分辨率不同的设备上保证视觉元素的正常显示?这就需要名为 rpx 的动态尺寸单位。
本期,知晓程序(微信号 zxcx0101)为大家带来小程序 rpx 单位全解析,希望能够帮助你解决有关 rpx 的一切疑问。
为什么需要动态单位和 rpx?
在显示屏上,每一个画面都是由无数的点阵形成的。这个点阵中,每一个点叫做像素,就是 pixel(缩写为 px)。
上面的那句话,对于很多人来说都是常识。
但是,随着 Retina 屏幕(即「视网膜屏」)的推出和高分屏的普及, 1 px 所能代表的尺寸并非是一成不变的
对于跨平台、跨设备的应用来说,单纯使用 px 并不能满足需要。因为,这很难保证小程序的元素,能在不同设备上正常显示——同样 px 尺寸的元素,在高分屏上显示会明显要比在低分屏显得更小。
因此, 我们需要一个动态的长度单位 。这个单位通过对不同屏幕的分辨率进行调整和适配,保证相同元素在不同屏幕上的展示是正常的。
苹果和 Google 对此都有相应的措施:
  • 由于苹果对高分屏的优化良好,所以在 iOS 上,代码中的 1px 所代表的实际像素数会根据不同设备动态调整,开发者不需要进行二次换算。

  • 由于 Android 设备碎片化严重,Google 不得不建立了一个新的名叫「density-independent pixel(密度无关像素,缩写为 dp)」的尺寸单位,以适应不同分辨率屏幕的尺寸换算。

微信也为小程序提供了一个动态单位解决方案 :它就是 responsive pixel(动态像素),简称 rpx。
Pixel 与 rpx、dp 如何换算呢?
了解动态单位是怎么来的以后,我们下一步就该学习如何在 px 和 rpx、dp 之间进行换算了。
动态单位与 px 换算的基本概念是: 选择一个分辨率作为基准,在基准分辨率中,一个像素点显示有多长,在其他屏幕上会显示同样长度。
例如,dp 与 px 换算公式是: dp = px * (目标设备 dpi 分辨率 / 160)
但微信小程序的 rpx 换算方式,会与其他动态单位的换算方法有些出入。 微信官方提供的换算方式更「傻瓜」一些: rpx = px * (目标设备宽 px 值 / 750)
举个例子:
  • 目标设备的宽度如果是 375px,按照 750rpx 进行换算,则等于 1rpx = 0.5px

  • 目标设备的宽度如果是 1125px,换算后 1rpx = 1.5px

想想是不是有些不太对劲?没错, 如果将微信小程序放到平板电脑上运行,屏幕的宽度 px 值有可能会变化 (横竖屏、分屏模式等等)。这时候,再以宽度为基准,就会出现元素显示不正确的问题。
从这一点可以看出, 微信团队目前并不希望将小程序扩展到手机以外的设备中。 因此,开发者暂时可以专注于提高小程序在手机上的体验,无需担心多尺寸屏幕带来的适配问题。
那能不能直接让 rpx 和 dp 进行互换呢? 当然不能!
dp 是以屏幕分辨率为基准的动态单位,而 rpx 是以长度为基准的动态单位,两者是不能直接进行互换的。除非微信官方为 rpx 设定的是分辨率基准而非长度基准。






请到「今天看啥」查看全文


推荐文章
MeiHe_NY  ·  季报悲喜剧,零售3.0
8 年前
他化自在天  ·  波旬:局外有天
8 年前
信贷风险管理  ·  推荐一本信贷担保领域的实务书籍!
7 年前