浅谈rem与rpx布局

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈rem与rpx布局相关的知识,希望对你有一定的参考价值。

参考技术A rem大家或许都比较熟悉,而rpx则是腾讯在公测小程序时所推崇;二者实质并无太大的区别,在很多的小白前端开发阶段会不懂为什么一些老前端在开发移动端过程中会出现部分地方不使用rem或者rpx而转用px,接下来谈谈我的看法:

一般开发中横向布局通常使用rem/rpx布局,纵向布局部分使用px

(适用于一行布局中多个元素布局)

1. 这里以上图为例,因为每一台手机的屏幕横向的大小是固定的,如果使用px则可能在小屏幕出现位置不可控,导致内容换行错乱等问题。故使用rem/rpx单位布局。

2. 而手机纵向的高度是无限延伸的,所以上下边距和边框等则可以使用px固定像数,这样不会对页面效果产生太大影响,而且也不用担心元素不可控错乱等问题。

(适用于一行中单元素或者左右两端的小型元素布局)

1. 同样一上图为例,对于这样的单元素或者左右小元素,可以选择px固定尺寸,原因是当横行布局只有一个元素时根本不会产生错乱,因为屏幕的宽度远大于这点小元素的宽度,如果产生错乱则可以放弃该手机适配了(这种小屏幕早该淘汰了)。

2. 纵向布局原理与上面一致。

本文章仅代表个人开发观点,实际情况实际分析,如果还是不懂就记住一句话:发生错乱就必须使用rem或者rpx布局;围绕此观点就不会有错。如果有错误还望各位大师指出,这也是我第一次写文章,多多指教。

技术文:微信小程序新单位rpx与自适应布局

rpx是微信小程序新推出的一个单位,按官方的定义,rpx可以根据屏幕宽度进行自适应,在rpx出现之前,web页面的自适应布局已经有了多种解决方案,为什么微信还捣鼓出新的rpx单位?在解释这个单位前,我们先简单了解一下目前的主流的自适应布局解决方案:

响应式(Responsive web design )
rem
流式布局
scale伸缩布局
响应式

响应式布局的问题在于需要维护多个样式文件,维护成本太大,一般的移动H5页面都不会优先考虑。

rem

rem是近几年比较流行的方案,淘宝移动web端就是采用此方案,由于1rem=根元素font-size,所以rem布局的本质就是通过rem把页面按比例分割达到自适应的效果,因为rem是相对根路径font-size尺寸,不同的页面设置不同的font-size尺寸,即可达到自适应的效果。为了方便理解,我写了一个简单的rem布局demo,通过设置

document.documentElement.style.fontSize = window.innerWidth + ‘px‘;

然后设置<div class="box"></div>的宽高等于1rem,就可以使box的宽高自适应各种设备尺寸。因为box的单位1em是跟页面设备的宽对应的,所以能做到自适应各种尺寸。

流式布局

流式布局需要用到百分比或者flex,即宽度永远铺满页面宽度,但高度和其他单位仍然用px。我个人比较推荐用流式布局,因为流式布局不需要像rem那样额外通过js动态调整根元素的字体尺寸。虽然某些大屏幕下,无法100%还原设计稿,但这也是流式布局的精髓,它的字体精度可以保持跟设备系统一致(dpi)。

scale伸缩布局

scale伸缩布局顾名思义,就是通过拉伸缩小页面来达到自适应。有两种方法,一是通过js更改viewport的initial-scale,这种方法比较麻烦,另一种是直接写死viewport的宽度,例如:<meta name="viewport" content="width=360, user-scalable=no">,意思就是告诉浏览器:这个页面我要一直用360px的宽度处理,在不同的尺寸上,麻烦伸缩一下。假如在320的iphone上,放大到360,在375的iphone上,缩小到360。这样我只需要以360这个尺寸出设计稿就行,页面会伸缩适应。实际效果可以通过手机访问:scale伸缩demo。scale伸缩的问题在于,不能显式设置minimum-scale=1.0,否则就达不到效果。而这个值是chromium37以上的webview触发gpu raster的一个条件,所以用这种方法就没法利用gpu raster硬件加速。

rpx布局

上面四个方法,各有优缺点,现在回头看看微信的rpx,相信大家已经有所启发,rpx实际上就是系统级的rem(把页面按比例分割750份,1rpx=window.innerWidth/750),或者scale伸缩布局的width=750。也就是说,微信小程序的rpx布局帮大家把rem布局的js设置根元素字体尺寸这步省了,或者减少了scale伸缩布局不能开启gpu raster的问题。

通过rpx,大家只需要根据750的设计稿写代码即可,不必担心它在各个平台的适配情况,实际上在各个平台都会长得一样,从此妈妈再也不用担心我的页面适配问题啦。

「H5程序俱乐部」是一个专注微信小程序学习交流,相关外包/招聘需求信息发布的微信公众号。
技术图片

「H5程序俱乐部」微信号:wxappclub 或者 微信扫一扫关注
技术图片







以上是关于浅谈rem与rpx布局的主要内容,如果未能解决你的问题,请参考以下文章

微信的 rpx

微信小程序新单位rpx与自适应布局

技术文:微信小程序新单位rpx与自适应布局

关于微信小程序的尺寸关系

px、rpx、em、rem 、vw/vh、百分比的区别?

em,rem,px,rpx,%区别