Flexbox Grid

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

Flexbox Grid Layout

The Responsive Flexbox Grid Layout System uses a series of containers, rows, and columns to lay out and align content. It is built with a flexbox and is fully responsive.

Implementation Details

  • The Flexbox 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-sm-size-25 applies to sm, md, lg, xl, and xxl breakpoints.
    You can manage the column sizing and behavior for each breakpoint individually.
  • Containers—they are used to contain and center the content and set the layout max-width for each breakpoint. Use .k-container for a responsive pixel width or .k-container-fluid for width: 100% across all viewports and devices. Adding a Gap utility class to the container will add a gutter between the rows.
  • Rows—the .k-row wraps the columns. Adding a k-col-gap-{n}, k-col-gap-{bp}-{n} Gap class to the row will add a gutter between the columns.
  • Columns—the .k-col, .k-col-{bp}, .k-col-size-{p}, .k-col-{bp}-size-{p} wrap the content and specify how wide a column will be. The width of the columns is based on the percentage of the available space. So if you need a column that occupies 1/2 of the available space, use the .k-col-size-50 (or .k-col-{bp}-size-50). If you need a column that occupies 1/3 of the available space, use the fraction class.k-col-size-33-3 (or .k-col-{bp}-size-33-3). You can choose from a list of Flexbox Grid Classes.
  • Gutters—the .k-gap-{n}, .k-gap-{bp}-{n} add a gutter to the layout.

Breakpoints

Here is how the Responsive Layout System changes across the above-mentioned breakpoints:

xs <576pxsm ≥576pxmd ≥768pxlg ≥992pxxl ≥1200pxxxl ≥1400px
Container max-widthNone (auto)540px720px960px1140px1320px
Class prefix.k-col-size-xs-1.k-col-size-sm-1.k-col-size-md-1.k-col-size-lg-1.k-col-size-xl-1.k-col-size-xxl-1

Similarly to the breakpoints, you can also customize the container widths by using Sass:

@use '@progress/kendo-theme-utils/scss/all.scss' as * with (
$kendo-container-max-widths: (
sm: 500px,
md: 700px,
lg: 920px,
xl: 1100px,
xxl: 1300px,
)
);

Flexbox Grid Classes

Flexbox Grid classes are utility classes designed to make responsive grid layouts easy and consistent. All classes are composed with a base name, and some are followed by a breakpoint identifier (xs, sm, md, lg, xl, or xxl), and lastly, 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.

Flexbox Column Size

These utility classes allow you to control the width and sizing behavior of flexbox columns, making it easy to create flexible or fixed-width layouts. Responsive variants like .k-col-md-size-33-3 let you apply these widths at different breakpoints for adaptive layouts.

Utility ClassCSS Property
.k-colflex: 1 0 0%;
.k-col-size-{1-100}flex: 0 0 auto; width: 1%;
.k-col-size-8-3flex: 0 0 auto; width: 8.3333%;
.k-col-size-9-1flex: 0 0 auto; width: 9.0909%;
.k-col-size-11-1flex: 0 0 auto; width: 11.1111%;
.k-col-size-12-5flex: 0 0 auto; width: 12.5%;
.k-col-size-14-3flex: 0 0 auto; width: 14.2857%;
.k-col-size-16-7flex: 0 0 auto; width: 16.6666%;
.k-col-size-33-3flex: 0 0 auto; width: 33.3333%;
.k-col-size-41-6flex: 0 0 auto; width: 41.6666%;
.k-col-size-58-3flex: 0 0 auto; width: 58.3333%;
.k-col-size-66-6flex: 0 0 auto; width: 66.6666%;
.k-col-size-83-3flex: 0 0 auto; width: 83.3333%;
.k-col-size-91-6flex: 0 0 auto; width: 91.6666%;
.k-col-{sm|md|lg|xl|xxl}flex: 1 0 0%;
.k-col-{sm|md|lg|xl|xxl}-size-{1-100}flex: 0 0 auto; width: 1%;
.k-col-{sm|md|lg|xl|xxl}-size-8-3flex: 0 0 auto; width: 8.3333%;
.k-col-{sm|md|lg|xl|xxl}-size-9-1flex: 0 0 auto; width: 9.0909%;
.k-col-{sm|md|lg|xl|xxl}-size-11-1flex: 0 0 auto; width: 11.1111%;
.k-col-{sm|md|lg|xl|xxl}-size-12-5flex: 0 0 auto; width: 12.5%;
.k-col-{sm|md|lg|xl|xxl}-size-14-3flex: 0 0 auto; width: 14.2857%;
.k-col-{sm|md|lg|xl|xxl}-size-16-7flex: 0 0 auto; width: 16.6666%;
.k-col-{sm|md|lg|xl|xxl}-size-33-3flex: 0 0 auto; width: 33.3333%;
.k-col-{sm|md|lg|xl|xxl}-size-41-6flex: 0 0 auto; width: 41.6666%;
.k-col-{sm|md|lg|xl|xxl}-size-58-3flex: 0 0 auto; width: 58.3333%;
.k-col-{sm|md|lg|xl|xxl}-size-66-6flex: 0 0 auto; width: 66.6666%;
.k-col-{sm|md|lg|xl|xxl}-size-83-3flex: 0 0 auto; width: 83.3333%;
.k-col-{sm|md|lg|xl|xxl}-size-91-6flex: 0 0 auto; width: 91.6666%;
Flexbox Column Gap

