androiddrew 89c41bce86 | 5 years ago | |
---|---|---|
Net_mag_tut | 6 years ago | |
dashboard_ex | 5 years ago | |
scrimba_tut | 6 years ago | |
vue_grid | 5 years ago | |
README.md | 6 years ago |
README.md
CSS Grid
This repo houses a number of tutorials for using CSS Grid.
Using the grid
Size can be any valid CSS unit px
, vw
, auto
that enables a column or row to stretch across available space
For example grid-template-column: 10px auto
will create a 10px column followed by a second column that fills all available space
fr
is a fractional unit that causes any remaining space to be distributed to columns or rows based on the ratios of these units
grid-template-rows: 1fr 2fr
creates two dynamic rows with the second twice the size of the first,
grid-template-columns: 1fr 1fr 1fr 1fr
Defines four equal-sized columns
The repeat()
function can be used to make the above less verbose repeat(4, 1fr)
More complex layouts
Grids with unequal sized cells can be created by combining the different units mentioned. We can also use the minmax()
function to define a minimum and a maximum size for dynamic columns and rows.
grid-template-rows: 40px 2fr repeat(2, minmax(75px, 1fr))
Creates four rows with the first 40px tall, the other three stretch over remaining space in a 2:1:1 ratio. The last two having a minimum height of 75px which sets the minimum height of the second row at 150px.
Layout
Accessing the grid
INSERT IMAGE OF GRID LINES
We can consider this now to be a 2 x 2 array indexed at 1 and accessible with a negative index if necessary. For example a 4 x 4 Grid will have the first column accessible at either index 1 or -5. They can be used as the boundary lines for elements placed in them.
NOTE We can also assign a name to index by adding a string in square brackets in the property declarations
gird-template-rows: [first-row] 1fr [second-row] 1fr [last]
Positioning elements inside the grid
THIS IS GONNA HAVE TO BE REWRITTEN
Similar to flexbox, the horizontal and vertical position of items placed in the grid can be controlled by setting justify-items
and align-items
respectively to start
, center
, or stretch
.
The same control of grid column and row positions with in a larger container (grid inside a grid) can be applied used the justify-content
and align-content
properties and the start
, center
, or stretch
values. The additional value space-between
or space-around
is used to divide extra space between columns/rows. space-evenly
can used to divide extra space evenly between columns/rows with the same or half the amount of space on the ends.
We can also define align-content
and justify-content
(in that order) using place-content
. Values of align-items
and justify-items
can be defined with place-items
WTF THIS GUY CAN'T WRITE
Positioning items in the Grid using line numbers
To place an item in the grid we can set it's grid-column-start
and grid-column-end
properties between which the item should be stretched. For rows the properties are grid-row-start
and grid-row-end
#item1 {
grid-column-start: 2;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: -1;
}
#item2 {
grid-column: 3;
grid-row: 1;
}