Containers
The layout grid is comprised of 3 elements: columns, gutters, and margins. Columns organize the main elements on the page, while gutters refers to the space between elements, both vertically and horizontally. Margins are located on the left and right of the page, and reference where the first column starts and the last column ends, horizontally.
We often use a standard 20px gutter between elements, typically in a card format.
Containers are the most basic layout element in Cirrus and are required when using our default grid system. Containers are used to contain, pad, and (sometimes) center the content within them. While containers *can* be nested, most layouts do not require a nested container.
Cirrus comes with three different containers:
- `.container`, which sets a `max-width` at each responsive breakpoint
- `.container-fluid`, which is `width: 100%` at all breakpoints
- `.container-{breakpoint}`, which is `width: 100%` until the specified breakpoint
The table below illustrates how each container's max-width
compares to the original `.container` and `.container-fluid` across each breakpoint.
The table below illustrates the different breakpoints found in Cirrus
Extra small <576px |
Small ≥576px |
Medium ≥768px |
Large ≥992px |
Extra large ≥1200px |
Extra extra large ≥1560px |
|
---|---|---|---|---|---|---|
.container |
100% | 540px | 720px | 960px | 1140px | 1500px |
.container-sm |
100% | 540px | 720px | 960px | 1140px | 1500px |
.container-md |
100% | 100% | 720px | 960px | 1140px | 1500px |
.container-lg |
100% | 100% | 100% | 960px | 1140px | 1500px |
.container-xl |
100% | 100% | 100% | 100% | 1140px | 1500px |
.container-xxl |
100% | 100% | 100% | 100% | 100% | 1500px |
.container-fluid |
100% | 100% | 100% | 100% | 100% | 100% |
Types of Containers
All-in-one
Our default `.container` class is a responsive, fixed-width container, meaning its `max-width` changes at each breakpoint. This style is helpful for designs that need to follow a strict layout. Each design can be created to match the list of breakpoints.
Fluid
Use `.container-fluid` for a full width container, spanning the entire width of the viewport. This is useful for large tools such as the Service Dashboard.
Responsive
Responsive containers allow you to specify a class that is 100% wide until the specified breakpoint is reached, after which we apply `max-width`s for each of the higher breakpoints. For example, `.container-sm` is 100% wide to start until the `sm` breakpoint is reached, where it will scale up with `md`, `lg`, and `xl`.
Smaller, Interior Containers
Some scenarios call for smaller containers for interior content. Within a page, we might need to display messaging or other relevant information for our users that does not follow our typical left-aligned structure. To improve readability and to privilege the ability to scan, we have set a defined width within the content of the page.
You can use any of our breakpoints as the container width, as long as the size of the interior container makes contextual sense for the content being displayed. Below are examples of potential widths and content.
Learning - Small 576px
Your requested content is loading in a new browser window.
If the new window does not appear, check to see if you have a pop-up blocker enabled.
Click here to launch if the new window did not show.
Learning - Medium 768px
Your requested content is loading in a new browser window.
If the new window does not appear, check to see if you have a pop-up blocker enabled.
Click here to launch if the new window did not show.
Learning - Large 992px
Your requested content is loading in a new browser window.
If the new window does not appear, check to see if you have a pop-up blocker enabled.
Click here to launch if the new window did not show.
Learning - Extra Large 1200px
Your requested content is loading in a new browser window.
If the new window does not appear, check to see if you have a pop-up blocker enabled.
Click here to launch if the new window did not show.
Responsive breakpoints
Since Cirrus is developed to be mobile first, we use a handful of media queries to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes.
Cirrus primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components.
We occasionally use media queries that go in the other direction (the given screen size *or smaller*):
Note that since browsers do not currently support range context queries, we work around the limitations of min-
and max-
prefixes and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision for these comparisons.
There are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths.
Similarly, media queries may span multiple breakpoint widths:
Z-index
Several Cirrus components utilize `z-index`, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Cirrus that's been designed to properly layer navigation, tooltips and popovers, modals, and more.
These higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There's no reason we couldn't have used `100`+ or `500`+.
We don't encourage customization of these individual values; should you change one, you likely need to change them all.
To handle overlapping borders within components (e.g., buttons and inputs in input groups), we use low single digit `z-index` values of `1`, `2`, and `3` for default, hover, and active states. On hover/focus/active, we bring a particular element to the forefront with a higher `z-index` value to show their border over the sibling elements.