← All layouts · Commerce
Checkout
Stepped checkout with address, delivery and payment.
One column, numbered steps, and the order summary always visible. Nothing is hidden behind an accordion, because a checkout that surprises somebody at step three loses them.
- .ms-card
- .ms-stat
- .ms-thumb
- .ms-toolbar
- .ms-btn
- .ms-field
Live
The layout as it renders, in a frame at its own width. Resize the window to watch it respond — the frame is a real viewport.
How to build it
This is the layout's template, read from disk — the same file the frame
above renders, so it cannot drift out of date. Copy it into your own page
and replace the content; every class in it ships in
mcgowan.css.
<header class="ms-topbar">
<div class="ms-logo"><a class="u-link" href="#">Northbound</a></div>
<span class="ms-badge ms-badge--success"><span class="material-icons">lock</span> Secure checkout</span>
</header>
<div class="u-container u-py-6">
<div class="ms-progress u-mb-6"><div class="ms-progress__bar" style="width:66%"></div></div>
<div class="u-grid u-grid-cols-12">
<div class="u-col-12 u-col-lg-7">
<div class="ms-card ms-card--accent-success">
<div class="ms-toolbar">
<strong>1. Contact</strong>
<span class="ms-toolbar__spacer"></span>
<a class="u-link" href="#">Edit</a>
</div>
<p class="ms-stat__meta">ellie@example.com</p>
</div>
<div class="ms-card ms-card--accent-success">
<div class="ms-toolbar">
<strong>2. Delivery</strong>
<span class="ms-toolbar__spacer"></span>
<a class="u-link" href="#">Edit</a>
</div>
<p class="ms-stat__meta">14 Bridge Street, Kendal, LA9 · Next day</p>
</div>
<div class="ms-card ms-card--accent">
<strong>3. Payment</strong>
<form class="ms-form u-mt-4">
<div class="ms-field">
<label class="ms-label" for="card">Card number</label>
<input class="ms-input" id="card" inputmode="numeric" placeholder="0000 0000 0000 0000">
</div>
<div class="ms-form-row">
<div class="ms-field">
<label class="ms-label" for="exp">Expiry</label>
<input class="ms-input" id="exp" placeholder="MM/YY">
</div>
<div class="ms-field">
<label class="ms-label" for="cvc">Security code</label>
<input class="ms-input" id="cvc" placeholder="123">
</div>
</div>
<label class="ms-checkbox"><input checked type="checkbox"> Billing address is the same</label>
<button class="ms-btn ms-btn--primary ms-btn--lg u-w-full u-mt-4">Pay £433.95</button>
</form>
</div>
</div>
<div class="u-col-12 u-col-lg-5">
<div class="ms-card" style="position:sticky; top:1rem">
<h2>Your order</h2>
<div class="ms-card ms-card--horizontal ms-card--flat">
<span class="ms-thumb ms-thumb--square"></span>
<div><strong>Fell Jacket</strong><p class="ms-stat__meta">Size M ×1</p></div>
</div>
<div class="ms-card ms-card--horizontal ms-card--flat">
<span class="ms-thumb ms-thumb--square"></span>
<div><strong>Ridge Pack 30L</strong><p class="ms-stat__meta">Moss ×2</p></div>
</div>
<table class="ms-table">
<tr><td>Subtotal</td><td class="u-text-right">£449.00</td></tr>
<tr><td>Delivery</td><td class="u-text-right">£4.95</td></tr>
<tr><td>Discount</td><td class="u-text-right">−£20.00</td></tr>
<tr><th>Total</th><th class="u-text-right">£433.95</th></tr>
</table>
</div>
</div>
</div>
</div>