Material Design 3 的组件系统详解
组件是 Material Design 系统的基石,它们是构建用户界面的“积木”。Material Design 3 (M3) 的组件系统在 M2 的基础上进行了显著的演进,更加强调个性化、表达力和适应性。这些组件不仅包含了视觉样式,还内置了行为逻辑、可访问性支持以及对动态色彩的响应能力。
1. 组件的原理与作用
M3 组件的设计原理和作用主要体现在以下几个方面:
封装设计原则: 每个 M3 组件都内置了对 M3 核心设计原则的理解和实现。例如,一个 M3 按钮会自动响应动态色彩主题,应用合适的形状(如默认圆角),并在点击时展示符合 M3 规范的动效。这使得设计师无需从零开始实现这些细节,大大提高了效率。
一致性与可预测性: 使用 M3 组件可以确保整个产品界面在视觉和行为上保持高度一致。用户在不同应用中遇到相同的 M3 组件时,能够凭借经验快速理解其功能和交互方式,降低了学习成本。
高效开发与维护: 组件是可复用的。开发者可以直接使用 M3 提供的组件库(如 Android 的 Jetpack Compose 或 Web 的 Material Web Components),而无需自己编写大量的 UI 代码。这不仅加速了开发进程,也简化了后续的维护工作。
可定制性与灵活性: 尽管组件预设了样式,但 M3 提供了丰富的 API 和配置选项,允许设计师和开发者根据品牌需求和具体场景定制组件的颜色、形状、排版和行为,而无需“脱离”Material Design 系统。
无障碍性 (Accessibility) 内置: M3 组件在设计之初就考虑了无障碍性,例如触摸目标区域大小、颜色对比度、语义标签等,确保残障用户也能顺畅使用产品。
适应性与响应式: 组件被设计为能够自适应不同的屏幕尺寸和设备类型。例如,一个 M3 的底部导航栏在手机上可能显示为标签和图标,但在大屏幕设备上可能会转换为侧边导航抽屉。
2. M3 组件的主要类型与特点
M3 提供了涵盖广泛 UI 需求的组件。以下是一些核心组件及其在 M3 中的特点:
按钮 (Buttons):
特点: M3 提供了多种按钮类型(如 Text Button, Outlined Button, Elevated Button, Filled Button, Tonal Button),它们在视觉强调程度、背景填充和阴影上有所不同。
M3 增强: 更强调使用色调高度而非阴影来区分按钮的层级。默认使用圆角,且能很好地响应动态色彩。
原理: 通过不同的背景填充、边框和前景色的组合,来传达按钮的重要性和可点击性,同时保持 M3 的视觉风格。
卡片 (Cards):
特点: 用于组织和展示相关内容的小型容器。
M3 增强: 默认使用更柔和的圆角,可通过色调高度来表示层级。卡片内可以容纳文本、图像和操作按钮。
原理: 利用背景色、形状和边距来将相关信息组合成一个独立的视觉单元,方便用户理解和浏览。
芯片 (Chips):
特点: 小巧的、可交互的组件,用于表示输入、属性或操作。
M3 增强: 提供了多种类型的芯片(如 Assist Chip, Filter Chip, Input Chip, Suggestion Chip),每种都有不同的交互和视觉样式。
原理: 提供紧凑的交互元素,节省空间,并在视觉上清晰地标识特定信息或选择。
导航栏 (Navigation Bars/Drawers/Rails):
特点: M3 为不同屏幕尺寸和设备提供了灵活的导航模式。
M3 增强:
Bottom Navigation Bar (底部导航栏): 适用于小屏幕设备,图标和标签清晰。
Navigation Rail (导航轨道): 适用于中等尺寸屏幕(如折叠屏、小平板),在侧边显示图标和可选标签,提供更多垂直空间。
Navigation Drawer (导航抽屉): 适用于更大的屏幕,作为主导航入口。
原理: 提供清晰的导航路径,并通过适应性设计确保在各种设备上都能获得最佳的导航体验。
顶栏 (Top App Bars):
特点: 位于屏幕顶部,提供标题、导航和操作。
M3 增强: 提供了多种高度和类型的顶栏(如 Center Aligned, Small, Medium, Large),允许更多创意和品牌表达。Large 和 Medium 的顶栏在内容滚动时可以折叠变小。
原理: 作为应用程序的入口点和品牌标识,同时提供关键的上下文信息和操作。
对话框 (Dialogs):
特点: 临时性的弹出窗口,用于获取用户决策或提供关键信息。
M3 增强: 默认采用圆角,背景模糊效果更柔和,支持动态色彩。
原理: 通过模态交互强制用户关注特定信息或做出决策,避免干扰主要任务流程。
表单组件 (Input Fields, Checkboxes, Switches, Sliders):
特点: 用于用户输入和选择。
M3 增强: 更加统一的视觉风格,更清晰的焦点状态和错误状态指示,且能与动态色彩完美配合。
原理: 提供直观的输入机制,并通过视觉反馈清晰地展示用户输入或选择的状态。
3. 组件的定制化与可访问性
主题化 (Theming): 这是 M3 组件定制的核心。通过定义一个 M3 主题(包括颜色、排版和形状),所有支持该主题的组件都会自动应用这些样式。这意味着你不需要单独为每个按钮设置颜色,只需设置主题的主色,所有主按钮都会随之改变。
组件特定定制: 除了全局主题,每个组件也提供了独立的属性和方法,允许设计师和开发者进行更细粒度的控制,例如改变特定按钮的形状,或者覆盖某个文本字段的颜色。
无障碍性: M3 组件从设计之初就考虑了触摸目标大小(至少 48x48dp)、对比度(文本与背景至少 4.5)以及语义化标签(如屏幕阅读器可识别的描述),确保所有用户都能无障碍地使用。
例子
我们通过一个旅行预订应用的界面来展示 M3 组件的应用。
1. 首页:搜索与推荐
顶栏 (Large Top App Bar): 顶部有一个大的、居中的标题“探索世界”,在用户向下滚动时,它会平滑地收缩为小的顶栏。
应用原理: 利用 M3 大顶栏的动态收缩特性,在初始状态提供更强的品牌和入口感,滚动时节省屏幕空间。
搜索框 (Filled Text Field): 位于顶栏下方,样式是填充型的,带有圆角。
应用原理: M3 填充型文本字段提供清晰的输入区域,默认的圆角与其周围组件保持视觉一致。
推荐卡片 (Elevated Card): 例如“热门目的地”、“特色活动”等,这些卡片是凸起的,带有轻微的色调叠加表示海拔。卡片内部包含图片、标题 (
Title Medium) 和简短描述 (Body Medium)。应用原理: Elevated Card 通过色调叠加而非强烈的阴影来区分层级,使界面更干净。卡片内的排版也遵循 M3 规范,确保可读性。
热门筛选芯片 (Filter Chips): 比如“海滩”、“山区”、“城市”等,用户可以点击选择。
应用原理: Filter Chips 提供了可点击的筛选选项,选中时会改变颜色和填充,清晰展示用户选择。
2. 预订详情页
返回按钮 (Icon Button): 顶栏左侧的返回箭头,点击时有 M3 推荐的轻微触控反馈动效。
应用原理: M3 图标按钮提供标准化的交互区域和视觉反馈。
住宿图片轮播 (Image Carousel): 图片左右滑动切换。
应用原理: M3 对图片的处理通常是全宽或在容器中,并可能结合 Page Indicator 来显示当前图片位置。
预订信息卡片 (Outlined Card): 包裹着价格、入住/退房日期、房型等信息。边缘有细边框。
应用原理: Outlined Card 通过边框来区分内容,提供一种轻量级的容器。
入住/退房日期选择器 (Date Picker): 点击日期输入框后弹出的 M3 日期选择器组件。
应用原理: M3 日期选择器提供了清晰、直观的日期选择界面,符合 M3 的设计美学和交互模式。
“立即预订”按钮 (Filled Button): 页面底部最醒目的行动按钮。
应用原理: Filled Button 是 M3 中最重要的行动按钮,通过实心填充和默认的圆角来吸引用户注意力,并响应主题主色。
3. 用户个人中心
个人资料头像 (Full Shape Image): 用户的圆形头像。
应用原理: Full Shape 确保头像始终是完美的圆形。
设置列表项 (List Items): 例如“我的预订”、“支付方式”、“个人信息”等,每个列表项都是一个可点击的区域,通常带有图标和文本 (
Body Large)。应用原理: M3 列表项提供标准化的布局和交互区域,确保信息清晰和易于点击。
切换开关 (Switch): 例如“接收通知”的开关。
应用原理: M3 Switch 组件提供了清晰的开启/关闭状态,并有平滑的切换动效。
