Grid
Introduction
This is our primary layout tool. It’s extremely flexible, lightweight, and utilizes CSS Grid. It shares some resemblance to those grids of the past, but it has more options for designers to use.
In the past, we’ve used a 12-column set up that used either floats or flex-grid as their base technology. However, you can now define how many columns are in each row inside the HTML itself, and that makes it easier to wrap one’s head around.
Basics
Our grid system is composed of two elements: a wrapper element<div class="grid">
and as many container elements<div class="grid__col">
as necessary.
If not otherwise specified, the grid will layout 12 columns in every row. This allows you to treat it like those grids from the past, if you so choose, and it should make it easier to update old code if necessary. However, you can change how many columns are in each row on the grid wrapper itself. The pattern is as follows: <div class="grid --[breakpoint]-[# of columns]">
.
<div class="grid --sm-2 --med-3 --lrg-4">
<!-- ... --->
<div class="grid__col">
<!-- content goes here -->
</div>
<!-- ... --->
</div>
The breakpoints follow the same pattern and sizing rules as the old, homegrown flex-grid that was utilized among a scattering of developers on campus; it goes as follows: sm, med, lrg, xlrg, xxlrg
. It uses shorthand sizes specifically to avoid conflicts with the existing foundation grids which you can still use even if you include this library.
--dense
) in order to fill those dead cells in.Spanning
In our grid system, you don’t only have control of how many columns will go inside of each row, but you can also set how many columns and rows a specific <div class="grid__col">
will take up with the following modifiers:
--[breakpoint]-[# of columns]-[cols]
--[breakpoint]-[# of rows]-[rows]
grid__col
take up both extra rows and columns. You are not limited to applying only one modifier or the other.Making use of spans gives you greater flexibility in how you layout content on the page. Used properly, you will be able to cut down on unnecessary empty space on the page.
<div class="grid --sm-1 --med-2 --lrg-3">
<div class="grid__col --med-2-cols --lrg-2-rows">
<!-- content goes here -->
</div>
<div class="grid__col">
<!-- content goes here -->
</div>
<div class="grid__col">
<!-- content goes here -->
</div>
</div>
HTML
Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis et sint itaque labore veritatis. Consectetur ex omnis nobis, soluta asperiores totam quidem odit similique id eaque distinctio suscipit iure veniam.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis et sint itaque labore veritatis. Consectetur ex omnis nobis, soluta asperiores totam quidem odit similique id eaque distinctio suscipit iure veniam.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis et sint itaque labore veritatis. Consectetur ex omnis nobis, soluta asperiores totam quidem odit similique id eaque distinctio suscipit iure veniam.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis et sint itaque labore veritatis. Consectetur ex omnis nobis, soluta asperiores totam quidem odit similique id eaque distinctio suscipit iure veniam.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis et sint itaque labore veritatis. Consectetur ex omnis nobis, soluta asperiores totam quidem odit similique id eaque distinctio suscipit iure veniam.
CSS
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Consectetur suscipit sed sit quod? Nam, ex quis! Culpa molestiae facilis necessitatibus illum consequatur tempora voluptates distinctio cum, dicta voluptas aperiam sint?
JS
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Consectetur suscipit sed sit quod? Nam, ex quis! Culpa molestiae facilis necessitatibus illum consequatur tempora voluptates distinctio cum, dicta voluptas aperiam sint?
Manual Layout
--dense
) in order to fill those dead cells in.These modifiers let designers specify which cells the .grid__col
will take up manually. For example, --lrg-col-start-3 --lrg-2-cols
sets a grid__col to start at the third cell in the row and end at the fourth cell.
Modifier | Element | Effect |
---|---|---|
--[size]-col-start-[x-cell #] | .grid__col | Sets a grid column to start at a set horizontal cell number |
--[size]-col-end-[x-cell #] | .grid__col | Sets a grid column to end at a set horizontal cell number |
--[size]-row-start-[y-cell #] | .grid__col | Sets a grid column to start at a set vertical cell number |
--[size]-row-end-[y-cell #] | .grid__col | Sets a grid column to start at a set vertical cell number |
Other Modifiers
Grid Sizing
These options affect how much space the entire grid can take up. Unmodified, the grid maxes out at 80rem
.
Modifier | Element | Effect |
---|---|---|
--smaller | .grid | Sets the grid to take up no more than 60rem |
--larger | .grid | Sets the grid to take up no more than 100rem |
--full | .grid | Sets the grid to take up all of the space |
Spacing
These options allow you to choose whether or not there will be a space, or gap, around the grid columns. The spacing can be turned on or off at the standard breakpoints; it is on by default.
Modifier | Element | Effect |
---|---|---|
--[size]-collapse | .grid | Removes the grid spacing from the given size and up |
--[size]-uncollapse | .grid | Adds the grid spacing back in from the given size and up |
Grid Flow
This modifier allows the grid to move around the columns to try to find a best fit. This can be especially useful when using span or the manual layout modifiers, because it fills in “dead columns” that those methods can create.
Modifier | Element | Effect |
---|---|---|
--dense | .grid | Automatically flows the columns around the grid for a best fit |