These utility classes let you control the gap between columns in a layout. You can use them to quickly adjust column spacing for consistent and flexible designs. Responsive variants like .k-col-gap-md-1 are also available, allowing you to set different gaps at different breakpoints.

Utility ClassCSS Property
.k-col-gap-0--kendo-col-gap: 0px;
.k-col-gap-1px--kendo-col-gap: 1px;
.k-col-gap-0\.5--kendo-col-gap: 0.125rem;
.k-col-gap-1--kendo-col-gap: 0.25rem;
.k-col-gap-1\.5--kendo-col-gap: 0.375rem;
.k-col-gap-2--kendo-col-gap: 0.5rem;
.k-col-gap-2\.5--kendo-col-gap: 0.625rem;
.k-col-gap-3--kendo-col-gap: 0.75rem;
.k-col-gap-3\.5--kendo-col-gap: 0.875rem;
.k-col-gap-4--kendo-col-gap: 1rem;
.k-col-gap-4\.5--kendo-col-gap: 1.125rem;
.k-col-gap-5--kendo-col-gap: 1.25rem;
.k-col-gap-5\.5--kendo-col-gap: 1.375rem;
.k-col-gap-6--kendo-col-gap: 1.5rem;
.k-col-gap-6\.5--kendo-col-gap: 1.625rem;
.k-col-gap-7--kendo-col-gap: 1.75rem;
.k-col-gap-7\.5--kendo-col-gap: 1.875rem;
.k-col-gap-8--kendo-col-gap: 2rem;
.k-col-gap-9--kendo-col-gap: 2.25rem;
.k-col-gap-10--kendo-col-gap: 2.5rem;
.k-col-gap-11--kendo-col-gap: 2.75rem;
.k-col-gap-12--kendo-col-gap: 3rem;
.k-col-gap-13--kendo-col-gap: 3.25rem;
.k-col-gap-14--kendo-col-gap: 3.5rem;
.k-col-gap-15--kendo-col-gap: 3.75rem;
.k-col-gap-16--kendo-col-gap: 4rem;
.k-col-gap-17--kendo-col-gap: 4.25rem;
.k-col-gap-18--kendo-col-gap: 4.5rem;
.k-col-gap-19--kendo-col-gap: 4.75rem;
.k-col-gap-20--kendo-col-gap: 5rem;
.k-col-gap-21--kendo-col-gap: 5.25rem;
.k-col-gap-22--kendo-col-gap: 5.5rem;
.k-col-gap-23--kendo-col-gap: 5.75rem;
.k-col-gap-24--kendo-col-gap: 6rem;
.k-col-gap-25--kendo-col-gap: 7rem;
.k-col-gap-26--kendo-col-gap: 8rem;
.k-col-gap-27--kendo-col-gap: 9rem;
.k-col-gap-28--kendo-col-gap: 10rem;
.k-col-gap-29--kendo-col-gap: 11rem;
.k-col-gap-30--kendo-col-gap: 12rem;
.k-col-gap-xs--kendo-col-gap: var(--kendo-spacing-1, 0.25rem);
.k-col-gap-sm--kendo-col-gap: var(--kendo-spacing-2, 0.5rem);
.k-col-gap-md--kendo-col-gap: var(--kendo-spacing-3, 0.75rem);
.k-col-gap-lg--kendo-col-gap: var(--kendo-spacing-4, 1rem);
.k-col-gap-xl--kendo-col-gap: var(--kendo-spacing-6, 1.5rem);
.k-col-gap-thin--kendo-col-gap: var(--kendo-spacing-0\.5, 0.125rem);
.k-col-gap-hair--kendo-col-gap: var(--kendo-spacing-1px, 1px);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-0--kendo-col-gap: 0px;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-1px--kendo-col-gap: 1px;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-0\.5--kendo-col-gap: 0.125rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-1--kendo-col-gap: 0.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-1\.5--kendo-col-gap: 0.375rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-2--kendo-col-gap: 0.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-2\.5--kendo-col-gap: 0.625rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-3--kendo-col-gap: 0.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-3\.5--kendo-col-gap: 0.875rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-4--kendo-col-gap: 1rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-4\.5--kendo-col-gap: 1.125rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-5--kendo-col-gap: 1.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-5\.5--kendo-col-gap: 1.375rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-6--kendo-col-gap: 1.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-6\.5--kendo-col-gap: 1.625rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-7--kendo-col-gap: 1.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-7\.5--kendo-col-gap: 1.875rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-8--kendo-col-gap: 2rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-9--kendo-col-gap: 2.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-10--kendo-col-gap: 2.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-11--kendo-col-gap: 2.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-12--kendo-col-gap: 3rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-13--kendo-col-gap: 3.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-14--kendo-col-gap: 3.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-15--kendo-col-gap: 3.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-16--kendo-col-gap: 4rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-17--kendo-col-gap: 4.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-18--kendo-col-gap: 4.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-19--kendo-col-gap: 4.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-20--kendo-col-gap: 5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-21--kendo-col-gap: 5.25rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-22--kendo-col-gap: 5.5rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-23--kendo-col-gap: 5.75rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-24--kendo-col-gap: 6rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-25--kendo-col-gap: 7rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-26--kendo-col-gap: 8rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-27--kendo-col-gap: 9rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-28--kendo-col-gap: 10rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-29--kendo-col-gap: 11rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-30--kendo-col-gap: 12rem;
.k-col-gap-{xs|sm|md|lg|xl|xxl}-xs--kendo-col-gap: var(--kendo-spacing-1, 0.25rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-sm--kendo-col-gap: var(--kendo-spacing-2, 0.5rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-md--kendo-col-gap: var(--kendo-spacing-3, 0.75rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-lg--kendo-col-gap: var(--kendo-spacing-4, 1rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-xl--kendo-col-gap: var(--kendo-spacing-6, 1.5rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-thin--kendo-col-gap: var(--kendo-spacing-0\.5, 0.125rem);
.k-col-gap-{xs|sm|md|lg|xl|xxl}-hair--kendo-col-gap: var(--kendo-spacing-1px, 1px);

Usage

Here are a few examples that show how you can use the Flexbox Grid Responsive Layout System.

Equal Width Columns

Setting а size-less class (e.g. k-col) for each Flexbox Grid column will make every column the same width.

Setting One Column Width

Setting а size class (e.g. k-col-size-50) for a Flexbox Grid column will set its width to the specified size and resize every other column to the available space.

Breakpoint-Specific Classes

Use breakpoint-specific classes (e.g. k-col-sm-size-75) to adjust the layout across viewports. The example shows how the layout is stacked horizontally on a mobile device and vertical on everything else.

Row/Column Gutter

Use breakpoint-specific classes (e.g. k-col-gap-sm-6) to adjust the gap across viewports. The example shows how the gap is 1 on a mobile device, and 6 on everything else.

Feedback