适配维度
- 响应式布局
- 触摸适配
- 内容适配
- 性能适配
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 |
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 加载慢 | 大图/多图 | 响应式图片 |
| 卡顿 | 复杂动画 | 简化/禁用 |
| 内存溢出 | 大资源 | 懒加载 |
桌面端:
┌────────────────────────────────────────┐│ Logo 导航链接1 导航链接2 导航链接3 │└────────────────────────────────────────┘移动端:
┌────────────────────────────────────────┐│ Logo 汉堡菜单 │├────────────────────────────────────────┤│ 导航链接1 ││ 导航链接2 ││ 导航链接3 │└────────────────────────────────────────┘桌面端:
┌──────────┬──────────┬──────────┐│ 卡片1 │ 卡片2 │ 卡片3 │└──────────┴──────────┴──────────┘平板端:
┌──────────┬──────────┐│ 卡片1 │ 卡片2 │├──────────┼──────────┤│ 卡片3 │ │└──────────┴──────────┘移动端:
┌──────────┐│ 卡片1 │├──────────┤│ 卡片2 │├──────────┤│ 卡片3 │└──────────┘桌面端:
┌────────────────────────────────────────┐│ 标签: [输入框...................] ││ 标签: [输入框...................] ││ [提交按钮] │└────────────────────────────────────────┘移动端:
┌────────────────────────────────────────┐│ 标签: ││ [输入框...............................] ││ 标签: ││ [输入框...............................] ││ [提交按钮............................] │└────────────────────────────────────────┘| 工具 | 用途 |
|---|---|
| Chrome DevTools | 模拟设备 |
| BrowserStack | 真机测试 |
| LambdaTest | 跨浏览器测试 |
| 工具 | 用途 |
|---|---|
| Figma | 响应式设计 |
| Sketch | 自适应组件 |
适配维度
断点
触摸
测试
查看源文件: GitHub原始文件