Appbar
Material Design 3 and MD3 Expressive App Bar component.
Features
- Variants:
small(default): 64px standard top app barcenter-aligned: 64px top app bar with centered headlinemedium-flexible(ormedium): Multi-line flexible medium app bar that hugs contentlarge-flexible(orlarge): Multi-line flexible large app bar with prominent headlinesearch: Search app bar with embedded pill search container
- Text Alignment:
start(default): Leading edge alignmentcenter: Centered headline and subtitle
- Subtitle Support: Subtitle text automatically expands height flexibly in medium and large variants.
- Scroll Behavior & States:
- Flat (resting) vs Scrolled state (
scrolledattribute) - Surface color switching (Surface -> SurfaceContainer)
- Auto-scroll detection with
scroll-target="window"orscroll-target="#container" - Elevation tinting on scroll
- Flat (resting) vs Scrolled state (
- Slots:
leading: Navigation icon button or menu buttonheadline: Title text or custom element (e.g. logo / image)subtitle: Subtitle text or supporting elementstrailing/ default slot: Action icon buttons, avatar, overflow menusearch,search-leading,search-input,search-trailing: For search variant customization
Usage
<!-- Standard Small App Bar -->
<mdc-appbar headline="Inbox">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Medium Flexible App Bar with Subtitle -->
<mdc-appbar
variant="medium-flexible"
headline="Daily activities"
subtitle="Record new fitness goals"
>
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>add</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Search App Bar -->
<mdc-appbar variant="search" headline="Search product">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
Alignment
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- Start Alignment (Default) -->
<mdc-appbar alignment="start" headline="Leading edge headline" subtitle="Leading aligned subtitle">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Centered Alignment -->
<mdc-appbar alignment="center" headline="Centered headline" subtitle="Centered subtitle">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Medium Flexible with Center Alignment -->
<mdc-appbar variant="medium-flexible" alignment="center" headline="Centered Medium" subtitle="Centered subtitle in medium flexible">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>Custom
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- Brand Title / Custom Font -->
<mdc-appbar variant="small">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<span slot="headline" style="font-family: serif; font-size: 24px; font-weight: bold; letter-spacing: 1px;">The Fortnightly</span>
<mdc-icon-button slot="trailing"><mdc-icon>bookmark_border</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- User Profile Header with Status Subtitle -->
<mdc-appbar variant="small" headline="Maddison Wells" subtitle="Active now">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>videocam</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>call</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Large Flexible with Filled/Tonal Action Button -->
<mdc-appbar variant="large-flexible" headline="Explore Banff" subtitle="Enjoy hiking trails, gondolas, wildlife, and more">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing" variant="filled-tonal"><mdc-icon>share</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>Scrolled
Flat (Resting state)
On Scroll (Scrolled state - Surface Container + Elevation)
Search App Bar On Scroll (Higher container surface)
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- Flat / Resting State -->
<div>
<p style="margin: 0 0 8px 4px; font-size: 14px; color: var(--md-sys-color-outline, #79747e);">Flat (Resting state)</p>
<mdc-appbar variant="small" headline="Flat App Bar">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>
<!-- On-Scroll State -->
<div>
<p style="margin: 0 0 8px 4px; font-size: 14px; color: var(--md-sys-color-outline, #79747e);">On Scroll (Scrolled state - Surface Container + Elevation)</p>
<mdc-appbar variant="small" headline="Scrolled App Bar" scrolled>
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>
<!-- Search On-Scroll State -->
<div>
<p style="margin: 0 0 8px 4px; font-size: 14px; color: var(--md-sys-color-outline, #79747e);">Search App Bar On Scroll (Higher container surface)</p>
<mdc-appbar variant="search" headline="Search product" scrolled>
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>mic</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>
</div>Search
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- 1. Leading element and a trailing element outside search -->
<mdc-appbar variant="search" headline="Search product">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- 2. Leading element, trailing inside search, and trailing outside search -->
<mdc-appbar variant="search">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<div slot="search" class="search-box" style="display: flex; align-items: center; width: 100%; height: 48px; background-color: var(--md-sys-color-surface-container, #ece6f0); border-radius: 9999px; padding: 0 16px; gap: 12px; box-sizing: border-box;">
<mdc-icon style="color: var(--md-sys-color-on-surface-variant, #49454f);">search</mdc-icon>
<span style="flex: 1; color: var(--md-sys-color-on-surface-variant, #49454f); font-size: 16px;">Search emails</span>
<mdc-icon-button><mdc-icon>mic</mdc-icon></mdc-icon-button>
</div>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- 3. Leading element and two trailing elements outside search -->
<mdc-appbar variant="search" headline="Search files">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>tune</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>Subtitle
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- Small with subtitle -->
<mdc-appbar variant="small" headline="Small with subtitle" subtitle="Supporting text under headline">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Medium Flexible with subtitle -->
<mdc-appbar variant="medium-flexible" headline="Daily activities" subtitle="Record new fitness goals">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Large Flexible with subtitle -->
<mdc-appbar variant="large-flexible" headline="Top 10 hiking trails" subtitle="Discover popular trails in Banff National Park">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>bookmark</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>share</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>Variant
Code
<div style="display: flex; flex-direction: column; gap: 24px; width: 100%;">
<!-- Small -->
<mdc-appbar variant="small" headline="Small App Bar">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Center-aligned -->
<mdc-appbar variant="center-aligned" headline="Centered App Bar">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Medium Flexible -->
<mdc-appbar variant="medium-flexible" headline="Medium Flexible">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Large Flexible -->
<mdc-appbar variant="large-flexible" headline="Large Flexible">
<mdc-icon-button slot="leading"><mdc-icon>arrow_back</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>search</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>more_vert</mdc-icon></mdc-icon-button>
</mdc-appbar>
<!-- Search -->
<mdc-appbar variant="search" headline="Search product">
<mdc-icon-button slot="leading"><mdc-icon>menu</mdc-icon></mdc-icon-button>
<mdc-icon-button slot="trailing"><mdc-icon>account_circle</mdc-icon></mdc-icon-button>
</mdc-appbar>
</div>