Background
Convey meaning through background-color and add decoration with gradients.
Accessibility tip: Color alone shouldn't convey meaning as it's not perceived by assistive technology users. Ensure clarity through text with adequate contrast, ARIA attributes where needed, and consider using .visually-hidden for screen reader content.
Background Color
Similar to the foreground classes, set the background of an element to any contextual class. Background utilities do not set color property, so in some cases you'll want to use in combination with .fg-* color utilities.
Body Backgrounds
.bg-main
.bg-even
.bg-evident
.bg-inverse
.base-color
.bg-highlight
<p class="bg-main p-2xsmall">.bg-main</p>
<p class="bg-even p-2xsmall">.bg-even</p>
<p class="bg-evident p-2xsmall">.bg-evident</p>
<p class="bg-inverse fg-inverse p-2xsmall">.bg-inverse</p>
<p class="base-color contrast-color p-2xsmall">.base-color</p>
<p class="bg-highlight p-2xsmall">.bg-highlight</p> Color Backgrounds
Base context colors can be used as background with .bg-* classes.
.bg-default
.bg-alternate
.bg-primary
.bg-secondary
.bg-neutral
.bg-danger
.bg-success
.bg-warning
.bg-info
.bg-black
.bg-white
<p class="bg-default fg-contrast p-2xsmall">.bg-default</p>
<p class="bg-alternate fg-contrast p-2xsmall">.bg-alternate</p>
<p class="bg-primary fg-contrast p-2xsmall">.bg-primary</p>
<p class="bg-secondary fg-contrast p-2xsmall">.bg-secondary</p>
<p class="bg-neutral fg-contrast p-2xsmall">.bg-neutral</p>
<p class="bg-danger fg-contrast p-2xsmall">.bg-danger</p>
<p class="bg-success fg-contrast p-2xsmall">.bg-success</p>
<p class="bg-warning fg-contrast p-2xsmall">.bg-warning</p>
<p class="bg-info fg-contrast p-2xsmall">.bg-info</p>
<p class="bg-black fg-contrast p-2xsmall">.bg-black</p>
<p class="bg-white fg-contrast p-2xsmall">.bg-white</p> Context Backgrounds
Body backgrounds are available for every context color.
.primary-bg-main
.primary-bg-even
.primary-bg-evident
.primary-bg-inverse
.primary-base-color
.primary-bg-highlight
<p class="primary-bg-main primary-fg-main p-2xsmall">.primary-bg-main</p>
<p class="primary-bg-even primary-fg-main p-2xsmall">.primary-bg-even</p>
<p class="primary-bg-evident primary-fg-main p-2xsmall">.primary-bg-evident</p>
<p class="primary-bg-inverse primary-fg-inverse p-2xsmall">.primary-bg-inverse</p>
<p class="primary-base-color primary-contrast-color p-2xsmall">.primary-base-color</p>
<p class="primary-bg-highlight primary-fg-main p-2xsmall">.primary-bg-highlight</p> Context Scenes
.dim-main
.dim-subtle
.dim-slight
.transparent-color
<p class="dim-main fg-inverse p-2xsmall">.dim-main</p>
<p class="dim-subtle p-2xsmall">.dim-subtle</p>
<p class="dim-slight p-2xsmall">.dim-slight</p>
<p class="transparent-color p-2xsmall">.transparent-color</p> .secondary-dim-main
.secondary-dim-subtle
.secondary-dim-slight
.secondary-transparent-color
<p class="secondary-dim-main p-2xsmall">.secondary-dim-main</p>
<p class="secondary-dim-subtle p-2xsmall">.secondary-dim-subtle</p>
<p class="secondary-dim-slight p-2xsmall">.secondary-dim-slight</p>
<p class="secondary-transparent-color p-2xsmall">.secondary-transparent-color</p> Background gradient
By adding a .bg-gradient class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.
Do you need a gradient in your custom CSS? Just add background-image: var(--cx-gradient);.
.bg-default.bg-gradient
.bg-alternate.bg-gradient
.bg-primary.bg-gradient
.bg-secondary.bg-gradient
.bg-neutral.bg-gradient
.bg-danger.bg-gradient
.bg-success.bg-gradient
.bg-warning.bg-gradient
.bg-info.bg-gradient
.bg-black.bg-gradient
.bg-white.bg-gradient
<p class="bg-default bg-gradient fg-contrast p-xsmall">.bg-default.bg-gradient</p>
<p class="bg-alternate bg-gradient fg-contrast p-xsmall">.bg-alternate.bg-gradient</p>
<p class="bg-primary bg-gradient fg-contrast p-xsmall">.bg-primary.bg-gradient</p>
<p class="bg-secondary bg-gradient fg-contrast p-xsmall">.bg-secondary.bg-gradient</p>
<p class="bg-neutral bg-gradient fg-contrast p-xsmall">.bg-neutral.bg-gradient</p>
<p class="bg-danger bg-gradient fg-contrast p-xsmall">.bg-danger.bg-gradient</p>
<p class="bg-success bg-gradient fg-contrast p-xsmall">.bg-success.bg-gradient</p>
<p class="bg-warning bg-gradient fg-contrast p-xsmall">.bg-warning.bg-gradient</p>
<p class="bg-info bg-gradient fg-contrast p-xsmall">.bg-info.bg-gradient</p>
<p class="bg-black bg-gradient fg-contrast p-xsmall">.bg-black.bg-gradient</p>
<p class="bg-white bg-gradient fg-contrast p-xsmall">.bg-white.bg-gradient</p> Opacity
Using CSS variables for background-color utilities allows for real-time color changes without compilation and dynamic alpha transparency changes.
How it works
Consider our .bg-primary utility.
.bg-primary {
background-color: oklch(from var(--cx-primary) l c h / var(--cx-bg-opacity, 1)) !important;
}
.bg-opacity-50 {
--cx-bg-opacity: var(--cx-opacity-50);
}
We use the --cx-primary CSS variable directly with CSS relative color syntax, and attach a second CSS variable, --cx-bg-opacity, for the alpha transparency (with a default value 1). The oklch(from ...) expression derives the color from the variable and applies the opacity channel. Then, the opacity class overrides the default opacity by setting --cx-bg-opacity on the element.
Example
To change that opacity, override --cx-bg-opacity via custom styles or inline styles.
<div class="bg-primary p-2xsmall primary-contrast-color">
This is default primary background</div>
<div style="--cx-bg-opacity: .4;" class="bg-primary p-2xsmall">
This is 40% opacity primary background</div> Or, choose from any of the .bg-opacity-* utilities:
bg-opacity-solid backgroundbg-opacity-95 backgroundbg-opacity-90 backgroundbg-opacity-80 backgroundbg-opacity-70 backgroundbg-opacity-60 backgroundbg-opacity-50 backgroundbg-opacity-40 backgroundbg-opacity-30 backgroundbg-opacity-20 backgroundbg-opacity-10 backgroundbg-opacity-05 backgroundbg-opacity-zero background<div class="bg-primary bg-opacity-solid p-2xsmall">This is <code>bg-opacity-solid</code> background</div>
<div class="bg-primary bg-opacity-95 p-2xsmall">This is <code>bg-opacity-95</code> background</div>
<div class="bg-primary bg-opacity-90 p-2xsmall">This is <code>bg-opacity-90</code> background</div>
<div class="bg-primary bg-opacity-80 p-2xsmall">This is <code>bg-opacity-80</code> background</div>
<div class="bg-primary bg-opacity-70 p-2xsmall">This is <code>bg-opacity-70</code> background</div>
<div class="bg-primary bg-opacity-60 p-2xsmall">This is <code>bg-opacity-60</code> background</div>
<div class="bg-primary bg-opacity-50 p-2xsmall">This is <code>bg-opacity-50</code> background</div>
<div class="bg-primary bg-opacity-40 p-2xsmall">This is <code>bg-opacity-40</code> background</div>
<div class="bg-primary bg-opacity-30 p-2xsmall">This is <code>bg-opacity-30</code> background</div>
<div class="bg-primary bg-opacity-20 p-2xsmall">This is <code>bg-opacity-20</code> background</div>
<div class="bg-primary bg-opacity-10 p-2xsmall">This is <code>bg-opacity-10</code> background</div>
<div class="bg-primary bg-opacity-05 p-2xsmall">This is <code>bg-opacity-05</code> background</div>
<div class="bg-primary bg-opacity-zero p-2xsmall">This is <code>bg-opacity-zero</code> background</div> Context Opacity
You can directly apply a context opacity utility to match scene-* colors:
dim-main opacity primary backgrounddim-subtle opacity primary backgrounddim-slight opacity primary backgroundtransparent-color opacity primary background<div class="bg-primary bg-opacity-dim p-2xsmall">This is <code>dim-main</code> opacity primary background</div>
<div class="bg-primary bg-opacity-blur p-2xsmall">This is <code>dim-subtle</code> opacity primary background</div>
<div class="bg-primary bg-opacity-shade p-2xsmall">This is <code>dim-slight</code> opacity primary background</div>
<div class="bg-primary bg-opacity-clear p-2xsmall">This is <code>transparent-color</code> opacity primary background</div> CSS
This component can be customized using CSS variables, allowing for styles to be modified dynamically on the page. These CSS variables are part of Chassis CSS's design token system, giving design teams control over component appearance. See the design tokens page for more details.
Variables
These CSS variables control the component's appearance and can be modified dynamically on the page. Components use cascading variables, allowing seamless variations in size, color, and style without redundant style declarations through component inheritance and the context class system.
Sass variables
These Sass variables are also exposed as CSS custom properties using the --cx-
prefix. A Sass variable $variable-name becomes available as --cx-variable-name in CSS, allowing for styles to be modified dynamically on the
page. See the
context components
page for more details.
Most background-color utilities are generated by our context colors, reassigned from our generic color palette variables.
$default: $cx-color-base-context-light-black-base-color;
$alternate: $cx-color-base-context-light-white-base-color;
$primary: $cx-color-base-context-light-primary-base-color;
$secondary: $cx-color-base-context-light-secondary-base-color;
$neutral: $cx-color-base-context-light-neutral-base-color;
$danger: $cx-color-base-context-light-danger-base-color;
$success: $cx-color-base-context-light-success-base-color;
$warning: $cx-color-base-context-light-warning-base-color;
$info: $cx-color-base-context-light-info-base-color;
$black: $cx-color-base-context-light-black-base-color;
$white: $cx-color-base-context-light-white-base-color;
$opacity-dim-main: $cx-opacity-context-dim-main;
$opacity-dim-subtle: $cx-opacity-context-dim-subtle;
$opacity-dim-slight: $cx-opacity-context-dim-slight;
$opacity-transparent-color: $cx-opacity-context-transparent-color;
$bg-gradient: linear-gradient(180deg, #{to-opacity($white, .15)}, #{to-opacity($white, 0)});
Generated utilities.
"bg-color": (
css-var: true,
css-variable-name: bg-color,
class: bg,
values: map-merge(
map-loop($context-colors, opacity-var, #{"$key"}, #{"bg"}),
( "transparent": transparent )
)
),
"bg-opacity": (
css-var: true,
css-variable-name: bg-opacity,
class: bg-opacity,
values: $bg-opacities
),
Sass maps
Theme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.
$context-colors: (
"default": $default,
"alternate": $alternate,
"primary": $primary,
"secondary": $secondary,
"neutral": $neutral,
"warning": $warning,
"success": $success,
"danger": $danger,
"info": $info,
"black": $black,
"white": $white
);
// scss-docs-start basic-opacities-map
$basic-opacities: (
"100": 1,
"75": .75,
"50": .5,
"25": .25,
"10": .1,
"0": 0,
);
// scss-docs-end basic-opacities-map
// scss-docs-start token-opacities-map
$token-opacities: (
"solid": $opacity-solid,
"95": $opacity-95,
"90": $opacity-90,
"80": $opacity-80,
"70": $opacity-70,
"60": $opacity-60,
"50": $opacity-50,
"40": $opacity-40,
"30": $opacity-30,
"20": $opacity-20,
"10": $opacity-10,
"05": $opacity-05,
"zero": $opacity-zero,
);
$opacities: $token-opacities; // $base-opacities for lesser CSS generation.
// scss-docs-end token-opacities-map