Patterns are fascinating designs that have been used across various cultures and industries for centuries. Patterns offer insight into the cultures and histories that inspired them.
Accessible design enables users with diverse abilities to navigate, understand, and enjoy a UI.
| Text type | Color contrast ratio |
|---|---|
| Large text (at 14 pt bold/18 pt regular and up) and graphics | 3:1 against the background |
| Small text | 4.5:1 against the background |
Contrast describes the amount of perceived difference between two colors. Color plays a part in an interface’s visual accessibility by ensuring contrast between elements so that two things of similar color are differentiated.
Sufficient contrast between two colors, such as button text and a button container, is an essential piece of visual accessibility because optimizes usability for a broad range of human vision and experience.
The ‘Accept’ button achieves sufficient contrast for visual accessibility, while the ‘Ignore’ button does not
Elements that are clustered with others, such as a group of buttons, require the user to distinguish each one from the group.
These elements benefit from 3:1 contrast between themselves and the background.
Elements that stand on their own and apart from other elements on the screen, such as a FAB, are already distinguishable to users because of their prominence. These elements don’t benefit from 3:1 contrast between themselves and the background.
When placing components together in a cluster, use components or types of components that each achieve at least 3:1 contrast between themselves and the background.
For accessibility measures, the degree of contrast is measured and represented as a ratio. Contrast ratios measure the difference in lightness or darkness between two colors. A high ratio indicates greater difference between colors and therefore indicates higher contrast.
Material’s color system provides standard tone values and measurements that can be used to meet accessible contrast ratios.
Material’s tonal system corresponds to Web color contrast standards as follows:
Colors in a scheme are primarily the result of your key colors and their complementary generated tones. Custom colors undergo the same treatment as the core scheme, enabling you to input a custom key color that automatically gets assigned a set of complementary tones.
By default, Material provides the error color as an example of a custom color.
Left: Core scheme colors from M3 baseline light scheme Right: Examples of custom color inputs that comprise the custom colors in a scheme.
Apply custom colors using the same color roles and relationships that you would use when applying a core scheme.
While key colors are the basis for tonal palettes, only a selection of the thirteen colors from each tonal palette are used in a UI. A scheme is the group of tones assigned to specific roles that get mapped to components.
A primary color’s tonal palette, for example, defines tones for paired roles such as the colors for text and icons that are placed on top of a component (On primary). The tone pairings in color roles provide accessible contrast by default and inform tone adjustments for any additional custom color to work harmoniously with an existing scheme.
Each key accent color (primary, secondary, and tertiary) is provided as a group of 4 compatible colors with different tones that can be applied for differing emphasis and visual expression, and paired for visual contrast.
By mapping and coding roles through tokens, rather than assigning hex values, a color can update systematically if a color palette changes. Tokens enable changes to a role’s color value to cascade consistently. From five key colors, roles are automatically assigned roles that map to light theme components
When a color scheme is generated, the tonal palettes include mappings for a dark theme as well. Apps receive light and dark tones through a single generated scheme.
From five key colors, roles are automatically assigned roles that map to dark theme components
Diagram showing the new light theme surface color roles
Diagram showing the new dark theme surface color roles
In this example, the area of primary focus is using the surface role, while the navigation area is using the surface container role.
Surface container is the recommended default color for a contained area against the surface color. It provides good contrast and can be flexibly combined with all other higher or lower emphasis surface roles.
Default surface container roles applied to components:
Don’t use the outline color for components that contain multiple elements, such as cards. Instead, use the outline variant color.
Don’t use the outline variant color for clustered elements like chips, or other UI elements that are in close proximity to each other. Instead, use outline or another color providing 3:1 contrast with the surface color.
Don’t use the outline variant color to create visual hierarchy or define the visual boundary of targets. Instead, use the outline color or another color providing 3:1 contrast with the surface color.
Fixed and Fixed Dim color roles for the Primary, Secondary, and Tertiary accent groups, shown in both light and dark themes. Note how the colors stay the same between themes.
Accessible design enables users with diverse abilities to navigate, understand, and enjoy a UI.
To enable the screen reader to read out content in the intended order, it’s important for designers to collaborate with developers – both for writing out the HTML in the correct order, and understanding how screen readers will interpret designs.
While CSS determines the layout and appearance of a page, screen readers rely on the top-down structure of HTML on any platform (mobile or web). This structure creates a map for the screen reader to follow when reading the content.
Note: iOS recommends 44 x 44dp targets.
Icons: 24dp
Star icon: 40dp
Touch target on both: 48dp
In most cases, targets separated by 8dp of space or more promote balanced information density and usability.
Recommendations: Three icons in a row with 48dp touch target size and three icons in a row with 8dp padding between icons
Hardware or software directional controllers such as keyboards, a D-pad, or trackball allow users to jump from selection to selection in a linear fashion.
A screen reader is a software program that uses either a braille display or reads text aloud, such as Google’s screen reader, TalkBack. People with vision impairments, experiencing difficulty reading, or who temporarily can’t read might use a screen reader. Screen readers verbalize visible content and read it aloud. Paragraph and button text, as well as hidden content like alternative text for icons and headings, are identified by the program. Content can be labeled to optimize the experience for those who use screen readers or experience a text-only version of your UI.
Switches scan the items on your screen, highlighting each item in turn, until you make a selection. Switch Access lets you interact with your Android device using one or more switches instead of the touchscreen.
When navigation is easy, users understand where they are in your app and what’s important. To emphasize which information is important, multiple visual and textual cues like color, shape, text, and motion add clarity.
Types of feedback
Visual feedback (such as labels, colors, and icons) and touch feedback show users what is available in the UI.
Navigation
Navigation can have clear task flows with minimal steps, easy-to-locate controls and clear labeling. Focus control, or the ability to control keyboard and reading focus, can be implemented for frequently used tasks.
Every added button, image, and line of text increases the complexity of a UI.
You can simplify how your UI is understood by using:
To convey an item’s relative level of importance:
Accessibility text refers to text that is used by screen reader accessibility software, such as Google’s TalkBack on Android, Apple’s VoiceOver on iOS, and Freedom Scientific’s JAWS on desktop. Screen readers read aloud the on-screen text and elements (such as buttons), including both visible and nonvisible alternative text.
Use alt text to convey what the image is showing in an informative, short phrase.
Alt text example: A DJ standing in front of music equipment at night.
The text in and around images should consider accessibility because it presents key information about the images.
For long descriptions, use captions instead of alt text since they are available to all users and alt text is limited to 125 characters
Take caution when embedding essential information as text in an image and repeating it as alt text
The illustration contains both essential and non-essential information:
Get to know the key terms and concepts behind Material, from A to Z.
Adaptive layouts react to input from users, devices, and screen elements. Material guidance describes how to design for variable screen sizes, from phones and tablets, to desktop and beyond.
States are visual indicators used to communicate the status of a component or interactive element.
M3 makes brand expression in an interface simpler and more beautiful than ever before.
Tokens store style values like colors and fonts so the same values can be used across designs, code, tools, and platforms.
Use motion to make a UI expressive and easy to use. Material transitions help guide users as they navigate an app.
Icons can be used to represent common actions. Material Symbols are a set of variable icon fonts created at seven weights across three different styles.
Elevation is the relative distance between two surfaces along the z-axis. All surfaces and components have elevation values.
Use typography to make writing legible and beautiful. Material’s default type scale includes contrasting and flexible styles to support a wide range of use cases.
Color is used to express style and communicate meaning. With dynamic color, Material puts personal color preferences and individual needs at the forefront of systematic color application.
The shape scale defines the style of container corners, offering a range of roundedness from square to fully circular.
Action components help people achieve an aim.
Common button prompt most actions in a UI
Floating action buttons (FABs) help people take primary actions
Extended floating action buttons (extended FABs) help people take primary actions
Icon buttons help people take minor actions with one tap
Segmented buttons help people select options, switch views, or sort elements
Containment components hold information and actions – including other components like buttons, menus, or chips.
Bottom sheets show secondary content anchored to the bottom of the screen
Cards display content and actions about a single subject
Carousels show a collection of items that can be scrolled on and off the screen
Dialogs provide important prompts in a user flow
Dividers are thin lines that group content in lists or other containers
Lists are continuous, vertical indexes of text and images
Side sheets show secondary content anchored to the side of the screen
Tooltips display brief labels or messages
Navigation components help people move through the UI.
Bottom app bars display navigation and key actions at the bottom of mobile and tablet screens
Navigation bars let people switch between UI views on smaller devices
Navigation drawers let people switch between UI views on larger devices
Navigation rails let people switch between UI views on mid-sized devices
Search lets people enter a keyword or phrase to get relevant information
Tabs organize content across different screens and views
Top app bar
Selection components let people specify choices.
Checkboxes let users select one or more items from a list, or turn an item on or off
Chips help people enter information, make selections, filter content, or trigger actions
Date pickers let people select a date, or a range of dates
Menus display a list of choices on a temporary surface
Radio buttons let people select one option from a set of options
Sliders let users make selections from a range of values
Switches toggle the state of an item on or off
Time pickers help users select and set a specific time
Text input components let people enter and edit text.
Text fields let users enter text into a UI