Heydon / fukol-grids
- вторник, 4 октября 2016 г. в 03:13:30
91 stars today
None

Fukol™ is a lightweight, breakpoint free, completely responsive, element query driven*, progressive enhancement based CSS grid framework. It exists in this README.md file, in the section titled The CSS (below). It is 264 bytes in size unminified and, when you minify it, it fits in a tweet:
Just edit the lines marked 'edit me!' to your requirements and write an HTML structure like the one illustrated in the section titled The HTML (also below).
(* Not really, but kind of. See 3, below.)
.fukol {
overflow: hidden; /* 7 */
}
.fukol-grid {
display: flex; /* 1 */
flex-flow: row wrap; /* 2 */
margin: -0.5em; /* 6 (edit me!) */
}
.fukol-grid > * {
flex-basis: 10em; /* 3 (edit me!) */
flex-grow: 1; /* 4 */
margin: 0.5em; /* 5 (edit me!) */
}display: flex declaration, degrading to a single column layout. No harm done.wrap which means items will start a new row if there's not enough room on the current one.flex-basis, the row will be divided into two. If not, another new row is created.0.5em margin here means gutters of 1em (the margins double up)..fukol-grid container remains flush horizontally and no additional margin is added to the vertical flow..fukol-grid, a container element is provided for the application of positive margins where desired. The overflow: hidden declaration suppresses horizontal scrollbars caused by negative margins in some browsers and circumstances.<div class="fukol">
<ul class="fukol-grid">
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
<li><!-- grid cell/item/child/whatever --></li>
</ul>
</div>Sometimes you want certain items to be narrower or wider. You can target these using :nth-child. For example, you may want to make the first item take up the full width. In which case:
.fukol-grid > *:nth-child(1) {
flex-basis: 100%;
}Or maybe you want the fifth item to always be approximately twice the size of a regular item (where space permits). If the regular flex-basis is 10em, then…
.fukol-grid > *:nth-child(5) {
flex-basis: 20em;
}Don't worry, flexbox will make sure there aren't any gaps.
Flexbox supports rtl already. Just add dir="rtl" to the .fukol-grid element and the flex direction will automatically be reversed.
README.md file. See the The CSS section above.That's it.