Float vs. Flex Grids
Float-Based Grids
Use it for: Websites. Really Old Browsers.
http://kellishouts.github.io/css-properties/
Old Grid Problems
Inline Block Issues:
- Vertical Alignment
- Spaces between Items
Floating Issues:
- Parents lose their height
Issues with Both Methods:
- Vertical Alignment
- Columns with fixed and variable widths
Flexbox
Use it for: Modern Browsers, Modern Apps.
Beginner Flexbox Properties
Know at least the items highlighted Blue!
Everything else, you can refer to, as needed.
The Parent Box
display:flex;
flex-flow: row wrap;
The first value for flex-flow is either "row" or "column"
The second value for flex-flow is either "wrap" or "nowrap".
nowrap means that all child elements must fit in one line.
wrap means that child elements can flow to subsequent lines if space runs out.
The parent box must have at least 2 properties, display:flex, and flex-flow
The Parent Box
align-items: center;
use this for aligning items on the up/down axis
center, flex-start, stretch, flex-end
Additional property for the parent box:
The Parent Box
justify-content: space-between;
justify-content: center, flex-start, flex-end, space-between, space-around
Additional property for the parent box:
The Children
flex: 1 1 500px;
The first value for flex is a number. It specifies if the child element should "grow" if there is extra space in the row. It is typically either 0 (do not grow) or 1.
The second value for flex is a number. It specifies if the child element should "shrink" if there is extra space in the row. It is typically either 0 (do not shrink) or 1.
The third value for flex is the 'flex-basis' initial size. It specifies the initial width of the element. It is either auto (adjust to the width of its contents), or a px, em, % or other measurement.
The children must have at least 1 property, flex.
(here is an example):
flex: x x x;
If there are multiple flex children, the first "grow" value of all the children is compared. If all grow values are equal, all elements will distribute extra space to each element evenly:
flex: 1 0 80px;
flex: 1 0 160px;
flex: 1 0 70px;
flex: x x x;
If values are not equal, space will be distributed in proportion, distributing the most space to the highest number.
flex: 1 0 80px;
flex: 2 0 160px;
flex: 1 0 70px;
flex: x x x;
If values are equal for the shrink value, space will be subtracted in proportion between elements when the parent box is narrow. If values are not equal, the most space will be subtracted from the element with the highest number.
flex: 1 1 80px;
flex: 2 0 160px;
flex: 1 1 70px;
this box is setting 0 for shrink, meaning "do not shrink"
flex: x x x;
The last value is the initial size of a box.
By default, a box is the size of its contents, or a value of auto.
You can set a px width, % width, or any value you would typically assign to width or max-width.
Tip: Avoid using auto in most cases. Instead, it is usually easier to set a % or px initial size, and a grow value for the element.
Order
You can change the order of child elements by assigning each child element an order. Items will be ordered from lowest to highest.
Additional Property for Child Elements:
order: 1;
Fix the Grids!
https://github.com/devleague/Fun-with-FlexBox
Install node, import the reset, clearfix,
Import the reset, clearfix, and general styles partials (in this order) into the primary styles.scss file.
EXERCISE SET UP
Small Grid with Flexbox
You will need to inspect the elements in a browser and study the general styles.
You will need to @include an inline media queries
EXERCISE 1
Two-Column Grid
Style this area so that the result is visually similar to the
Float-Based grid, except uses flexbox properties.
(The flexbox grid has the added benefit that it will fill the full height from the top to bottom of each column.)
EXERCISE 2
Centering
Centering Formula
Parent Element:
display:flex;
flex-flow: row nowrap;
justify-content: center;
align-items: center;
Child Elements:
flex: x x x;
Centering Formula 2
Parent Element:
display:flex;
flex-flow: row nowrap;
Child Elements:
flex: x x x;
margin: auto;
Vertical Centering
Use the first formula to vertically center the green div.
EXERCISE 3A
Vertical Centering
Use the second formula to vertically center the green div.
EXERCISE 3B
Order
There are instructions to style the A, B, C, and D divs in a different order and either on several rows, or a single row at each size (small, medium, and large).
EXERCISE 4
Fixed + Variable Width
Make some columns fixed-width and some variable width at different media queries.
EXERCISE 5
Flexbox
By Ray Farias
Flexbox
Flexbox
- 2,290