Skeleton vanilla CSS grid
When you have been at it for a while you realize most of the time less is more, and so in that spirit below is a skeleton grid. It was created without any pre-processor in vanilla CSS, and has been field tested on enterprise level projects.
Source code here: https://bitbucket.org/snippets/danielsokolowski/d68x/light-column-gird-system
If this has helped you, be legendary and do social share this and do follow me on twitter @danielsokolows.
/* Light Column Grid v2018-Dev-05 ############################## See: https://bitbucket.org/snippets/danielsokolowski/d68x/light-column-gird-system TODO,Jun-13: possibly rather then negative margins use calc and space-between to avoid issues with horizontal scroll on small devices, see: https://stackoverflow.com/questions/20626685/better-way-to-set-distance-between-flexbox-items Example: ``` <div class="columnWrapper"> <div class="column width-4/12"> ... </div> <div class="column width-8/12"> <!-- assuming `display: inline-block` for img--> <p> <img class="width-4/12" ... >Lorem lipsum</p> </p> </div> </div> ``` */ /* Make padding grow in-ward ========================= Apply a natural box layout model to all elements, but allowing components to change, which is required for our column (`width-*`) classes to ensure padding does not effect their total width. If below `html` conflicts with your exisiting layout comment it out and uncomment `box-sizing: border-box` in the `.cloumn` definition. */ html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; } /* * The 12 column based grid * * Class names leverage ability to escape characters - see: https://mathiasbynens.be/notes/css-escapes, Note that these can be used without the column class */ .columnWrapper { display: flex; flex-wrap: wrap; margin-left: -1em; margin-right: -1em; } .column { padding-left: 1em; padding-right: 1em; /*box-sizing: border-box;*/ } .column.equalHeights { display: flex; } .width-1\/12 { width: calc(100% / 12) } .width-2\/12 { width: calc(200% / 12) } .width-3\/12 { width: calc(300% / 12) } .width-4\/12 { width: calc(400% / 12); } .width-5\/12 { width: calc(500% / 12) } .width-6\/12 { width: calc(600% / 12) } .width-7\/12 { width: calc(700% / 12) } .width-8\/12 { width: calc(800% / 12) } .width-9\/12 { width: calc(900% / 12) } .width-10\/12 { width: calc(1000% / 12) } .width-11\/12 { width: calc(1100% / 12) } .width-12\/12 { width: 100% } /* on mobile devices go full width for all columns sizes */ @media only screen and (max-width: 750px) { .column { width: 100%; padding-left: 10px; padding-right: 10px; } }
Comments
Post a Comment