CSS Grid

The Telerik and Kendo UI Responsive Layout utilities enable you to build responsive layouts of all shapes and sizes.

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 to sm, md, lg, xl, and xxl 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.
    The k-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 <576pxsm ≥576pxmd ≥768pxlg ≥992pxxl ≥1200pxxxl ≥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 ClassCSS Property
.k-col-start-{xs|sm|md|lg|xl|xxl}-1grid-column-start: 1;
.k-col-start-{xs|sm|md|lg|xl|xxl}-2grid-column-start: 2;
.k-col-start-{xs|sm|md|lg|xl|xxl}-3grid-column-start: 3;
.k-col-start-{xs|sm|md|lg|xl|xxl}-4grid-column-start: 4;
.k-col-start-{xs|sm|md|lg|xl|xxl}-5grid-column-start: 5;
.k-col-start-{xs|sm|md|lg|xl|xxl}-6grid-column-start: 6;
.k-col-start-{xs|sm|md|lg|xl|xxl}-7grid-column-start: 7;
.k-col-start-{xs|sm|md|lg|xl|xxl}-8grid-column-start: 8;
.k-col-start-{xs|sm|md|lg|xl|xxl}-9grid-column-start: 9;
.k-col-start-{xs|sm|md|lg|xl|xxl}-10grid-column-start: 10;
.k-col-start-{xs|sm|md|lg|xl|xxl}-11grid-column-start: 11;
.k-col-start-{xs|sm|md|lg|xl|xxl}-12grid-column-start: 12;
.k-col-start-{xs|sm|md|lg|xl|xxl}-13grid-column-start: 13;
.k-col-start-{xs|sm|md|lg|xl|xxl}-autogrid-column-start: auto;
.k-col-span-{xs|sm|md|lg|xl|xxl}-1grid-column: span 1 / span 1;
.k-col-span-{xs|sm|md|lg|xl|xxl}-2grid-column-span: span 2 / span 2;
.k-col-span-{xs|sm|md|lg|xl|xxl}-3grid-column-span: span 3 / span 3;
.k-col-span-{xs|sm|md|lg|xl|xxl}-4grid-column-start: span 4 / span 4;
.k-col-span-{xs|sm|md|lg|xl|xxl}-5grid-column-start: span 5 / span 5;
.k-col-span-{xs|sm|md|lg|xl|xxl}-6grid-column-start: span 6 / span 6;
.k-col-span-{xs|sm|md|lg|xl|xxl}-7grid-column-start: span 7 / span 7;
.k-col-span-{xs|sm|md|lg|xl|xxl}-8grid-column-start: span 8 / span 8;
.k-col-span-{xs|sm|md|lg|xl|xxl}-9grid-column-start: span 9 / span 9;
.k-col-span-{xs|sm|md|lg|xl|xxl}-10grid-column-start: span 10 / span 10;
.k-col-span-{xs|sm|md|lg|xl|xxl}-11grid-column-start: span 11 / span 11;
.k-col-span-{xs|sm|md|lg|xl|xxl}-12grid-column-start: span 12 / span 12;
.k-col-span-{xs|sm|md|lg|xl|xxl}-fullgrid-column: 1 / -1;
.k-col-span-{xs|sm|md|lg|xl|xxl}-autogrid-column: auto;
.k-col-end-{xs|sm|md|lg|xl|xxl}-1grid-column-end: 1;
.k-col-end-{xs|sm|md|lg|xl|xxl}-2grid-column-end: 2;
.k-col-end-{xs|sm|md|lg|xl|xxl}-3grid-column-end: 3;
.k-col-end-{xs|sm|md|lg|xl|xxl}-4grid-column-end: 4;
.k-col-end-{xs|sm|md|lg|xl|xxl}-5grid-column-end: 5;
.k-col-end-{xs|sm|md|lg|xl|xxl}-6grid-column-end: 6;
.k-col-end-{xs|sm|md|lg|xl|xxl}-7grid-column-end: 7;
.k-col-end-{xs|sm|md|lg|xl|xxl}-8grid-column-end: 8;
.k-col-end-{xs|sm|md|lg|xl|xxl}-9grid-column-end: 9;
.k-col-end-{xs|sm|md|lg|xl|xxl}-10grid-column-end: 10;
.k-col-end-{xs|sm|md|lg|xl|xxl}-11grid-column-end: 11;
.k-col-end-{xs|sm|md|lg|xl|xxl}-12grid-column-end: 12;
.k-col-end-{xs|sm|md|lg|xl|xxl}-13grid-column-end: 13;
.k-col-end-{xs|sm|md|lg|xl|xxl}-autogrid-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 ClassCSS Property
.k-row-start-{xs|sm|md|lg|xl|xxl}-1grid-row-start: 1;
.k-row-start-{xs|sm|md|lg|xl|xxl}-2grid-row-start: 2;
.k-row-start-{xs|sm|md|lg|xl|xxl}-3grid-row-start: 3;
.k-row-start-{xs|sm|md|lg|xl|xxl}-4grid-row-start: 4;
.k-row-start-{xs|sm|md|lg|xl|xxl}-5grid-row-start: 5;
.k-row-start-{xs|sm|md|lg|xl|xxl}-6grid-row-start: 6;
.k-row-start-{xs|sm|md|lg|xl|xxl}-7grid-row-start: 7;
.k-row-start-{xs|sm|md|lg|xl|xxl}-8grid-row-start: 8;
.k-row-start-{xs|sm|md|lg|xl|xxl}-9grid-row-start: 9;
.k-row-start-{xs|sm|md|lg|xl|xxl}-10grid-row-start: 10;
.k-row-start-{xs|sm|md|lg|xl|xxl}-11grid-row-start: 11;
.k-row-start-{xs|sm|md|lg|xl|xxl}-12grid-row-start: 12;
.k-row-start-{xs|sm|md|lg|xl|xxl}-13grid-row-start: 13;
.k-row-start-autogrid-row-start: auto;
.k-row-end-{xs|sm|md|lg|xl|xxl}-1grid-row-end: 1;
.k-row-end-{xs|sm|md|lg|xl|xxl}-14grid-row-end: 4;
.k-row-end-{xs|sm|md|lg|xl|xxl}-15grid-row-end: 5;
.k-row-end-{xs|sm|md|lg|xl|xxl}-16grid-row-end: 6;
.k-row-end-{xs|sm|md|lg|xl|xxl}-17grid-row-end: 7;
.k-row-end-{xs|sm|md|lg|xl|xxl}-18grid-row-end: 8;
.k-row-end-{xs|sm|md|lg|xl|xxl}-19grid-row-end: 9;
.k-row-end-{xs|sm|md|lg|xl|xxl}-10grid-row-end: 10;
.k-row-end-{xs|sm|md|lg|xl|xxl}-11grid-row-end: 11;
.k-row-end-{xs|sm|md|lg|xl|xxl}-12grid-row-end: 12;
.k-row-end-{xs|sm|md|lg|xl|xxl}-13grid-row-end: 13;
.k-row-end-{xs|sm|md|lg|xl|xxl}-autogrid-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 ClassCSS Property
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-1grid-template-columns: repeat(1, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-2grid-template-columns: repeat(2, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-3grid-template-columns: repeat(3, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-4grid-template-columns: repeat(4, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-5grid-template-columns: repeat(5, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-6grid-template-columns: repeat(6, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-7grid-template-columns: repeat(7, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-8grid-template-columns: repeat(8, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-9grid-template-columns: repeat(9, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-10grid-template-columns: repeat(10, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-11grid-template-columns: repeat(11, minmax(0, 1fr));
.k-grid-cols-{xs|sm|md|lg|xl|xxl}-12grid-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 ClassCSS Property
.k-gap-{xs|sm|md|lg|xl|xxl}-{0-30}gap: 0;
.k-gap-{xs|sm|md|lg|xl|xxl}-1pxgap: 1px;
.k-gap-{xs|sm|md|lg|xl|xxl}-0\.5gap: 0.25rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-xsgap: 0.25rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-smgap: 0.5rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-mdgap: 0.75rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-lggap: 1rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-xlgap: 1.5rem;
.k-gap-{xs|sm|md|lg|xl|xxl}-thingap: 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}-1pxcolumn-gap: 1px;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-0\.5column-gap: 0.125rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-xscolumn-gap: 0.25rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-smcolumn-gap: 0.5rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-mdcolumn-gap: 0.75rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-lgcolumn-gap: 1rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-xlcolumn-gap: 1.5rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-thincolumn-gap: 0.125rem;
.k-gap-x-{xs|sm|md|lg|xl|xxl}-haircolumn-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}-1pxrow-gap: 1px;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-0\.5row-gap: 0.125rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-xsrow-gap: 0.25rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-smrow-gap: 0.5rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-mdrow-gap: 0.75rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-lgrow-gap: 1rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-xlrow-gap: 1.5rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-thinrow-gap: 0.125rem;
.k-gap-y-{xs|sm|md|lg|xl|xxl}-hairrow-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.

Feedback