CSS Grid Layout
The Responsive CSS Grid Layout System is built using CSS Grid and is fully responsive. See the example and the detailed explanation of the CSS Grid Responsive Layout below.
Implementation Details
- The CSS Grid is compatible with six responsive breakpoints, which are based on
min-width
media queries.
This means that a breakpoint affects that specific breakpoint and all those above it. For example, the class.k-col-span-sm-2
applies tosm
,md
,lg
,xl
, andxxl
breakpoints.
You can manage the column sizing and behavior for each breakpoint individually. - CSS Grid Wrapper—the
.k-d-grid
wraps the content and sets the layout to CSS Grid.
Adding a Gap utility class to the CSS Grid will add a gutter. - Number of Columns—the
.k-grid-cols-{n}
,k-grid-cols-{bp}-{n}
specifies how many grid columns the layout will have (maximum 12 columns). - Column—the
k-col-span-{n}
,k-col-span-{bp}-{n}
column classes set the number of columns an element will span.
Thek-col-start-{n}
,k-col-start-{bp}-{n}
,k-col-end-{n}
,k-col-end-{bp}-{n}
column classes set the element's start/end position. - Gutters—the
.k-gap-{n}
,.k-gap-{bp}-{n}
add gap to the CSS Grid layout.
Breakpoints
Here is how the Responsive Layout System changes across the above-mentioned breakpoints:
xs <576px | sm ≥576px | md ≥768px | lg ≥992px | xl ≥1200px | xxl ≥1400px | |
---|---|---|---|---|---|---|
Class prefix | .k-col-span-xs-1 | .k-col-span-sm-1 | .k-col-span-md-1 | .k-col-span-lg-1 | .k-col-span-xl-1 | .k-col-span-xxl-1 |
CSS Grid Breakpoint Classes
The CSS Grid Breakpoint classes are designed to make responsive grid layouts easy and consistent. Each class is composed of a base name, followed by a breakpoint identifier (xs
, sm
, md
, lg
, xl
or xxl
), and then a value or modifier. This naming convention allows you to apply different grid settings at various screen sizes, making your layouts fully responsive and adaptable.
Grid Column
These responsive Columns utility classes provide fine-grained control over CSS Grid column positioning and spanning at different responsive breakpoints. Use them with specific identifier (e.g k-col-start-sm-1
) to set where a grid column starts, ends, or how many columns it spans, making it easy to build flexible and responsive grid layouts.
Utility Class | CSS Property |
---|---|
.k-col-start-{xs|sm|md|lg|xl|xxl}-1 | grid-column-start: 1; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-2 | grid-column-start: 2; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-3 | grid-column-start: 3; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-4 | grid-column-start: 4; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-5 | grid-column-start: 5; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-6 | grid-column-start: 6; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-7 | grid-column-start: 7; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-8 | grid-column-start: 8; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-9 | grid-column-start: 9; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-10 | grid-column-start: 10; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-11 | grid-column-start: 11; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-12 | grid-column-start: 12; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-13 | grid-column-start: 13; |
.k-col-start-{xs|sm|md|lg|xl|xxl}-auto | grid-column-start: auto; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-1 | grid-column: span 1 / span 1; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-2 | grid-column-span: span 2 / span 2; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-3 | grid-column-span: span 3 / span 3; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-4 | grid-column-start: span 4 / span 4; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-5 | grid-column-start: span 5 / span 5; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-6 | grid-column-start: span 6 / span 6; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-7 | grid-column-start: span 7 / span 7; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-8 | grid-column-start: span 8 / span 8; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-9 | grid-column-start: span 9 / span 9; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-10 | grid-column-start: span 10 / span 10; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-11 | grid-column-start: span 11 / span 11; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-12 | grid-column-start: span 12 / span 12; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-full | grid-column: 1 / -1; |
.k-col-span-{xs|sm|md|lg|xl|xxl}-auto | grid-column: auto; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-1 | grid-column-end: 1; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-2 | grid-column-end: 2; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-3 | grid-column-end: 3; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-4 | grid-column-end: 4; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-5 | grid-column-end: 5; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-6 | grid-column-end: 6; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-7 | grid-column-end: 7; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-8 | grid-column-end: 8; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-9 | grid-column-end: 9; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-10 | grid-column-end: 10; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-11 | grid-column-end: 11; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-12 | grid-column-end: 12; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-13 | grid-column-end: 13; |
.k-col-end-{xs|sm|md|lg|xl|xxl}-auto | grid-column-end: auto; |
To use the non-responsive variants see the Grid Column article.
Grid Row
These responsive Rows utility classes provide fine-grained control over CSS Grid row positioning and spanning at different responsive breakpoints. Use them with specific identifier (e.g k-row-start-sm-1
) to set where a grid row starts, ends, or how many rows it spans, making it easy to build flexible and responsive grid layouts.
Utility Class | CSS Property |
---|---|
.k-row-start-{xs|sm|md|lg|xl|xxl}-1 | grid-row-start: 1; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-2 | grid-row-start: 2; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-3 | grid-row-start: 3; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-4 | grid-row-start: 4; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-5 | grid-row-start: 5; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-6 | grid-row-start: 6; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-7 | grid-row-start: 7; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-8 | grid-row-start: 8; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-9 | grid-row-start: 9; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-10 | grid-row-start: 10; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-11 | grid-row-start: 11; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-12 | grid-row-start: 12; |
.k-row-start-{xs|sm|md|lg|xl|xxl}-13 | grid-row-start: 13; |
.k-row-start-auto | grid-row-start: auto; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-1 | grid-row-end: 1; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-14 | grid-row-end: 4; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-15 | grid-row-end: 5; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-16 | grid-row-end: 6; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-17 | grid-row-end: 7; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-18 | grid-row-end: 8; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-19 | grid-row-end: 9; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-10 | grid-row-end: 10; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-11 | grid-row-end: 11; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-12 | grid-row-end: 12; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-13 | grid-row-end: 13; |
.k-row-end-{xs|sm|md|lg|xl|xxl}-auto | grid-row-end: auto; |
To use the non-responsive variants see the Grid Row article.
Grid Template Columns
These responsive Grid Template Columns utility classes allow you to define the number of columns in a CSS Grid layout at different responsive breakpoints. Use them with specific identifier (e.g k-grid-cols-sm-1
) to quickly set up flexible and adaptive grid structures that adjust the column count based on screen size.
Utility Class | CSS Property |
---|---|
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-1 | grid-template-columns: repeat(1, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-2 | grid-template-columns: repeat(2, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-3 | grid-template-columns: repeat(3, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-4 | grid-template-columns: repeat(4, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-5 | grid-template-columns: repeat(5, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-6 | grid-template-columns: repeat(6, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-7 | grid-template-columns: repeat(7, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-8 | grid-template-columns: repeat(8, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-9 | grid-template-columns: repeat(9, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-10 | grid-template-columns: repeat(10, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-11 | grid-template-columns: repeat(11, minmax(0, 1fr)); |
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-12 | grid-template-columns: repeat(12, minmax(0, 1fr)); |
To use the non-responsive variants see the Grid Template Columns article.
Gap
These responsive Gap utility classes let you control the gap between grid items, both globally and along the horizontal (x
) or vertical (y
) axes, at different responsive breakpoints. Use them with specific identifier (e.g k-gap-sm-1
) to quickly adjust the space between elements for consistent and flexible layouts.
Utility Class | CSS Property |
---|---|
.k-gap-{xs|sm|md|lg|xl|xxl}-{0-30} | gap: 0; |
.k-gap-{xs|sm|md|lg|xl|xxl}-1px | gap: 1px; |
.k-gap-{xs|sm|md|lg|xl|xxl}-0\.5 | gap: 0.25rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-xs | gap: 0.25rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-sm | gap: 0.5rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-md | gap: 0.75rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-lg | gap: 1rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-xl | gap: 1.5rem; |
.k-gap-{xs|sm|md|lg|xl|xxl}-thin | gap: 0.125rem; |
.k-gap-hair-{xs|sm|md|lg|xl|xxl} | gap: 1px; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-{0-30} | column-gap: 0; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-1px | column-gap: 1px; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-0\.5 | column-gap: 0.125rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-xs | column-gap: 0.25rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-sm | column-gap: 0.5rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-md | column-gap: 0.75rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-lg | column-gap: 1rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-xl | column-gap: 1.5rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-thin | column-gap: 0.125rem; |
.k-gap-x-{xs|sm|md|lg|xl|xxl}-hair | column-gap: 1px; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-{0-30} | row-gap: 0; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-1px | row-gap: 1px; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-0\.5 | row-gap: 0.125rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-xs | row-gap: 0.25rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-sm | row-gap: 0.5rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-md | row-gap: 0.75rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-lg | row-gap: 1rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-xl | row-gap: 1.5rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-thin | row-gap: 0.125rem; |
.k-gap-y-{xs|sm|md|lg|xl|xxl}-hair | row-gap: 1px; |
To use the non-responsive variants see the Gap article.
Usage
Here are a few examples that show how you can use the CSS Grid Responsive Layout System.
Equal Columns
Setting no classes to a CSS Grid item will default its column span to one.
Setting Column Span
Setting a column span class (e.g. k-col-span-4
) to a CSS Grid item changes its column span.
Wrapping
CSS Grid items wrap when there is no horizontal room. In this example, the grid has 6
columns, and each item has a column span of 3
.
Breakpoint-Specific Classes
Use breakpoint-specific classes (e.g. k-grid-cols-xs-3
) to adjust the layout across viewports. The examples below show how the layout is stacked horizontally on a mobile device by adjusting the total column size of the CSS Grid (3
on mobile, 6
on everything else).
Use breakpoint-specific classes (e.g. k-col-span-xs-6
) to adjust the layout across viewports. The examples below show how the layout is stacked horizontally on a mobile device by by adjusting the column span of each CSS Grid item (6
on mobile, 3
on everything else).
Gutter
Use the breakpoint-specific classes (e.g. k-gap-xs-1
) to adjust the gap across viewports.
In this example, the gap is 1
on mobile devices, and 6
on everything else.
Nesting
Every CSS Grid item can be a CSS Grid, which allows for easy nesting.
Use k-grid-cols-{n}
to specify the total number of columns in each CSS Grid.