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 xsmall and {breakpoint}:p{sides}-{size} for small, medium, large, xlarge, and 2xlarge.
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 to04xsmall— default token value is0.0625rem(1px).3xsmall— default token value is0.125rem(2px).2xsmall— default token value is0.25rem(4px).xsmall— default token value is0.5rem(8px).medium— default token value is1rem(16px).large— default token value is1.25rem(20px).xlarge— default token value is1.5rem(24px).2xlarge— default token value is1.75rem(28px).3xlarge— default token value is2rem(32px).4xlarge— default token value is2.25rem(36px).5xlarge— default token value is2.5rem(40px).6xlarge— 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-xsmall">p-xsmall</div>
<div class="p-small">p-small</div>
<div class="p-medium">p-medium</div>
<div class="p-large">p-large</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-large py-xsmall">px-large, py-xsmall</div>
<div class="px-xsmall py-large">px-xsmall, py-large</div>Individual edges
Single-edge utilities set padding on one edge without affecting the others.
<div class="pt-large">pt-large</div>
<div class="pb-large">pb-large</div>
<div class="ps-large">ps-large</div>
<div class="pe-large text-end">pe-large</div>Responsive padding
Prefix any padding class with a breakpoint to apply it at that breakpoint and above. Unprefixed classes apply from xsmall up.
<div class="p-xsmall medium:p-large">p-xsmall, then p-large from medium 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-4xsmall | padding: var(--cx-space-4xsmall); |
.p-3xsmall | padding: var(--cx-space-3xsmall); |
.p-2xsmall | padding: var(--cx-space-2xsmall); |
.p-xsmall | padding: var(--cx-space-xsmall); |
.p-small | padding: var(--cx-space-small); |
.p-medium | padding: var(--cx-space-medium); |
.p-large | padding: var(--cx-space-large); |
.p-xlarge | padding: var(--cx-space-xlarge); |
.p-2xlarge | padding: var(--cx-space-2xlarge); |
.p-3xlarge | padding: var(--cx-space-3xlarge); |
.p-4xlarge | padding: var(--cx-space-4xlarge); |
.p-5xlarge | padding: var(--cx-space-5xlarge); |
.p-6xlarge | padding: var(--cx-space-6xlarge); |
.p-0 | padding: 0; |
.px-zero | padding-inline: var(--cx-space-zero); |
.px-4xsmall | padding-inline: var(--cx-space-4xsmall); |
.px-3xsmall | padding-inline: var(--cx-space-3xsmall); |
.px-2xsmall | padding-inline: var(--cx-space-2xsmall); |
.px-xsmall | padding-inline: var(--cx-space-xsmall); |
.px-small | padding-inline: var(--cx-space-small); |
.px-medium | padding-inline: var(--cx-space-medium); |
.px-large | padding-inline: var(--cx-space-large); |
.px-xlarge | padding-inline: var(--cx-space-xlarge); |
.px-2xlarge | padding-inline: var(--cx-space-2xlarge); |
.px-3xlarge | padding-inline: var(--cx-space-3xlarge); |
.px-4xlarge | padding-inline: var(--cx-space-4xlarge); |
.px-5xlarge | padding-inline: var(--cx-space-5xlarge); |
.px-6xlarge | padding-inline: var(--cx-space-6xlarge); |
.px-0 | padding-inline: 0; |
.py-zero | padding-block: var(--cx-space-zero); |
.py-4xsmall | padding-block: var(--cx-space-4xsmall); |
.py-3xsmall | padding-block: var(--cx-space-3xsmall); |
.py-2xsmall | padding-block: var(--cx-space-2xsmall); |
.py-xsmall | padding-block: var(--cx-space-xsmall); |
.py-small | padding-block: var(--cx-space-small); |
.py-medium | padding-block: var(--cx-space-medium); |
.py-large | padding-block: var(--cx-space-large); |
.py-xlarge | padding-block: var(--cx-space-xlarge); |
.py-2xlarge | padding-block: var(--cx-space-2xlarge); |
.py-3xlarge | padding-block: var(--cx-space-3xlarge); |
.py-4xlarge | padding-block: var(--cx-space-4xlarge); |
.py-5xlarge | padding-block: var(--cx-space-5xlarge); |
.py-6xlarge | padding-block: var(--cx-space-6xlarge); |
.py-0 | padding-block: 0; |
.pt-zero | padding-block-start: var(--cx-space-zero); |
.pt-4xsmall | padding-block-start: var(--cx-space-4xsmall); |
.pt-3xsmall | padding-block-start: var(--cx-space-3xsmall); |
.pt-2xsmall | padding-block-start: var(--cx-space-2xsmall); |
.pt-xsmall | padding-block-start: var(--cx-space-xsmall); |
.pt-small | padding-block-start: var(--cx-space-small); |
.pt-medium | padding-block-start: var(--cx-space-medium); |
.pt-large | padding-block-start: var(--cx-space-large); |
.pt-xlarge | padding-block-start: var(--cx-space-xlarge); |
.pt-2xlarge | padding-block-start: var(--cx-space-2xlarge); |
.pt-3xlarge | padding-block-start: var(--cx-space-3xlarge); |
.pt-4xlarge | padding-block-start: var(--cx-space-4xlarge); |
.pt-5xlarge | padding-block-start: var(--cx-space-5xlarge); |
.pt-6xlarge | padding-block-start: var(--cx-space-6xlarge); |
.pt-0 | padding-block-start: 0; |
.pe-zero | padding-inline-end: var(--cx-space-zero); |
.pe-4xsmall | padding-inline-end: var(--cx-space-4xsmall); |
.pe-3xsmall | padding-inline-end: var(--cx-space-3xsmall); |
.pe-2xsmall | padding-inline-end: var(--cx-space-2xsmall); |
.pe-xsmall | padding-inline-end: var(--cx-space-xsmall); |
.pe-small | padding-inline-end: var(--cx-space-small); |
.pe-medium | padding-inline-end: var(--cx-space-medium); |
.pe-large | padding-inline-end: var(--cx-space-large); |
.pe-xlarge | padding-inline-end: var(--cx-space-xlarge); |
.pe-2xlarge | padding-inline-end: var(--cx-space-2xlarge); |
.pe-3xlarge | padding-inline-end: var(--cx-space-3xlarge); |
.pe-4xlarge | padding-inline-end: var(--cx-space-4xlarge); |
.pe-5xlarge | padding-inline-end: var(--cx-space-5xlarge); |
.pe-6xlarge | padding-inline-end: var(--cx-space-6xlarge); |
.pe-0 | padding-inline-end: 0; |
.pb-zero | padding-block-end: var(--cx-space-zero); |
.pb-4xsmall | padding-block-end: var(--cx-space-4xsmall); |
.pb-3xsmall | padding-block-end: var(--cx-space-3xsmall); |
.pb-2xsmall | padding-block-end: var(--cx-space-2xsmall); |
.pb-xsmall | padding-block-end: var(--cx-space-xsmall); |
.pb-small | padding-block-end: var(--cx-space-small); |
.pb-medium | padding-block-end: var(--cx-space-medium); |
.pb-large | padding-block-end: var(--cx-space-large); |
.pb-xlarge | padding-block-end: var(--cx-space-xlarge); |
.pb-2xlarge | padding-block-end: var(--cx-space-2xlarge); |
.pb-3xlarge | padding-block-end: var(--cx-space-3xlarge); |
.pb-4xlarge | padding-block-end: var(--cx-space-4xlarge); |
.pb-5xlarge | padding-block-end: var(--cx-space-5xlarge); |
.pb-6xlarge | padding-block-end: var(--cx-space-6xlarge); |
.pb-0 | padding-block-end: 0; |
.ps-zero | padding-inline-start: var(--cx-space-zero); |
.ps-4xsmall | padding-inline-start: var(--cx-space-4xsmall); |
.ps-3xsmall | padding-inline-start: var(--cx-space-3xsmall); |
.ps-2xsmall | padding-inline-start: var(--cx-space-2xsmall); |
.ps-xsmall | padding-inline-start: var(--cx-space-xsmall); |
.ps-small | padding-inline-start: var(--cx-space-small); |
.ps-medium | padding-inline-start: var(--cx-space-medium); |
.ps-large | padding-inline-start: var(--cx-space-large); |
.ps-xlarge | padding-inline-start: var(--cx-space-xlarge); |
.ps-2xlarge | padding-inline-start: var(--cx-space-2xlarge); |
.ps-3xlarge | padding-inline-start: var(--cx-space-3xlarge); |
.ps-4xlarge | padding-inline-start: var(--cx-space-4xlarge); |
.ps-5xlarge | padding-inline-start: var(--cx-space-5xlarge); |
.ps-6xlarge | padding-inline-start: var(--cx-space-6xlarge); |
.ps-0 | padding-inline-start: 0; |
Sass maps
Padding utilities are generated from Sass maps in scss/maps/_spacing.scss.
$spaces: (
zero: $space-zero,
4xsmall: $space-4xsmall,
3xsmall: $space-3xsmall,
2xsmall: $space-2xsmall,
xsmall: $space-xsmall,
small: $space-small,
medium: $space-medium,
large: $space-large,
xlarge: $space-xlarge,
2xlarge: $space-2xlarge,
3xlarge: $space-3xlarge,
4xlarge: $space-4xlarge,
5xlarge: $space-5xlarge,
6xlarge: $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
),