移动端适配 = vw or rem ?

抽象流星
• 阅读 965

一、关于vw与rem方案中的一些思考 并不是所有场景下的移动端页面都适合采用vw或rem的方案,这类方案的本质是布局等比例的缩放,让页面在不同尺寸的屏幕下有类似于矢量图片缩放的效果,即保证页面各元素之间位置尺寸的比例关系,并让元素可以清晰地展现。这样的方案更适合于视觉组件种类较多,视觉设计对元素位置的相对关系依赖较强的移动端页面。其实大部分页面都可以使用rem或vw的方案进行适配,但对于文本内容较多,或者说希望引导用户沉浸浏览的页面,我个人并不推荐使用等比缩放的方案,至少并不推荐完全使用等比缩放的方案,对于文本内容还是应该直接使用px这种绝对长度单位,毕竟在大屏手机上用户希望看到的是更多的内容而不是更大的内容。实际上很多这类的网站也确实是直接使用px结合flex等布局方式进行移动端适配的。

二、现有生产环境中移动端适配方案的一点总结

1、px方案
就像开篇提到的,并不是说移动端就一定要使用相对长度单位,传统的响应式布局依然是很好的选择,尤其在新闻,社区等可阅读内容较多的场景直接使用px单位可以营造更好地体验。px方案可以让大屏幕手机展示出更多的内容,更符合人们的阅读习惯。采用这种方案的网站有:

腾讯 ---- 移动端首页主要是新闻内容,需要更好的阅读体验,适合直接使用px进行布局。

知乎 ---- 知乎也是比较典型的追求阅读体验的场景,不出意外的也是直接使用px。

点评 ---- 视觉元素较丰富,依旧采用了px方案,页面基本是flex布局,适配效果很好

淘宝 ---- 淘宝移动端的适配方案和rem/vw的方案其实是差不多的,元素的样式都是通过js生成的,虽然单位确实是px,但是方案依旧是以375px宽度的尺寸为基准进行缩放的。

2、rem方案
rem方案主要分为两种:
一种是缩放viewport的方案,如当年的lib-flexible,可以对1px border等细节问题较方便的处理,但会影响到media query。
另一种就是不缩放viewport,对1px boder等问题单独引入处理方案。然后对于基准尺寸下的html元素fong-size也有很多不同的定义方式

以下说明的rem与px的对应关系都是在屏幕宽度为375px的情况下

(1) 不缩放viewpor
马蜂窝 ---- 1rem = 37.5px

小米 ---- 1rem = 52.0833px

小红书 ---- 1rem = 50px

微博 ---- 1rem = 16px 稍微说明下 微博的font-size是根据media query来生成的

(2)缩放viewport

点评 ----1rem = 100px

B站 ---- 主站 1rem = 46.875px

搜狐 ---- 1rem = 75px

3、vw方案
(1)京东
京东的移动端首页采用了vw+rem的布局方式,元素布局上依然使用rem单位,没有缩放viewport, html元素的font-size则使用vw + px fallback的形式,并且使用media query来限制布局宽度,如下图所示

边界情况下

(2)网易
网易的方案和京东基本相同,没有缩放viewport,使用media query,只处理html元素的font-size,并限制布局宽度

(3)饿了么
饿了么也是采用的vw+rem的方案,不过对viewport进行了缩放,也没有限制布局宽度,html元素的font-size依然由px指定,但是具体元素的布局上使用vw + px fallbak的形式,如下图所示:

可以看到,使用上述两种vw+rem的方案对现有的rem方案的改动都不会很大,都采用了vw + fallback的方式,兼容性问题得到了保证,只是饿了么的方案可能更需要构建过程中的插件支持。
更多技术资讯可关注:gzitcast

