Padding
Responsive utilities for applying padding on all sides, axes, or individual edges using the Chassis spacing scale.
Overview
Padding utilities apply the CSS padding property and its logical shorthand variants. All classes are responsive by default and cover all four sides at once, an axis (inline or block), or a single edge.
Notation
Padding classes that apply at all breakpoints have no breakpoint prefix — they start from min-width: 0 and are not media-query-bound. Breakpoint-prefixed classes apply at that breakpoint and above.
The classes are named using the format p{sides}-{size} for xs and {breakpoint}:p{sides}-{size} for sm, md, lg, xl, and 2xl.
Where sides is one of:
x—padding-inline(both inline edges)y—padding-block(both block edges)t—padding-block-startb—padding-block-ends—padding-inline-starte—padding-inline-end- (blank) —
paddingon all four sides
Where size is one of:
zeroor0— eliminates padding by setting it to04xs— default token value is0.0625rem(1px).3xs— default token value is0.125rem(2px).2xs— default token value is0.25rem(4px).xs— default token value is0.5rem(8px).md— default token value is1rem(16px).lg— default token value is1.25rem(20px).xl— default token value is1.5rem(24px).2xl— default token value is1.75rem(28px).3xl— default token value is2rem(32px).4xl— default token value is2.25rem(36px).5xl— default token value is2.5rem(40px).6xl— default token value is3rem(48px).
Additional sizes can be added by adding entries to the $spaces Sass map.
All sides
.p-{size} sets padding on all four sides of an element at once.
<div class="p-xs">p-xs</div>
<div class="p-sm">p-sm</div>
<div class="p-md">p-md</div>
<div class="p-lg">p-lg</div>Axes
Axis utilities apply padding to two opposite edges simultaneously. .px-{size} targets both inline edges; .py-{size} targets both block edges.
<div class="px-lg py-xs">px-lg, py-xs</div>
<div class="px-xs py-lg">px-xs, py-lg</div>Individual edges
Single-edge utilities set padding on one edge without affecting the others.
<div class="pt-lg">pt-lg</div>
<div class="pb-lg">pb-lg</div>
<div class="ps-lg">ps-lg</div>
<div class="pe-lg text-end">pe-lg</div>Responsive padding
Prefix any padding class with a breakpoint to apply it at that breakpoint and above. Unprefixed classes apply from xs up.
<div class="p-xs md:p-lg">p-xs, then p-lg from md up</div>CSS
Padding utilities are generated via the utilities API in scss/utilities/_padding.scss.
Reference
The table lists all padding utilities and their CSS properties.
| Class | Properties |
|---|---|
.p-zero | padding: var(--cx-space-zero); |
.p-4xs | padding: var(--cx-space-4xs); |
.p-3xs | padding: var(--cx-space-3xs); |
.p-2xs | padding: var(--cx-space-2xs); |
.p-xs | padding: var(--cx-space-xs); |
.p-sm | padding: var(--cx-space-sm); |
.p-md | padding: var(--cx-space-md); |
.p-lg | padding: var(--cx-space-lg); |
.p-xl | padding: var(--cx-space-xl); |
.p-2xl | padding: var(--cx-space-2xl); |
.p-3xl | padding: var(--cx-space-3xl); |
.p-4xl | padding: var(--cx-space-4xl); |
.p-5xl | padding: var(--cx-space-5xl); |
.p-6xl | padding: var(--cx-space-6xl); |
.p-0 | padding: 0; |
.px-zero | padding-inline: var(--cx-space-zero); |
.px-4xs | padding-inline: var(--cx-space-4xs); |
.px-3xs | padding-inline: var(--cx-space-3xs); |
.px-2xs | padding-inline: var(--cx-space-2xs); |
.px-xs | padding-inline: var(--cx-space-xs); |
.px-sm | padding-inline: var(--cx-space-sm); |
.px-md | padding-inline: var(--cx-space-md); |
.px-lg | padding-inline: var(--cx-space-lg); |
.px-xl | padding-inline: var(--cx-space-xl); |
.px-2xl | padding-inline: var(--cx-space-2xl); |
.px-3xl | padding-inline: var(--cx-space-3xl); |
.px-4xl | padding-inline: var(--cx-space-4xl); |
.px-5xl | padding-inline: var(--cx-space-5xl); |
.px-6xl | padding-inline: var(--cx-space-6xl); |
.px-0 | padding-inline: 0; |
.py-zero | padding-block: var(--cx-space-zero); |
.py-4xs | padding-block: var(--cx-space-4xs); |
.py-3xs | padding-block: var(--cx-space-3xs); |
.py-2xs | padding-block: var(--cx-space-2xs); |
.py-xs | padding-block: var(--cx-space-xs); |
.py-sm | padding-block: var(--cx-space-sm); |
.py-md | padding-block: var(--cx-space-md); |
.py-lg | padding-block: var(--cx-space-lg); |
.py-xl | padding-block: var(--cx-space-xl); |
.py-2xl | padding-block: var(--cx-space-2xl); |
.py-3xl | padding-block: var(--cx-space-3xl); |
.py-4xl | padding-block: var(--cx-space-4xl); |
.py-5xl | padding-block: var(--cx-space-5xl); |
.py-6xl | padding-block: var(--cx-space-6xl); |
.py-0 | padding-block: 0; |
.pt-zero | padding-block-start: var(--cx-space-zero); |
.pt-4xs | padding-block-start: var(--cx-space-4xs); |
.pt-3xs | padding-block-start: var(--cx-space-3xs); |
.pt-2xs | padding-block-start: var(--cx-space-2xs); |
.pt-xs | padding-block-start: var(--cx-space-xs); |
.pt-sm | padding-block-start: var(--cx-space-sm); |
.pt-md | padding-block-start: var(--cx-space-md); |
.pt-lg | padding-block-start: var(--cx-space-lg); |
.pt-xl | padding-block-start: var(--cx-space-xl); |
.pt-2xl | padding-block-start: var(--cx-space-2xl); |
.pt-3xl | padding-block-start: var(--cx-space-3xl); |
.pt-4xl | padding-block-start: var(--cx-space-4xl); |
.pt-5xl | padding-block-start: var(--cx-space-5xl); |
.pt-6xl | padding-block-start: var(--cx-space-6xl); |
.pt-0 | padding-block-start: 0; |
.pe-zero | padding-inline-end: var(--cx-space-zero); |
.pe-4xs | padding-inline-end: var(--cx-space-4xs); |
.pe-3xs | padding-inline-end: var(--cx-space-3xs); |
.pe-2xs | padding-inline-end: var(--cx-space-2xs); |
.pe-xs | padding-inline-end: var(--cx-space-xs); |
.pe-sm | padding-inline-end: var(--cx-space-sm); |
.pe-md | padding-inline-end: var(--cx-space-md); |
.pe-lg | padding-inline-end: var(--cx-space-lg); |
.pe-xl | padding-inline-end: var(--cx-space-xl); |
.pe-2xl | padding-inline-end: var(--cx-space-2xl); |
.pe-3xl | padding-inline-end: var(--cx-space-3xl); |
.pe-4xl | padding-inline-end: var(--cx-space-4xl); |
.pe-5xl | padding-inline-end: var(--cx-space-5xl); |
.pe-6xl | padding-inline-end: var(--cx-space-6xl); |
.pe-0 | padding-inline-end: 0; |
.pb-zero | padding-block-end: var(--cx-space-zero); |
.pb-4xs | padding-block-end: var(--cx-space-4xs); |
.pb-3xs | padding-block-end: var(--cx-space-3xs); |
.pb-2xs | padding-block-end: var(--cx-space-2xs); |
.pb-xs | padding-block-end: var(--cx-space-xs); |
.pb-sm | padding-block-end: var(--cx-space-sm); |
.pb-md | padding-block-end: var(--cx-space-md); |
.pb-lg | padding-block-end: var(--cx-space-lg); |
.pb-xl | padding-block-end: var(--cx-space-xl); |
.pb-2xl | padding-block-end: var(--cx-space-2xl); |
.pb-3xl | padding-block-end: var(--cx-space-3xl); |
.pb-4xl | padding-block-end: var(--cx-space-4xl); |
.pb-5xl | padding-block-end: var(--cx-space-5xl); |
.pb-6xl | padding-block-end: var(--cx-space-6xl); |
.pb-0 | padding-block-end: 0; |
.ps-zero | padding-inline-start: var(--cx-space-zero); |
.ps-4xs | padding-inline-start: var(--cx-space-4xs); |
.ps-3xs | padding-inline-start: var(--cx-space-3xs); |
.ps-2xs | padding-inline-start: var(--cx-space-2xs); |
.ps-xs | padding-inline-start: var(--cx-space-xs); |
.ps-sm | padding-inline-start: var(--cx-space-sm); |
.ps-md | padding-inline-start: var(--cx-space-md); |
.ps-lg | padding-inline-start: var(--cx-space-lg); |
.ps-xl | padding-inline-start: var(--cx-space-xl); |
.ps-2xl | padding-inline-start: var(--cx-space-2xl); |
.ps-3xl | padding-inline-start: var(--cx-space-3xl); |
.ps-4xl | padding-inline-start: var(--cx-space-4xl); |
.ps-5xl | padding-inline-start: var(--cx-space-5xl); |
.ps-6xl | padding-inline-start: var(--cx-space-6xl); |
.ps-0 | padding-inline-start: 0; |
Sass maps
Padding utilities are generated from Sass maps in scss/maps/_spacing.scss.
$spaces: (
zero: $space-zero,
4xs: $space-4xsmall,
3xs: $space-3xsmall,
2xs: $space-2xsmall,
xs: $space-xsmall,
sm: $space-small,
md: $space-medium,
lg: $space-large,
xl: $space-xlarge,
2xl: $space-2xlarge,
3xl: $space-3xlarge,
4xl: $space-4xlarge,
5xl: $space-5xlarge,
6xl: $space-6xlarge,
);$-padding-values is derived from $spaces in scss/utilities/_padding.scss, resolving each spacing key to its :root custom property via var(--space-*), plus 0.
// Build a padding values map from $spaces. Each key maps to its :root spacing variable, plus 0.
$-padding-values: map.merge(map-loop($spaces, varify, "$key", "space"), (0: 0));Utilities API
Padding utilities are declared in scss/utilities/_padding.scss using the utilities API.
"padding": (
responsive: true,
property: padding,
class: p,
values: $-padding-values
),
"padding-x": (
responsive: true,
property: padding-inline,
class: px,
values: $-padding-values
),
"padding-y": (
responsive: true,
property: padding-block,
class: py,
values: $-padding-values
),
"padding-top": (
responsive: true,
property: padding-block-start,
class: pt,
values: $-padding-values
),
"padding-end": (
responsive: true,
property: padding-inline-end,
class: pe,
values: $-padding-values
),
"padding-bottom": (
responsive: true,
property: padding-block-end,
class: pb,
values: $-padding-values
),
"padding-start": (
responsive: true,
property: padding-inline-start,
class: ps,
values: $-padding-values
),