Foundation
Spacing units
Why multiples of 8?
The number 8 is easily broken down into smaller measurements before it approaches sub-pixel units. Additionally, many popular screen sizes are also divisible by 8.
Spacing tokens
The VA follows the USWDS spacing unit tokens and then adds additional semantic tokens.
Primitive
vads-spacing-neg-15
-7.5rem (-120px)
units-neg-15 namespaced for VADS.
vads-spacing-neg-10
-5rem (-80px)
units-neg-10 namespaced for VADS.
vads-spacing-neg-9
-4.5rem (-72px)
units-neg-9 namespaced for VADS.
vads-spacing-neg-8
-4rem (-64px)
units-neg-8 namespaced for VADS.
vads-spacing-neg-7
-3.5rem (-56px)
units-neg-7 namespaced for VADS.
vads-spacing-neg-6
-3rem (-48px)
units-neg-6 namespaced for VADS.
vads-spacing-neg-5
-2.5rem (-40px)
units-neg-5 namespaced for VADS.
vads-spacing-neg-4
-2rem (-32px)
units-neg-4 namespaced for VADS.
vads-spacing-neg-3
-1.5rem (-24px)
units-neg-3 namespaced for VADS.
vads-spacing-neg-2p5
-1.25rem (-20px)
units-neg-2p5 namespaced for VADS.
vads-spacing-neg-2
-1rem (-16px)
units-neg-2 namespaced for VADS.
vads-spacing-neg-1p5
-0.75rem (-12px)
units-neg-1p5 namespaced for VADS.
vads-spacing-neg-1
-0.5rem (-8px)
units-neg-1 namespaced for VADS.
vads-spacing-neg-0p5
-0.25rem (-4px)
units-neg-0p5 namespaced for VADS.
vads-spacing-neg-2px
-2px
units-neg-0p25 namespaced for VADS.
vads-spacing-neg-1px
-1px
units-neg-1px namespaced for VADS.
vads-spacing-0
0
uswds-system-spacing-special-0
units-0 namespaced for VADS.
vads-spacing-1px
1px
uswds-system-spacing-1px
units-1px namespaced for VADS.
vads-spacing-2px
2px
uswds-system-spacing-2px
units-0p25 namespaced for VADS.
vads-spacing-0p5
0.25rem (4px)
uswds-system-spacing-05
units-0p5 namespaced for VADS.
vads-spacing-1
0.5rem (8px)
uswds-system-spacing-1
units-1 namespaced for VADS.
vads-spacing-1p5
0.75rem (12px)
uswds-system-spacing-105
units-1p5 namespaced for VADS.
vads-spacing-2
1rem (16px)
uswds-system-spacing-2
units-2 namespaced for VADS.
vads-spacing-2p5
1.25rem (20px)
uswds-system-spacing-205
units-2p5 namespaced for VADS.
vads-spacing-3
1.5rem (24px)
uswds-system-spacing-3
units-3 namespaced for VADS.
vads-spacing-4
2rem (32px)
uswds-system-spacing-4
units-4 namespaced for VADS.
vads-spacing-5
2.5rem (40px)
uswds-system-spacing-5
units-5 namespaced for VADS.
vads-spacing-6
3rem (48px)
uswds-system-spacing-6
units-6 namespaced for VADS.
vads-spacing-7
3.5rem (56px)
uswds-system-spacing-7
units-7 namespaced for VADS.
vads-spacing-8
4rem (64px)
uswds-system-spacing-8
units-8 namespaced for VADS.
vads-spacing-9
4.5rem (72px)
uswds-system-spacing-9
units-9 namespaced for VADS.
vads-spacing-10
5rem (80px)
uswds-system-spacing-10
units-10 namespaced for VADS.
vads-spacing-15
7.5rem (120px)
uswds-system-spacing-15
units-15 namespaced for VADS.
Semantic
vads-spacing-inset-s
1rem (16px)
vads-spacing-2 Small spacing within an item (internal padding).
vads-spacing-vertical-stack-default
1rem (16px)
vads-spacing-vertical-stack-s Default spacing between vertically stacked items.
vads-spacing-vertical-stack-s
1rem (16px)
vads-spacing-2 Small spacing between items in a stack.
vads-spacing-inset-m
1.5rem (24px)
vads-spacing-3 Medium spacing within an item (internal padding).
vads-spacing-vertical-stack-m
1.5rem (24px)
vads-spacing-3 Medium spacing between items in a stack.
vads-forms-spacing-vertical-stack-default
2rem (32px)
vads-spacing-vertical-stack-l Default spacing between form fields. For non-form stacks, use
vads-spacing-vertical-stack-default.
vads-spacing-inset-l
2rem (32px)
vads-spacing-4 Large spacing within an item (internal padding).
vads-spacing-vertical-stack-l
2rem (32px)
vads-spacing-4 Large spacing between items in a stack.
Layout
vads-site-margins-mobile-width
1rem (16px)
uswds-system-spacing-2 Standard margins width for mobile (default) breakpoint.
vads-site-margins-width
2rem (32px)
uswds-system-spacing-4 Standard site margin width at and above
vads-site-margins-breakpoint.
vads-grid-container-max-width
1024px
vads-breakpoint-desktop Maximum width of the centered page grid container.
vads-site-margins-breakpoint
1024px
vads-breakpoint-desktop Breakpoint for site margins to switch.
Using the spacing units
Use spacing unit tokens to keep spacing consistent throughout VA.gov. Tokens are the preferred approach for all margins, padding, and other spacing dimensions.
When you need a custom value outside the token system, use relative units (rem or em) for layout spacing such as margins, padding, and gaps. While pixels scale with page zoom, they don’t respond to user-set default font sizes in browser settings. Using relative units for layout spacing ensures your design adapts to user preferences, which is required for WCAG 2.2 AA SC 1.4.4 Resize Text. Pixels are still appropriate for non-scaling details like borders and box shadows.
In order to access the unit tokens in your project, you will need to import the variables file into your project. Here is how this site is doing that.
There are two ways of using the spacing tokens in your code.
Output CSS as REM units (recommended)
Use units() to output spacing in rem. This is the recommended approach because rem units scale with user font size preferences and support accessible text resizing.
.foo {
margin: units(5);
padding: units(2.5);
}
will compile to:
.foo {
margin: 4rem;
padding: 2rem;
}
Output CSS as PX units
Use units-px() only when a pixel value is specifically required, such as for borders or box shadows that shouldn’t scale with text size. For margins, padding, and font sizes, prefer units() to support accessible text resizing.
.foo {
margin: units-px(5);
padding: units-px(2.5);
}
will compile to:
.foo {
margin: 40px;
padding: 20px;
}