css flexbox (flexible box layout)

17
Flexbox (Flexible Box Layout)

Upload: woodridge-software

Post on 22-Jan-2018

91 views

Category:

Software


3 download

TRANSCRIPT

Page 1: CSS Flexbox (flexible box layout)

Flexbox(Flexible Box Layout)

Page 2: CSS Flexbox (flexible box layout)

The CSS3 Flexible Box, or flexbox, is a

layout mode providing for the arrangement

of elements on a page such that the

elements behave predictably when the page

layout must accommodate different screen

sizes and different display devices.

Mozilla Developer Network

Page 3: CSS Flexbox (flexible box layout)

What is Flexbox?

Designed to provide a better way to lay out, align, and

distribute space among items in a container - even when

dynamic.

Flexbox is a CSS layout mode designed to ensure that

elements behave predictably in different screen sizes and

devices. … it creates Intelligent boxes.

Easily Defined in CSS and markup (incl. media queries).

Directionally agnostic. (block = vertically-based & inline

= horizontally-based)

Best used for smaller modules over broader layout

Page 4: CSS Flexbox (flexible box layout)

“Old” and “New” syntax

Oddly, the syntax has changed since initial conception -

which has resulted in common references to “old” and “new”

versions.

Weaving together the two, (and in-betweens) provides decent

browser support - especially for order-controlled grids

▪ Chris Coyier (2013)

Requires additional code and prefixed code when authoring

for best results. … consider a js library (autoprefixer)

Examples

NEW: display: flex;

TWEEN: display; -ms-flexbox;

OLD: display: box;

Page 5: CSS Flexbox (flexible box layout)

Core Concepts

Flexbox consists of:

▪Flex Containers

▪Flex Items

Flex Container

Declared on an element using the display property

display: flex or display: inline-flex

Flex Item

Flex items are positioned inside of a flex container along

a “flex line”. By default 1 flex line per flex container.

contaner

< items

Page 6: CSS Flexbox (flexible box layout)

Core Concepts

Flex Line (axis, rope)Flex items are laid out in a single “line” (default) or on

several “lines” according to the flex-wrap property. No

longer think about top-to-bottom or left-to-right. Abandon

rows/columns thinking.

direction orientation

Page 7: CSS Flexbox (flexible box layout)

Core Concepts

Flex LineIn addition to Alignment, Orientation and Direction, flex

lines can be reordered! This is huge. We can now

structure our HTML for semantics, accessibility, and SEO

.item { order: <integer>; }

order

By default, flex

items are laid

out in source

order

Page 8: CSS Flexbox (flexible box layout)

Core Concepts

Nested Flex LinesEach flexbox layout (box) can contain another set that is

on their own line.

Nested flexboxes

Page 9: CSS Flexbox (flexible box layout)

Core Concepts

flex-wrap By default all flex items will try to fit together into one

line. This can be changed and direction can be modified

using the flex-wrap property.

.container {

flex-wrap: wrap; nowrap | wrap | wrap reverse

}

Page 10: CSS Flexbox (flexible box layout)

Core Concepts

flex-grow Defines the ability for a flex item to grow if needed.

(unitless values serve as proportion) An item set at 2

would be twice as big as an item set at 1.

.item {

flex-grow: <number>; /* default = 0 */

}

flex-shrinkDefines the ability for a flex item to shrink if needed.

.item {

flex-shrink: <number>; /* default = 0 */

}

Page 11: CSS Flexbox (flexible box layout)

Core Concepts

flex-basis Defines the default size of an element - before remaining

space is distributed. Length or keyword values.

.item {

flex-basis: <number>;

}

If set to 0, the extra space around it is not factored in.

If set to auto (keyword), the extra space is distributed by

its flex-grow value

Page 12: CSS Flexbox (flexible box layout)

Core Concepts

flex (shortcut)Combines flex-grow, flex-shrink (opt) and flex-basis (opt).

Default = 0 1 auto

RECOMMENDED over individual properties.

.item {

flex: 1 0 0;

}

Page 13: CSS Flexbox (flexible box layout)

1Let’s look at some Code

To the text-editor!

Page 14: CSS Flexbox (flexible box layout)

Some other examples (that I didn’t have time to build)

▪ https://dl.dropboxusercontent.com/u/444684/flexbox/flexbox1.html

▪ https://dl.dropboxusercontent.com/u/444684/flexbox/flexbox2.html

▪ https://dl.dropboxusercontent.com/u/444684/flexbox/flexbox3.html

Page 15: CSS Flexbox (flexible box layout)

Browser Adoption

Can I Use? - caniuse.com

Page 16: CSS Flexbox (flexible box layout)

Flexbox is the current new and now way of

thinking about CSS layout - but not the end.

Historic and current layout practices

▪ Table based layouts

▪ Float based layouts (CSS1)

▪ Positioning (CSS2)

▪ Flexbox “This is real layout. It’s not a hack” - Jeremy Keith

▫ Flexbox (old)

▫ Flexbox (mid/transitional)

▫ Flexbox (standard/final)

The future is coming ‘soon’ and will likely build upon the

flexbox model and techniques.

▪ Grid Layout (ie10 has adopted an early specification)

▪ Regions and Exclusions (Adobe initiative)

Page 17: CSS Flexbox (flexible box layout)

● https://developer.mozilla.org/en-

US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes

● http://www.sitepoint.com/are-we-ready-to-use-flexbox/

● https://css-tricks.com/using-flexbox/

● http://caniuse.com/#feat=flexbox

● https://css-tricks.com/snippets/css/a-guide-to-flexbox/

● https://www.smashingmagazine.com/2013/05/centering-elements-with-flexbox/

● https://www.smashingmagazine.com/2015/08/flexible-future-for-web-design-with-flexbox/

References