← 全部文章

网站移动端适配指南:真正有效的 10 项修改

让网站适配手机的十项修改:从 viewport 标签、流式布局,到点击区域、表单和图片尺寸,附可直接复制的代码。

要让网站适配手机,需要添加正确的 viewport meta 标签,让布局随屏幕宽度伸缩而不是使用固定像素宽度,用媒体查询在小屏幕上重新排列内容,让文字易读、按钮易点,并为手机提供合适尺寸的图片。然后在真实的手机视图中测试。下面这十项修改覆盖了几乎所有未适配移动端的网站会犯的错误,并按处理顺序排列。

1. 添加 viewport meta 标签

没有它,手机会认为页面是为桌面设计的,先按约 980px 宽渲染,再整体缩小。文字会变得很小,用户只能用手指放大。在每个页面的 <head> 中加入:

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

不要添加 user-scalable=no 或 maximum-scale=1,禁止缩放会给需要大字的人带来困难。详见 viewport meta 标签详解。

2. 把固定宽度换成流式宽度

width: 960px 的容器放不进 390px 宽的屏幕。请改用百分比、max-width 和现代布局工具:

.container {
  width: min(100% - 2rem, 72rem);
  margin-inline: auto;
}

使用 flex-wrap: wrap 的 Flexbox,以及使用 repeat(auto-fit, minmax(16rem, 1fr)) 的 CSS Grid,可以让列自动换行,很多时候根本不需要媒体查询。

3. 让图片和嵌入内容可以缩小

img, video, iframe {
  max-width: 100%;
  height: auto;
}

对于嵌入的视频和地图,设置 aspect-ratio: 16 / 9; width: 100%,让它们按比例缩放而不破坏布局。仅这一条规则就能消除很多横向滚动问题。

4. 用媒体查询重新排列内容

有些布局不只是缩小,而是需要改变结构:侧边栏移到正文下方,四列的页脚变成一列。先写移动端布局,再为宽屏增加复杂度:

.layout { display: grid; gap: 2rem; }

@media (min-width: 64rem) {
  .layout { grid-template-columns: 3fr 1fr; }
}

如何选择宽度见响应式断点指南,语法见 CSS 媒体查询详解,移动优先的思路本身见移动优先设计。

5. 使用易读的字体

正文字号至少 16px(大多数浏览器中为 1rem),行高约 1.5。使用 rem 单位,让文字遵循用户在浏览器中的字号设置。在大屏上给文本块设置 max-width: 65ch,保持舒适的行长。标题可以用 clamp() 随屏幕缩放:

h1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }

6. 让点击区域足够大、间距足够宽

手指远不如鼠标指针精确。WCAG 2.2 规定目标的最小尺寸为 24 × 24 CSS 像素;Apple 和 Google 的设计规范建议约 44–48px,点按起来才舒适。为文中链接和图标按钮留出足够的内边距,并与相邻元素保持间隔。

7. 做一个不依赖悬停的导航

触屏上没有悬停。在小屏幕上,使用点击后展开列表的菜单按钮,控制一级菜单项的数量,并确保子菜单既能点击展开,也能用键盘展开。测试选择链接后菜单是否会自动关闭。

8. 让表单适合手机

  • 使用正确的输入类型(email、tel、url、number)和 inputmode,让手机弹出对应的键盘。
  • 添加 autocomplete 属性(name、email、street-address、cc-number),让自动填充生效。
  • 输入框文字保持在 16px 及以上;iOS Safari 在聚焦字号更小的输入框时会自动放大页面。
  • 在窄屏上把标签放在输入框上方,并让提交按钮占满整行。

9. 为移动端提供合适尺寸的图片

一张 2400px 宽的头图,对手机来说是很大的下载量。使用响应式图片,让浏览器自己选择合适的文件:

<img src="hero-800.jpg"
     srcset="hero-480.jpg 480w, hero-800.jpg 800w, hero-1600.jpg 1600w"
     sizes="(min-width: 64rem) 50vw, 100vw"
     alt="手机上显示的产品仪表盘">

WebP 和 AVIF 等现代格式可以进一步减小文件体积。首屏以下的图片加上 loading="lazy"。页面提速的方法见移动端页面速度测试指南。

10. 去掉移动端的干扰元素

一进页面就弹出的全屏弹窗、盖住“购买”按钮的聊天气泡、占掉四分之一屏幕的吸顶栏,都会让网站在手机上显得很不友好。延迟弹窗出现时间,让它们容易关闭,并保持吸顶元素小巧。

如何检查效果

每次修改后,都在手机尺寸下看看页面。最快的方法是在桌面版 Chrome 中使用手机视图:DevTools 设备模式,或者像 Mobile View Extension 这样的一键插件,它会用真实的移动 User Agent 重新加载标签页,还能对比不同设备尺寸。然后运行 Lighthouse 移动端审计,上线前再过一遍移动端网页测试清单。可以替代 Google 旧版一键测试的工具,见移动设备友好性测试的替代工具。

用的是 WordPress?原则相同,但大部分修改要在主题中完成。见 WordPress 网站移动端适配。

常见问题

让旧网站适配移动端,最快的方法是什么?

添加 viewport meta 标签,给图片和嵌入内容设置 max-width: 100%,去掉主要容器的固定宽度,再用一个媒体查询把多列改成纵向堆叠。这样一个下午就能解决大部分横向滚动和文字过小的问题。

需要单独做一个手机版网站吗?

不需要。一个能随屏幕自适应的响应式网站更容易维护,也是 Google 推荐的做法。单独的 m. 站点是过时的方案。

怎么知道我的网站是否适配了移动端?

在手机尺寸下查看页面,以移动模式运行 Lighthouse 审计,再查看 Google Search Console 网址检查中的截图。这三者结合起来,可以替代 Google 已下线的移动设备友好性测试。

用手机视图查看你的下一个网站。

添加扩展,在你正在使用的标签页中直接打开设备预览。