Three grid systems in one package! Each is fully responsive and mobile ready. Each grid is optional via setting up a config.
- Flexbox Grid System
- CSS Grid system
- Flexbox Masonry Grid System
Add to your package.json:
"dependencies": {
"css-grid-system-library": "git://github.com/CodyReeves/css-grid-system-library.git"
},
Add to your SCSS:
@import "PATH-TO-NODE_MODULES/node_modules/css-grid-system-library/scss/main";
Add to your bower.json:
"dependencies": {
"css-grid-system-library": >=1.0.0,
},
Add to your SCSS:
@import "PATH-TO-BOWER_DIR/bower/css-grid-system-library/scss/main";
$user-defined-settings: (
grid: (
grid-columns: 12,
setup: (
breakpoints-list: (xs, sm, md, xl, xxl),
breakpoints: (
xs: 768px, // uses max-width query
sm: 768px,
md: 992px,
lg: 1280px,
xl: 1600px,
xxl: 1900px
),
),
flexbox-columns-active: true,
create-masonry: true,
mas-item-padding: 15px,
mas-column-gap: 15px,
create-css-grid: true,
css-grid-gutter: 15px
)
);
All breakpoints are set from settings map.
All alignment, distribution, and recordering classes are automatically imported.
To create flexbox column classes set flexbox-columns-active
to true in $user-defined-settings
Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the grid system works:
Rows must be placed within a .container
(fixed-width) or .container-fluid
(full-width) for proper alignment and padding.
Use rows to create horizontal groups of columns.
Content should be placed within columns, and only columns may be immediate children of rows.
Predefined grid classes like .row and .col-xs-4
are available for quickly making grid layouts.
Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows
.
The negative margin is why the examples below are outdented. It's so that content within grid columns is lined up with non-grid content.
Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4
.
If more than 12
columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.
Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. Therefore, e.g. applying any .col-md-*
class to an element will not only affect its styling on medium devices but also on large devices if a .col-lg-*
class is not present.
Modifiers enable specifying different column sizes, offsets, alignment and distribution at xs, sm, md & lg viewport widths.
<div class="col-xs-12 col-sm-8 col-md-6 col-lg-4">
<div class="box">Responsive</div>
</div>
</div>
Percent based widths allow fluid resizing of columns and rows.
.col-xs-6 {
flex-basis: 50%;
}
<div class="row">
<div class="col-xs-offset-3 col-xs-9">
<div class="box">offset</div>
</div>
</div>
Add any number of auto sizing columns to a row. Let the grid figure it out.
<div class="row">
<div class="col-xs">
<div class="box">auto</div>
</div>
</div>
Nest grids inside grids inside grids.
<div class="row">
<div class="col-xs">
<div class="box">auto</div>
<div class="row">
<div class="col-xs">
<div class="box">auto</div>
</div>
</div>
</div>
</div>
</div>
Add classes to align elements to the start or end of a row as well as the top, bottom, or center of a column
.start-
<div class="row start-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
.center-
<div class="row center-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
.end-
<div class="row end-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
.top-
<div class="row top-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
.middle-
<div class="row middle-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
.bottom-
<div class="row bottom-xs">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
Here is an example of using the modifiers in conjunction to acheive different alignment at different viewport sizes.
<div class="row center-xs end-sm start-lg">
<div class="col-xs-6">
<div class="box">
start
</div>
</div>
</div>
Add classes to distribute the contents of a row or column.
.around-
<div class="row around-xs">
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
</div>
.between-
<div class="row between-xs">
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
<div class="col-xs-2">
<div class="box">
around
</div>
</div>
</div>
Add classes to reorder columns.
.first-
<div class="row">
<div class="col-xs-2">
<div class="box">
1
</div>
</div>
<div class="col-xs-2">
<div class="box">
2
</div>
</div>
<div class="col-xs-2 first-xs">
<div class="box">
3
</div>
</div>
</div>
.last-
<div class="row">
<div class="col-xs-2 last-xs">
<div class="box">
1
</div>
</div>
<div class="col-xs-2">
<div class="box">
2
</div>
</div>
<div class="col-xs-2">
<div class="box">
3
</div>
</div>
</div>
.reverse
<div class="row reverse">
<div class="col-xs-2">
<div class="box">
1
</div>
</div>
<div class="col-xs-2">
<div class="box">
2
</div>
</div>
<div class="col-xs-2">
<div class="box">
3
</div>
</div>
</div>
To create flexbox column classes set create-masonry
to true in $user-defined-settings
.
To set the item and column gap set mas-item-padding
and mas-column-gap
in $user-defined-settings
.
To use the masonry grid there is 2 components that must be used:
- You must wrap the grid with the class .masonry-row
- Next you must declare what column breakpoints are required, the breakpoints are created very similar to the flexbox grid with the only difference being the prefix mas- in front of the class name and the column number isent in reverese. For Example:
.mas-col-lg-3
creates 3 column grid at the large breakpoint --≥ 1200px
<div class="masonry-row">
<div class="mas-col-xs-1 mas-col-sm-2 mas-col-lg-3">
<div class="item"> ... </div>
...
<div class="item"> ... </div>
</div>
</div>
Please note this still needs fully tested.
Classes are based off the main breakpoint map in the $settings
Each set of classes uses the breakpoint suffix to declare size of grid similar to the flexbox grid. An example CSS grid class: full-sm two-thirds-lg
Basic markup for creating a single column in the row
<div class="container grid">
<div class="row">
<div class="full-xs full-sm"> ... </div>
</div>
</div>
A 2 column, 3 row layout:
<div class="container grid">
<div class="row">
<div class="full-xs full-sm"> ... </div>
</div>
<div class="row">
<div class="full-xs two-thirds-sm"> ... </div>
<div class="full-xs one-third-sm"> ... </div>
</div>
<div class="row">
<div class="full-xs full-sm"> ... </div>
</div>
</div>
Columns classes, based on a 12 column grid:
.full- *
(12/12 Columns).one-half- *
(6/12 Columns).two-thirds- *
(8/12 Columns).one-third- *
(4/12 Columns).one-fourth- *
(3/12 Columns).one-sixth- *
(2/12 Columns).one-twelfth- *
(1/12 Columns)
Note: the classes must be used with the .grid
class.
Example: grid align-center-vert-sm
.align-center-vert- *
(Vertically center).align-center-horiz- *
(Horizontally center).align-end-vert- *
(Vertically align to bottom).align-end-horiz- *
(Horizontally align to right)
<div class="container grid">
<div class="row">
<div class="full-xs full-sm grid align-center-vert-sm content-center-horiz-sm"> Centered </div>
</div>
</div>
Note: the classes must be used with the .row
class
.align-top- *
(Align row to top).align-bottom- *
(Align row to bottom)
<div class="container grid">
<div class="row align-top-xs align-bottom-sm">
<div class="full-xs full-sm"> ... </div>
</div>
<div class="row">
<div class="two-half-xs two-thirds-sm"> ... </div>
<div class="one-half-xs one-third-sm"> ... </div>
</div>
<div class="row align-bottom-xs align-top-sm">
<div class="full-xs full-sm"> ... </div>
</div>
</div>
Align the column to the middle of the layout.
Feature working with: .one-half- .two-thirds- .one-third- .one-sixth-
column classes
.align-middle- *
(Centers column)
<div class="container grid">
<div class="row">
<div class="full-xs one-half-sm align-middle-sm"> Centered </div>
</div>
</div>
Requirements:
- Add
.grid
class to your column.
<div class="container grid">
<div class="row">
<div class="full-xs one-third-sm grid">
<div class="one-half-sm"> ... </div>
<div class="one-half-sm"> ... </div>
</div>
<div class="full-xs two-thirds-sm">
<div class="one-forth-sm"> ... </div>
<div class="one-forth-sm"> ... </div>
<div class="one-forth-sm"> ... </div>
<div class="one-forth-sm"> ... </div>
</div>
</div>
</div>