Every project will require the following variable map to be defined:
$g-config: (
maxWidth: 1020px,
tabletWidth: 720px,
columnPadding: 15px,
gutter: 20px
);
There are two ways you can implement a grid in your layout:
Neither is more correct that the other. It all depends on your use case. The CSS route is perhaps cleaner, but may be more work if you have to name addtional components to style. Consider the following layout:
Facer repudiandae sed ad, veniam salutandi vix ei. Labores vocibus denique ex has. An mei viderer eripuit intellegat, pri ea utroque dolorem facilis, te liber option meliore mel. Facilis lobortis tractatos cum te, est no simul vidisse eripuit, ne vel vero possim. Eligendi nominati eos ad, te prima verear corrumpit has.
Modo possit per et, nam movet accumsan deseruisse et. Tation albucius te usu, cum idque oratio eu, paulo affert antiopam id per. Tamquam maiorum deterruisset at vel, te qui atqui minimum. Sale justo evertitur vix et, mea laudem volumus placerat id. Dico munere scriptorem eos ad.
We can implement this in two different ways:
<div class="Layout">
<div class="Layout-inner">
<div class="Sidebar">
<!-- content goes here -->
</div>
<div class="Content">
<!-- content goes here -->
</div>
</div>
</div>
.Layout {
@include g();
.Layout-inner {
@include g-row();
}
.Sidebar {
@include g-col(4);
@include g-when-mobile {
@include g-col(12);
}
}
.Content {
@include g-col(8);
@include g-when-mobile {
@include g-col(12);
}
}
}
<div class="Layout G-container">
<div class="G-row">
<div class="G-col-4 G-col-mobile--12">
<!-- content goes here -->
</div>
<div class="G-col-8 G-col-mobile--12">
<!-- content goes here -->
</div>
</div>
</div>
.Layout {
// Other styles go here
}
As you can see the first method is cleaner and lends itself well to core layout elements like sidebars and content blocks, but might be pain when prototyping.
<div class="G-container">
<div class="G-row">
<div class="G-col--6">
<!-- content goes here -->
</div>
</div>
</div>
.Container {
@include g();
// An "row" container div is required around the columns
// to offset the gutter around the first and last column
.Container-row {
@include g-row();
}
.SomeComponent {
@include g-col(4);
@include g-when-tablet {
@include g-col(6);
}
@include g-when-mobile {
@include g-col(12);
}
}
}
There's nothing stopping you from nesting columns inside of other columns as long as you include you wrap the child columns inside a G-row
element.
<div class="G-container">
<div class="G-row">
<div class="G-col--6">
<div class="G-row">
<div class="G-col--6">
<!-- content goes here -->
</div>
<div class="G-col--6">
<!-- content goes here -->
</div>
</div>
</div>
</div>
</div>
.Outer {
@include g();
.Outer-row {
@include g-row();
}
.Inner {
@include g-col(6);
.Inner-row {
@include g-row();
}
.Inner-component {
@include g-col(6);
}
}
}
.Container {
@include g($fluid: true);
}
<div class="G-container G-container--fluid">
<!-- content goes here -->
</div>
.Container {
@include g($gutter: false);
}
<div class="G-container g-container--gutterless">
<!-- content goes here -->
</div>
Built by Ross Noble in Vancouver, Canada.