小程序推荐使用的长度单位是rpx,看看官方说明:
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。
首先提出几个疑问:
1.为什么模拟器下ip6的分辨率是375,而设计图一般会给750,所以设计图上“100px”的长度开发者要写成“50px”?
2.为什么ip 3Gs和ip 4/4s的屏幕都是3.5寸,但4/4s的屏幕看起来更清晰?
3.ip6 Plus 屏幕看起来会比ip6/ip6s更清晰吗?为什么?
4.小程序是如何做不同分辨率设备的自适应的?
先要清楚的概念:
- pt:逻辑分辨率。pt的大小与屏幕的尺寸有关,可以简单理解为长度单位;
- px:物理分辨率。和屏幕尺寸无关。可以简单理解为像素点;
- pt与px的关系:1个pt对应几个px,既每个单位长度里有几个像素点。一个pt可以由1个或多个px构成;
- ip6下,1个pt有2个px构成(375 x 667 pt; 750 x 1334 px);
- Render屏:又称为视网膜屏,意思是屏幕的1个单位的像素密度已经达到人眼能分辨的极限,如果在该单位下再增加像素,人类视觉上并不会觉得更加清晰(1个单位的像素密度为2px (@2x));
- 通常称ip 3GS称为非Render屏,4/4s(或以上)称为Render屏;
- 我们所说的屏幕尺寸并不是指长或宽,而是屏幕的对角线
移动端分辨率解析:
我们经常会看到一样移动设备分辨率的对比图,如下
从图中可以看到,Render是px与pt的倍数关系,既一个pt下有多少个px。
1.解答问题1:为什么4比3GS清晰?
图中可以看到,3GS和4的屏幕一样大,都是3.5寸(既逻辑分辨率pt都是320x480),但是物理分辨率px却不同(看图),他们的关系是:
在3GS中,1个单位的pt中有1个px,所以Reader为1倍(既@1x)
在4/4s中,1个单位的pt中由2个px,所以Reader为2倍(既@2x)
2.解答问题2:6Plus不会比6/6s更清晰。
由图可知,6Plus的Reader为3倍,既1个单位中有3个像素点,6/6s位2倍,既1个单位中有2个像素点(1pt = 2px)),已经达到了人眼极限,所以看起来6Plus并不会更清晰。
3.解答问题4:小程序是如何做不同分辨率设备的自适应的?
官方文档上说
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
4.解答问题3:为什么模拟器下ip6的分辨率是375,而设计图一般会给750?
375指的是逻辑分辨率,小程序显示的是逻辑分辨率,即375pt,
750指的是物理分辨率,设计师给的一般都是物理分辨率,750px,
根据:
在ip6下1rpx=0.5px(小程序的开发设计原则)
和在ip6下Reader为2倍即1pt=2px(由上图可知)
可知:
1pt = 2px = 2rpx
所以:
375pt = 750px,而750px=375rpx,所以设计稿的750px在小程序开发时对于的单位是375rpx(即1rpx=0.5px)
总结:
在ip6下1rpx = 0.5px = 1物理像素,不同设备分辨率下小程序会对rpx单位自动转换。
开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。
所以最后是:
以ip6作为标准的设计稿时(750x1334 px),在开发小程序时设计稿的1px
可以写成0.5px
或1rpx
。
参考链接:https://www.zhihu.com/question/19625584