在做前端开发的过程中,避免不了适配的问题,宽屏窄屏折叠屏。在适配方案中,有一个方案也是大家几乎都听过的,就是 rem 方案。在我看来,使用 rem 是非常错误的。但是在我混迹的一些前端圈子里,现在还是有很多人提起,所以今天想聊聊这个方案。
说实话我其实没怎么用过这个方案,我只在很多年前第一份工作的时候,在写几个移动端的活动页的时候用了,那时候完全就是个小白,啥都不会,当时都不知道适配是啥。公司里还就我一个前端,没有人教我东西,我自己上网搜到的,看完原理介绍感觉很牛逼,就跟着实现了一遍。
当时觉得这个方案好牛逼啊,我只要计算对根节点的 fontsize,然后写元素的宽高位置只要根据规则无脑写就行了。
然后第二年跳槽去了新公司,我在写页面的时候,还是用 rem 方案,然后提 mr 给组长看。他问我,你为啥要用 rem 啊,我说我是为了更好的适配性,在不同设备上都展示相同的比例。
然后组长问了我一句
“为啥不同的设备要长的一样?”
当时直接给我 cpu 干烧了,因为我真不知道为什么,我用它也是跟风,看别人都用,我就跟着用。后面我仔细思考了一下,我当初选择用 rem 是因为我不会写自适应页面,但是会用 rem 不等于会写自适应了。我当初选择他是错误的,因为我没有找到我的核心问题。
从那之后这么多年过去了,写了无数的页面,我再也没有用过 rem 方案了。我一直是写 px,像百分比,vw,vh 等我都没怎么写过。对 rem 我已经很陌生了,所以我找的了十多年前大名鼎鼎的手淘方案代码 github.com/amfe/lib-fl… 让 ai 解释一下。
看完之后我的感觉就是,这套方案对于现在来说,实在是过时了,可能在那个互联网巨头野蛮生长,追求极致的开发效率的时代会很有用?
现在我认为用 rem 方案就是纯纯的偷懒, ui 偷懒,前端也偷懒。在不同的尺寸就应该设计多套图,前端自适应代码。
这是我找到的一个京东活动页
正常尺寸看着是没问题的。然后我给显示区域拉宽
就变成了这样,不知道是不是年纪大了的原因,我的瞳孔甚至要调整一下焦距才能看的舒服。有人会说这是个移动端页面,你非要用电脑放大了看那肯定效果不好
那正好昨天华为新发布了宽屏折叠手机,不知道这个页面在华为手机上效果咋样,如果还是这样就太可恨了
因为“我买大屏手机是为了看的更多,而不是看的更大!”
怎么评价呢,反正我会觉得这也公司山寨感满满,不注重细节,偷工减料,如果我不知道这是东子,我的第一印象是非常差的。
看下掘金的适配情况
他们对于窄屏宽屏处理的还是非常好的
比如 创作中心 按钮
是使用 css 的媒体查询在做展示隐藏的效果,而没有使用 js 来计算,值得表扬。
但是我发现了另外一个问题,我不能理解
按钮为什么要设置宽度?并且还是 rem?因为我很少写width等于多少。
修改一下文案内容,展示就不正确了,那以后掘金要是做国际化岂不是炸了?估计整个站都得重写
我修改了一下根节点的 font-size页面就混乱了,该大的小,该小的大。很山寨。
我想不到掘金用 rem 作为单位有什么好处,这到底是用了 rem 方案还是没用 rem 方案啊?希望有懂哥能解答一下。
为了对比,我去看了一下 vitePress。
vitePress 写 css 的思路和我很像,全用 px,几乎不写定宽定高,全靠内容line-height 和内容宽度自己撑起来。他们的宽窄屏变化起来看着很舒服。