rem 适配全过程

我给你画一张 从设计稿 → 手机页面 的完整 rem 适配流程图,一步一步看就很清晰。


1 设计稿(UI 给你的图)

设计师给的是 750px 宽设计稿

lua 复制代码
设计稿(750px)

|------------------------------------------------|
|                                                |
|                750 px                          |
|                                                |
|     [ 按钮 150px ]                              |
|                                                |
|------------------------------------------------|

例如按钮:

复制代码
按钮宽度 = 150px

2 我们规定一个规则(关键)

为了方便计算,前端规定:

ini 复制代码
设计稿 100px = 1rem

所以:

ini 复制代码
150px ÷ 100 = 1.5rem

代码写成:

css 复制代码
button{
  width:1.5rem;
}

这一步只是 把 px 换成 rem


3 整个设计稿宽度换算

设计稿:

复制代码
750px

根据规则:

ini 复制代码
750 ÷ 100 = 7.5rem

所以我们认为:

vbscript 复制代码
整个屏幕宽度 = 7.5rem

图示:

lua 复制代码
设计稿

|----------------750px----------------|

换算成 rem

|--------------7.5rem-----------------|

4 JS 根据手机宽度计算 rem

JS代码:

ini 复制代码
html.style.fontSize = 屏幕宽度 / 7.5

意思就是:

ini 复制代码
7.5rem = 手机屏幕宽度

5 举个真实手机例子

iPhone 8

屏幕宽度:

复制代码
375px

计算:

ini 复制代码
375 ÷ 7.5 = 50

所以:

ini 复制代码
1rem = 50px

图示:

ini 复制代码
手机屏幕

|--------------375px--------------|

换算

|--------------7.5rem-------------|

1rem = 50px

6 元素最终大小

按钮:

vbscript 复制代码
1.5rem

计算:

ini 复制代码
1.5 × 50 = 75px

页面效果:

lua 复制代码
手机页面

|--------------------------------|
|                                |
|      [按钮 75px]                |
|                                |
|--------------------------------|

7 如果换一个更大的手机

假设:

复制代码
屏幕 = 414px

计算:

ini 复制代码
414 ÷ 7.5 = 55.2

所以:

ini 复制代码
1rem = 55.2px

按钮:

复制代码
1.5 × 55.2 ≈ 82.8px

页面自动变大。

图示:

ini 复制代码
大屏手机

|----------------414px----------------|

1rem = 55.2px

按钮:

|------82.8px------|

8 整个 rem 适配流程图(终极理解)

ini 复制代码
设计稿 750px
      │
      │ 规定
      ▼
100px = 1rem
      │
      ▼
屏幕宽 = 7.5rem
      │
      │ JS计算
      ▼
html font-size = 屏幕宽度 / 7.5
      │
      ▼
不同手机得到不同 rem
      │
      ▼
页面按比例缩放

9 一句话理解

你可以这样记:

ini 复制代码
750设计稿
100px = 1rem
所以屏幕宽 = 7.5rem

JS只是保证:

vbscript 复制代码
7.5rem 永远等于屏幕宽度

页面自然就 等比例缩放


如果你在准备 前端面试 ,我可以再给你讲一个 90%面试官都会追问的问题

为什么现在很多项目不用 rem,而改用 vw 适配?

这个问题很多人答不好,但其实 非常简单且很加分

相关推荐
像我这样帅的人丶你还16 分钟前
从交稿到甩锅预防:AI 前端流水线
前端·ai编程
想想弹幕会怎么做17 分钟前
如何构建一颗可交互的ui树?
前端
程序员陆业聪22 分钟前
我见过的最反直觉的 Android 架构问题:UseCase 越多,项目越烂
前端
Arya_aa29 分钟前
网络:前端向后端发送网络请求渲染在页面上,将EasyMock中的信息用前端vue框架编写代码,最终展示在浏览器
前端·vue.js
LlNingyu30 分钟前
文艺复兴,什么是CSRF,常见形式(一)
前端·安全·web安全·csrf
晓131333 分钟前
React篇——第三章 状态管理之 Redux 篇
前端·javascript·react.js
子兮曰38 分钟前
🚀24k Star 的 Pretext 为何突然爆火:它不是排版库,而是在重写 Web 文本测量
前端·javascript·github
@大迁世界41 分钟前
11.在 React.js 中,state 与 props 的差异体现在哪里?
前端·javascript·react.js·前端框架·ecmascript
Giant10043 分钟前
🔥前端跨域封神解法:Vite Proxy + Express CORS,一篇搞定所有跨域坑!
前端·javascript·面试
用户3167361303421 小时前
SSE消息推送前后端代码
前端·后端