几年前我做了一个移动端页面,当时市面上流行的是”rem + JS 动态计算根字号”的方案。

那时我研究了一整天 rem 的计算公式,才把适配搞定。几个月后重新翻项目,发现自己写了一堆分辨率的 media query 和 JS 计算代码。

现在回头看,那些代码已经可以全部删掉了——因为 CSS 已经用新的特性覆盖了这些需求。

一句话理解: 移动端前端开发的核心就是三件事——适配不同屏幕尺寸、触控交互优化、性能与缓存。

2026 年移动端适配方案

1. 视口设置

1
<meta name="viewport" content="width=device-width, initial-scale=1.0">

注意:不要再加 user-scalable=no 了! 这是 WCAG 无障碍标准的违规行为——用户需要能放大页面来看小字。

2. 用 clamp() 替代 rem 计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* ❌ 旧方案(2020 年前) */
html { font-size: calc(100vw / 18); }
h1 { font-size: 2rem; }

/* ✅ 新方案(2026 年标准) */
h1 {
font-size: clamp(1.5rem, 4vw, 3rem);
/* 最小 1.5rem,最理想 4vw,最大 3rem */
}

p {
font-size: clamp(1rem, 2.5vw, 1.25rem);
line-height: 1.6;
}

clamp() 直接在 CSS 中完成了”范围限制”——不需要媒体查询,不需要 JS。

3. 新的视口单位

CSS 在 2024 年引入了几种新的视口单位:

1
2
3
4
5
6
7
8
9
10
11
12
/* 传统视口单位(可能被移动端浏览器地址栏影响) */
width: 100vh; /* 100% 视口高度(包括地址栏) */

/* 新的动态视口单位 */
width: 100dvh; /* 动态视口高度(随地址栏显隐变化) */
width: 100svh; /* 小视口高度(不包括地址栏) */
width: 100lvh; /* 大视口高度(包括地址栏) */

/* 最推荐:使用动态单位实现无缝的地址栏适配 */
.fullscreen {
height: 100dvh;
}

4. 安全区域适配(刘海屏)

iPhone X 及之后的机型有”刘海”和”圆角”,需要用 safe-area-inset 处理:

1
2
3
4
5
6
7
8
9
10
11
12
/* 适配刘海屏 */
.content {
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}

/* 适配底部横条 */
.fixed-bottom {
padding-bottom: calc(16px + env(safe-area-inset-bottom));
}

触控交互优化

点击延迟

移动端浏览器的点击事件有约 300ms 延迟(为了区分单击和双击缩放)。2026 年大部分浏览器已经消除了这个延迟——只需确保设置了 viewport

触摸反馈

1
2
3
4
5
6
7
8
9
10
/* 移除点击高亮 */
* {
-webkit-tap-highlight-color: transparent;
}

/* 移除 iOS 输入框默认样式 */
input, textarea {
-webkit-appearance: none;
appearance: none;
}

手势与操作

1
2
3
4
5
6
7
8
9
/* 禁止长按弹出菜单(仅在需要时使用) */
.no-callout {
-webkit-touch-callout: none;
}

/* 禁止用户选择文本(仅在 UI 元素上使用) */
.no-select {
user-select: none;
}

响应式图片

移动端最容易被忽视的性能优化之一就是图片:

1
2
3
4
5
6
7
8
9
<!-- 根据屏幕宽度加载不同尺寸的图片 -->
<img
src="photo-800.jpg"
srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1200.jpg 1200w"
sizes="(max-width: 600px) 100vw, 50vw"
loading="lazy"
decoding="async"
alt="描述"
>

PWA:手机网站的进化方向

如果你的移动端网站想做到接近 App 的体验,PWA(渐进式 Web 应用)是关键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// manifest.json
{
"name": "网站名称",
"short_name": "网站",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#2d8cf0",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

加上 manifest 后,用户可以把你的网站”添加到主屏”——看起来像一个原生 App。

移动端调试技巧

工具 用途
Chrome DevTools 移动端模拟 调试不同设备尺寸
Safari Web Inspector 调试 iOS 上的问题
eruda 移动端页面内嵌的控制台
vconsole 微信浏览器调试常用
1
2
3
<!-- 在测试环境注入 eruda 控制台 -->
<script src="//cdn.jsdelivr.net/npm/eruda"></script>
<script>eruda.init();</script>

相关推荐

P.S. 回顾 2020 年写的那篇 rem 适配文章,感觉像看几年前自己写的代码——知道那是当时的”最佳实践”,但已经不会再用了。前端技术最大的特点就是变化快。 如果你发现三年前学的东西已经不实用了,不是你的问题——是前端本身的问题。