Grid is a lightweight flex based responsive layout utility optimized for mobile phones, tablets and desktops.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
FlexGrid is a CSS utility based on flexbox. For more information about Flex, visit A Complete Guide to Flexbox. A basic grid is defined by giving a container p-grid class and children the p-col class. Children of the grid will have the same width and scale according to the width of the parent.
<div class="p-grid">
<div class="p-col">1</div>
<div class="p-col">2</div>
<div class="p-col">3</div>
</div>
FlexGrid includes a 12 column based layout utility where width of a column is defined with the p-col-{number} style class. Columns with prefined widths can be used with columns with auto width (p-col) as well.
In the first example below, first column covers the 4 units out of 12 and the rest of the columns share the remaining space whereas in the second example, all three columns have explicit units.
<div class="p-grid">
<div class="p-col-4">4</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
<div class="p-col">1</div>
</div>
<div class="p-grid">
<div class="p-col-2">2</div>
<div class="p-col-6">6</div>
<div class="p-col-4">4</div>
</div>
When the number of columns exceed 12, columns wrap to a new line.
<div class="p-grid">
<div class="p-col-6">6</div>
<div class="p-col-6">6</div>
<div class="p-col-6">6</div>
<div class="p-col-6">6</div>
</div>
A column can have a fixed width while siblings having auto width. Apply p-col-fixed class to fix a column width.
<div class="p-grid">
<div class="p-col-fixed" style="width:100px">Fixed</div>
<div class="p-col">Auto</div>
</div>
Responsive layout is achieved by applying breakpoint specific classes to the columns whereas p-col-* define the default behavior for mobile devices with small screens. Four screen sizes are supported with different breakpoints.
Prefix | Devices | Media Query | Example |
---|---|---|---|
p-sm-* | Small devices | min-width: 576px | p-sm-6, p-sm-4 |
p-md-* | Medium sized devices such as tablets | min-width: 768px | p-md-2, p-md-8 |
p-lg-* | Devices with large screen like desktops | min-width: 992px | p-lg-6, p-lg-12 |
p-xl-* | Big screen monitors | min-width: 1200px | p-xl-2, ui-xl-10 |
In example below, large screens display 4 columns, medium screens display 2 columns in 2 rows and finally on small devices, columns are stacked.
<div class="p-grid">
<div class="p-col-12 p-md-6 p-lg-3">A</div>
<div class="p-col-12 p-md-6 p-lg-3">B</div>
<div class="p-col-12 p-md-6 p-lg-3">C</div>
<div class="p-col-12 p-md-6 p-lg-3">D</div>
</div>
Offset classes allow defining a left margin on a column to avoid adding empty columns for spacing.
<div class="p-grid">
<div class="p-col-6 p-offset-3">6</div>
</div>
<div class="p-grid">
<div class="p-col-4">4</div>
<div class="p-col-4 p-offset-4">4</div>
</div>
The list of offset classes varying within a range of 1 to 12.
Prefix | Devices | Media Query | Example |
---|---|---|---|
p-col-offset-* | All devices | All screens | p-col-offset-6, p-col-offset-4 |
p-sm-offset-* | Small devices | min-width: 576px | p-sm-offset-6, p-sm-offset-4 |
p-md-offset-* | Medium sized devices such as tablets | min-width: 768px | p-md-offset-6, p-md-offset-4 |
p-lg-offset-* | Devices with large screen like desktops | min-width: 992px | p-lg-offset-6, p-lg-offset-4 |
p-xl-offset-* | Big screen monitors | min-width: 1200px | p-xl-offset-6, p-xl-offset-4 |
Columns can be nested to create more complex layouts.
<div class="p-grid nested-grid">
<div class="p-col-8">
<div class="p-grid">
<div class="p-col-6">
6
</div>
<div class="p-col-6">
6
</div>
<div class="p-col-12">
12
</div>
</div>
</div>
<div class="p-col-4">
4
</div>
</div>
A .5rem padding is applied to each column along with negative margins on the container element, in case you'd like to remove these gutters, apply p-nogutter class to the container. Gutters can also be removed on an ndividual columns with the same class name.
<div class="p-grid p-nogutter">
<div class="p-col">1</div>
<div class="p-col p-nogutter">2</div>
<div class="p-col">3</div>
</div>
<h5>Basic</h5>
<div class="p-grid">
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">2</div>
</div>
<div class="p-col">
<div class="box">3</div>
</div>
</div>
<h5>Reverse Direction</h5>
<div class="p-grid p-flex-row-reverse">
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">2</div>
</div>
<div class="p-col">
<div class="box">3</div>
</div>
</div>
<h5>Column Direction</h5>
<div class="p-grid p-flex-column">
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">2</div>
</div>
<div class="p-col">
<div class="box">3</div>
</div>
</div>
<h5>Reverse Column Direction</h5>
<div class="p-grid p-flex-column-reverse">
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">2</div>
</div>
<div class="p-col">
<div class="box">3</div>
</div>
</div>
<h5>12 Column Grid</h5>
<div class="p-grid">
<div class="p-col-4">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
<div class="p-col">
<div class="box">1</div>
</div>
</div>
<div class="p-grid">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<div class="p-grid">
<div class="p-col-8">
<div class="box">8</div>
</div>
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-2">
<div class="box">2</div>
</div>
</div>
<h5>MultiLine</h5>
<div class="p-grid">
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-6">
<div class="box">6</div>
</div>
</div>
<h5>Fixed Width Column</h5>
<div class="p-grid">
<div class="p-col-fixed" style="width:100px">
<div class="box">100px</div>
</div>
<div class="p-col">
<div class="box">auto</div>
</div>
</div>
<h5>Responsive</h5>
<div class="p-grid">
<div class="p-col-12 p-md-6 p-lg-3">
<div class="box">p-col-12 p-md-6 p-lg-3</div>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="box">p-col-12 p-md-6 p-lg-3</div>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="box">p-col-12 p-md-6 p-lg-3</div>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="box">p-col-12 p-md-6 p-lg-3</div>
</div>
</div>
<h5>Horizontal Alignment - Start</h5>
<div class="p-grid p-jc-start">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Horizontal Alignment - End</h5>
<div class="p-grid p-jc-end">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Horizontal Alignment - Center</h5>
<div class="p-grid p-jc-center">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Horizontal Alignment - Between</h5>
<div class="p-grid p-jc-between">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Horizontal Alignment - Around</h5>
<div class="p-grid p-jc-around">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Horizontal Alignment - Even</h5>
<div class="p-grid p-jc-evenly">
<div class="p-col-2">
<div class="box">2</div>
</div>
<div class="p-col-1">
<div class="box">1</div>
</div>
<div class="p-col-4">
<div class="box">4</div>
</div>
</div>
<h5>Vertical Alignment - Start</h5>
<div class="p-grid p-ai-start vertical-container">
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
</div>
<h5>Vertical Alignment - End</h5>
<div class="p-grid p-ai-end vertical-container">
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
</div>
<h5>Vertical Alignment - Center</h5>
<div class="p-grid p-ai-center vertical-container">
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
<div class="p-col">
<div class="box">4</div>
</div>
</div>
<h5>Vertical Alignment - Stretch</h5>
<div class="p-grid p-ai-stretch vertical-container">
<div class="p-col">
<div class="box box-stretched">4</div>
</div>
<div class="p-col">
<div class="box box-stretched">4</div>
</div>
<div class="p-col">
<div class="box box-stretched">4</div>
</div>
</div>
<h5>Vertical Alignment - Per Column</h5>
<div class="p-grid vertical-container">
<div class="p-col p-as-start">
<div class="box">4</div>
</div>
<div class="p-col p-as-center">
<div class="box">4</div>
</div>
<div class="p-col p-as-end">
<div class="box">4</div>
</div>
</div>
<h5>Offset</h5>
<div class="p-grid">
<div class="p-col-6 p-offset-3">
<div class="box">6</div>
</div>
</div>
<div class="p-grid">
<div class="p-col-4">
<div class="box">4</div>
</div>
<div class="p-col-4 p-offset-4">
<div class="box">4</div>
</div>
</div>
<h5>Nested</h5>
<div class="p-grid nested-grid">
<div class="p-col-8">
<div class="p-grid">
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-6">
<div class="box">6</div>
</div>
<div class="p-col-12">
<div class="box">12</div>
</div>
</div>
</div>
<div class="p-col-4">
<div class="box box-stretched">4</div>
</div>
</div>
<h5>Panels</h5>
<div class="p-grid">
<div class="p-col">
<p:panel header="Header">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</p:panel>
</div>
<div class="p-col">
<p:panel header="Header">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</p:panel>
</div>
<div class="p-col">
<p:panel header="Header">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</p:panel>
</div>
</div>