点赞
收藏
评论区
推荐文章
九路 九路
4年前
啥是前端开发工程师必会的5种网页布局方法?
一、静态布局(staticlayout)即传统Web设计,网页上的所有元素的尺寸一律使用px作为单位。1、布局特点不管浏览器尺寸具体是多少,网页布
菜园前端 菜园前端
2年前
CSS布局方式-自适应布局
原文链接:什么是自适应布局?在不同屏幕分辨率下,能够以最佳的方式进行展示,元素的宽度尺寸可能会改变,但是原有的展示方式不会改变。通常使用%单位来实现自适应布局。优点页面能够兼容不同分辨率的屏幕。缺点因为开发的时候需要考虑多种分辨率下的情况,会额外增加一些工
菜园前端 菜园前端
2年前
CSS布局方式-响应式布局
原文链接:什么是响应式布局?在不同屏幕分辨率下,能够以最佳的方式进行展示,元素的宽度尺寸以及展示方式可能会改变。通常使用@media多媒体查询来实现响应式布局。优点页面能够兼容不同分辨率的屏幕。缺点工作量大,UI需要设计多个平台的版本。场景一套代码兼容we
浩浩 浩浩
4年前
【Flutter实战】对齐与相对定位(Align)
4.6对齐与相对定位(Align)在上一节中我们讲过通过Stack和Positioned,我们可以指定一个或多个子元素相对于父元素各个边的精确偏移,并且可以重叠。但如果我们只想简单的调整一个子元素在父元素中的位置的话,使用Align组件会更简单一些。4.6.1AlignAlign组件可以调整子组件的位置,并且可以根据子
Chase620 Chase620
4年前
vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
vuecli3.0结合libflexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vuecli3.0结合libflexible、px2rem实现移动端适配的方案,开发过程中也遇到一些坑,自己选的方案自己
Wesley13 Wesley13
3年前
HTML5常见的取值与单位
HTML5常见的取值与单位长度单位包括相对长度单位包括:em,ex,ch,rem,vw,vh,vmax,vmin绝对长度单位包括:cm,mm,q,in,pt,pc,pxch:数字“0”的宽度em:相对于当前对象内文本的字体尺寸。如当前
Wesley13 Wesley13
3年前
CSS内容布局
网页是由不同内容块构成的:标题、段落、链接、列表、图片、视频,等等。1.定位定位并不适合总体布局,因为它会把元素拉出页面的正常流。元素的初始定位方式为静态定位(static),即块级元素垂直堆叠。把元素设置为相对定位(relative),然后可以相对于其原始位置控制该元素的偏移量,同时又不影响其周围的元
Stella981 Stella981
3年前
Sketch 和 PS中的设计图如何实现“自动切图”?
切图是很多UI设计师的一项日常工作。平时做完设计图,要将设计稿切成便于制作成页面的图片,并标注好尺寸和间距,交付给前端来完成htmlcss布局的静态页面,有利于交互,形成良好的视觉感。但有的认为前端自己会切图是最好,不建议把切图的事情丢给设计师做。这样中途会损耗结构讲解的开销(比如网页层级,细节重构方案等),毕竟最后css是前端去码,怎么切最合适要自己
Stella981 Stella981
3年前
Literally “Canvas”
LiterallyCanvas  是一个开源的HTML5组件,可以集成到任何页面中,让用户可以在线画图。它配备了一组简单的工具,包括绘制,擦除,颜色选择器,撤消,重做,平移和缩放。插件采用jQueryUnderscore.js开发,并拥有一个API来背景颜色,工具和尺寸。此外,可以将绘制后的结果导出成图片。项目地址:htt
Stella981 Stella981
3年前
Javascript浏览器兼容性
JS<noscript标签早期浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳地退化。对这个问题的最终解决方案就是创造一个<noscript元素,用以在不支持JavaScript的浏览器中显示替代的内容。这个元素可以包含能够出现在文档<body中的任何HTML元素一一<scri
如何利用烛龙和谷歌插件优化CLS(累积布局偏移) | 京东云技术团队
简介CLS衡量的是页面的整个生命周期内发生的每次意外布局偏移的最大突发性布局偏移分数。布局变化的发生是因为浏览器倾向于异步加载页面元素。更重要的是,您的页面上可能存在一些初始尺寸未知的媒体元素。这种组合意味着浏览器在加载完成之前无法确定单个元素将占用多少空