The Material Components for the web layout grid component
94
Classes for controlling cell vertical alignment and visual order within the grid.
Control how cells align vertically within their row.
.mdc-layout-grid__cell--align-top /* Align to top of row */
.mdc-layout-grid__cell--align-middle /* Center vertically in row */
.mdc-layout-grid__cell--align-bottom /* Align to bottom of row */Default Behavior: Cells stretch to fill the full height of their row.
<div class="mdc-layout-grid__inner">
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--align-top">
<p>Short content</p>
</div>
<div class="mdc-layout-grid__cell">
<p>Much longer content that makes this cell taller and determines the row height. This cell will stretch to its natural height.</p>
</div>
</div><div class="mdc-layout-grid__cell mdc-layout-grid__cell--align-middle">
Content centered vertically in the row
</div><div class="mdc-layout-grid__cell mdc-layout-grid__cell--align-bottom">
Content aligned to bottom of row
</div>Change the visual order of cells without affecting the DOM order.
.mdc-layout-grid__cell--order-1 /* First in visual order */
.mdc-layout-grid__cell--order-2 /* Second in visual order */
.mdc-layout-grid__cell--order-3 /* Third in visual order */
.mdc-layout-grid__cell--order-4 /* Fourth in visual order */
.mdc-layout-grid__cell--order-5 /* Fifth in visual order */
.mdc-layout-grid__cell--order-6 /* Sixth in visual order */
.mdc-layout-grid__cell--order-7 /* Seventh in visual order */
.mdc-layout-grid__cell--order-8 /* Eighth in visual order */
.mdc-layout-grid__cell--order-9 /* Ninth in visual order */
.mdc-layout-grid__cell--order-10 /* Tenth in visual order */
.mdc-layout-grid__cell--order-11 /* Eleventh in visual order */
.mdc-layout-grid__cell--order-12 /* Twelfth in visual order */<div class="mdc-layout-grid__inner">
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-3">
Third visually (first in DOM)
</div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-1">
First visually (second in DOM)
</div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-2">
Second visually (third in DOM)
</div>
</div>Use multiple order classes for different responsive behaviors:
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--order-1
mdc-layout-grid__cell--span-6-desktop
mdc-layout-grid__cell--span-8-tablet">
Important content - shows first on all devices
</div>
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--order-2
mdc-layout-grid__cell--span-6-desktop
mdc-layout-grid__cell--span-8-tablet">
Secondary content - shows second
</div>Important: Visual reordering affects screen readers and keyboard navigation. The order property changes visual presentation but not DOM order.
Screen readers follow DOM order, not visual order:
<!-- Screen readers read: "First", "Second", "Third" -->
<!-- Visual order shows: "Third", "First", "Second" -->
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-2">First</div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-3">Second</div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--order-1">Third</div>Tab order follows DOM order, not visual order, which can confuse keyboard users.
You can combine alignment and ordering classes:
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--align-middle
mdc-layout-grid__cell--order-2
mdc-layout-grid__cell--span-6">
Centered vertically, second in visual order, half width
</div><div class="mdc-layout-grid__inner">
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--span-8
mdc-layout-grid__cell--order-2">
<article>Main article content</article>
</div>
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--span-4
mdc-layout-grid__cell--order-1
mdc-layout-grid__cell--align-top">
<aside>Sidebar that appears first visually</aside>
</div>
</div><div class="mdc-layout-grid__inner">
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-8">
<h2>Section Title</h2>
<p>Section content with variable height...</p>
</div>
<div class="mdc-layout-grid__cell
mdc-layout-grid__cell--span-4
mdc-layout-grid__cell--align-middle">
<button>Action Button</button>
</div>
</div>Install with Tessl CLI
npx tessl i tessl/npm-material--layout-griddocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10