Flexbox is a new layout module in CSS3, which is officially known as CSS flexible box layout module. It is designed as a one dimensional layout model to improve the layout, alignment, size, position, space, and the directions of the items in the container. Flexbox container has the ability to modify the width, height, order, and the amount of space a particular item in the container can occupy to fill the available space in the best possible way for the different screen sizes. Flexbox has various properties, which are categorized into two parts.
There are basically two types of flexbox display
property i.e. flex
, and inline-flex
. To use flexbox layout module, we just need to set the display property on the parent element in HTML document like below:-
.flex-container { display: flex | inline-flex; }
It is used to defines in which direction the container wants to stack the flex items. There are basically four types of flexbox flex-direction
property available i.e. row
, row-reverse
, column
, column-reverse
.
.flex-container { flex-direction: row | row-reverse | column | column-reverse; }
The flexbox flex-wrap property
is used to define whether the flex items should wrap or not. There are basically three types of flexbox flex-wrap
property available i.e. nowrap
, wrap
, wrap-reverse
.
.flex-container { flex-wrap: nowrap | wrap | wrap-reverse; }
The flexbox flex-flow
property is a shorthand property for setting the flex-direction
and flex-wrap
properties together. The default value is row nowrap
.
.flex-container { flex-flow: column wrap; }
The flexbox justify-content
property is used to align the flex items. There are various types of flexbox justify-content
property available i.e. flex-start
, flex-end
, center
, space-between
, space-around
, space-evenly
.
.flex-container { justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly; }
The flexbox align-items
property is used to align the flex items. There are various types of flexbox align-items
property available i.e. flex-start
, flex-end
, center
, baseline
, stretch
.
.flex-container { align-items: flex-start | flex-end | center | baseline | stretch; }
The flexbox align-content
property is used to align the flex lines. This property has no effect when there is only one line of flex items. There are various types of flexbox align-content
property available i.e. flex-start
, flex-end
, center
, space-between
, space-around
, space-evenly
, stretch
.
.flex-container { align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch; }
The flexbox order
property defines the order of the flex items. The flexbox order
value must be a number, the default value is 0
(Zero).
.flex-item { order: 5; }
The flexbox flex-grow
property specifies how much a flex item will grow relative to the rest of the flex items. The flexbox flex-grow
value must be a number, the default value is 0
(Zero).
.flex-item { flex-grow: 3; }
The flexbox flex-shrink
property defines how much a flex item will shrink relative to the rest of the flex items. The flexbox flex-shrink
value must be a number, the default value is 1
(One).
.flex-item { flex-shrink: 3; }
The flexbox flex-basis
property defines the initial length of a flex item. The default value is auto
.
.flex-item { flex-basis: 250px | auto; }
The flexbox flex
property is a shorthand property for the flex-grow
, flex-shrink
, and flex-basis
properties. The flex-shrink
and flex-basis
are optional. The default value is 0 1 auto
.
.flex-item { flex: none | <'flex-grow'> <'flex-shrink'> <'flex-basis'>; }
The flexbox align-self
property defines the alignment for the selected item inside the flexbox container. It overrides the default alignment set by the flexbox container's align-items
property.
.flex-item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }