jss-grid v0.1.11
jss-grid
Makes CSS Grid code readable by giving it a visual syntax.
100% native Javascript, no dependencies.
Install
npm install --save jss-grid
yarn add jss-grid
Usage
Import the
grid()
function.Spread
...
the return value ofgrid()
in the desired JSS class.Sketch your grid in a
`template literal`
string.- Columns use
| |
(pipe) delimiters - Rows use
--
(dash) delimiters. - Gaps use
{ }
(curly braces). - The entire sketch must be wrapped in
``
, normal strings aren't multiline.
- Columns use
import grid from 'jss-grid'
const styles = {
className: {
background: '#eee',
...grid(
`
{1em, 2em} | 1fr | 8fr | 1fr |
--
15fr
--
1fr
--
`
)
}
}
NOTE: You can add any # of columns/rows (of the same size) by adding n
followed by a factor inside a column or row definition.
Reference
...grid()
grid()
returns an object, therefore you must spread the result of the function call in your JSS.
grid()
( sketch ) => gridProperties
( template literal string ) => object
Takes sketch `template literal`
and returns object of CSS/JSS grid properties.
Do not call grid()
with (multiple) normal strings.
sketch
`
{row gap, column gap} | column | column | column | column |
--
row
--
row
--
`
Whitespace and line breaks don't matter.
But each group of definitions (gaps, columns and rows) must begin and end with their respective delimiters. In other words, don't forget to place |
, --
, {
and }
and their correct positions.
Example.
This template string literal
`
{1em, 2em} | 1fr | 8fr | 1fr |
--
15fr
--
1fr
--
`
creates these JSS properties
'grid-template-columns': '1fr 8fr 1fr',
'grid-template-rows': '15fr 1fr',
'grid-row-gap': '1em',
'grid-column-gap': '2em',
Multiple columns or rows of the same size
You can add multiple columns/rows of the same size by adding n
followed by a integer factor inside a column or row definition.
1em n 8
will add 8 columns/rows of 1em
.
The proper order of columns/rows before and after multiplication is maintained.
The following example
`
{5%} | 1fr | 2fr n 11 |
--
1fr n 10
--
2fr
--
`
produces
'grid-template-columns': '1fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr',
'grid-template-rows': '1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 2fr',
'grid-gap': '5%',
Gaps
{ grid gap }
{ row gap, column gap }
{ row gap, }
{ , column gap }
One value defines gap for BOTH rows and column.
Two comma-separated values define DIFFERENT gaps.
One value WITH comma defines row gap OR column gap.
Columns
| column |
| column n factor |
Can be any valid CSS/JSS value.
Factor has to be an integer.
Rows
--
row
--
--
row n factor
--
Can be any valid CSS/JSS value.
Factor has to be an integer.