一、 rpx:全称“response pixel”,即响应式的px,rpx单位是微信小程序中css的尺寸单位,它可以根据屏幕宽度进行自适应。如在iphone6上,屏幕宽度375px,共有750个物理像素,则750rpx = 375px = 750物理像素,即1rpx = 0.5px = 1物理像素。
设备 rpx换算px(屏幕宽度/750) px换算rpx(750/屏幕宽度)
iphone5 1rpx = 0.42rpx 1px = 2.34rpx
iphone6 1rpx = 0.5px 1px = 2rpx
iphone6s 1rpx = 0.552px 1px = 1.81rpx
开发微信小程序时,设计师一般用iphone6作为视觉稿的标准。我们设计稿使用设备宽度为750px,等比例换算成rpx,这样的话,设计图量出来的尺寸是多少px就是多少rpx,至于在不同的设备上实际上要换算成多少个rpx就交给小程序自己换算。
二、 rem:是相对于根元素的字体大小的单位,常用于做移动端自适应布局。
一般浏览器不设字体大小的情况下默认为16px,通常认为1rem = 16px,可以根据屏幕宽度大小去设置字体大小,可写js代码如下:
let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
let htmlEle = document.getElementsByTagName('html')[0]
htmlEle.style.fontSize = htmlWidth / 10 + 'px';
或者使用多媒体查询去设置html字体大小,如
@media screen and (max-width:320px){html{font-size:20px;}}
@media screen and (min-width:321px) and (max-width:480px){html{font-size:24px;}}
......
我们在开发过程中可以借助于scss,自定义转换函数,在.scss文件中写转换函数,如:
@function px2rem($px){
$rem: 37.5px // 基准值 (屏幕宽度/ 10 或者 屏幕宽度/20 ...)
@return ($px / $rem) + rem
}
.header {
height: px2rem(800px)
}