跳转到内容

适配设计 (adapt)

adapt 是让设计适配不同场景的技能。它的核心是:让设计在各种设备、屏幕尺寸和使用场景下都能良好工作。

作为设计师/开发者,你可能遇到过:

  • “移动端显示不对”
  • “不同屏幕大小布局乱了”
  • “平板和桌面体验不一样”

adapt 就是解决这些的。

用户使用的设备:
- 手机(320px-428px)
- 平板(768px-1024px)
- 笔记本(1366px-1440px)
- 桌面(1920px+)
适配 = 让所有设备都能用
同一个应用,不同场景:
- 移动端:随时随地
- 桌面端:专注工作
- 平板端:灵活使用
适配 = 场景化体验
用户期望:
✅ 正确:
- 移动端能用
- 布局合理
- 交互友好
❌ 错误:
- 只考虑桌面
- 移动端体验差
- 需要缩放

断点设计

/* 移动端优先 */
/* Small (手机竖屏) */
@media (min-width: 640px) { }
/* Medium (手机横屏/小平板) */
@media (min-width: 768px) { }
/* Large (平板/小桌面) */
@media (min-width: 1024px) { }
/* XLarge (桌面) */
@media (min-width: 1280px) { }

布局策略

┌─────────────────────────────────┐
│ 单栏布局 (移动) │
├─────────────────┬─────────────────┤
│ │ │
│ 双栏布局 │ (平板) │
│ │ │
├─────────────────┴─────────────────┤
│ │
│ 多栏布局 (桌面) │
│ │
└───────────────────────────────────────┘

触摸目标

/* 最小触摸目标 44x44px */
.button {
min-height: 44px;
min-width: 44px;
padding: 12px 16px;
}

手势支持

常用手势:
- 点击:选择/确认
- 长按:显示更多选项
- 滑动:切换/删除
- 捏合:缩放

图片响应式

<img
srcset="img-320.jpg 320w,
img-640.jpg 640w,
img-1024.jpg 1024w"
sizes="(max-width: 640px) 100vw,
(max-width: 1024px) 50vw,
33vw"
src="img-640.jpg"
alt="描述"
>

文字响应式

/* 流动字号 */
.title {
font-size: clamp(1.5rem, 4vw, 3rem);
}

移动端优化

考虑因素:
- 网络:移动网络较慢
- CPU:性能较弱
- 内存:限制较多
优化策略:
- 延迟加载
- 简化动画
- 压缩资源
策略:
1. 先设计移动端
2. 再扩展到桌面
好处:
- 核心功能优先
- 性能优先
- 渐进增强
层级:
Level 1:基础体验
- 核心功能
- 基础布局
- 简单交互
Level 2:增强体验
- 更好布局
- 更好交互
Level 3:完整体验
- 全部功能
- 全部动画
// 检测特性而非设备
if ('ontouchstart' in window) {
// 触摸设备
}
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
// 暗色模式
}
问题原因解决方案
水平滚动固定宽度百分比/弹性
内容溢出未考虑换行flex/grid
元素重叠绝对定位相对定位
问题原因解决方案
点击太小触摸目标不足44x44px
悬停无效触摸设备触摸替代
双击缩放未禁用user-scalable=no
问题原因解决方案
加载慢大图/多图响应式图片
卡顿复杂动画简化/禁用
内存溢出大资源懒加载
  • 断点设置合理?
  • 布局在各个断点都正常?
  • 没有水平滚动?
  • 触摸目标 >= 44px?
  • 手势操作正常?
  • 没有依赖悬停的交互?
  • 图片响应式?
  • 文字可读?
  • 视频自适应?
  • 移动端资源优化?
  • 动画性能良好?
  • 首屏加载快?
  • 真机测试?
  • 各种尺寸测试?
  • 弱网络测试?

桌面端

┌────────────────────────────────────────┐
│ Logo 导航链接1 导航链接2 导航链接3 │
└────────────────────────────────────────┘

移动端

┌────────────────────────────────────────┐
│ Logo 汉堡菜单 │
├────────────────────────────────────────┤
│ 导航链接1 │
│ 导航链接2 │
│ 导航链接3 │
└────────────────────────────────────────┘

桌面端

┌──────────┬──────────┬──────────┐
│ 卡片1 │ 卡片2 │ 卡片3 │
└──────────┴──────────┴──────────┘

平板端

┌──────────┬──────────┐
│ 卡片1 │ 卡片2 │
├──────────┼──────────┤
│ 卡片3 │ │
└──────────┴──────────┘

移动端

┌──────────┐
│ 卡片1 │
├──────────┤
│ 卡片2 │
├──────────┤
│ 卡片3 │
└──────────┘

桌面端

┌────────────────────────────────────────┐
│ 标签: [输入框...................] │
│ 标签: [输入框...................] │
│ [提交按钮] │
└────────────────────────────────────────┘

移动端

┌────────────────────────────────────────┐
│ 标签: │
│ [输入框...............................] │
│ 标签: │
│ [输入框...............................] │
│ [提交按钮............................] │
└────────────────────────────────────────┘
工具用途
Chrome DevTools模拟设备
BrowserStack真机测试
LambdaTest跨浏览器测试
工具用途
Figma响应式设计
Sketch自适应组件

适配维度

  • 响应式布局
  • 触摸适配
  • 内容适配
  • 性能适配

断点

  • 640px
  • 768px
  • 1024px
  • 1280px

触摸

  • 目标 >= 44px
  • 手势支持
  • 无悬停依赖

测试

  • 真机测试
  • 多尺寸测试
  • 弱网络测试
  • polish - 打磨
  • optimize - 性能优化
  • normalize - 规范化

查看源文件: GitHub原始文件