Javatpoint Logo
Javatpoint Logo

CSS Display Flex

The powerful layout module CSS Flexbox, often known as "display: flex," helps designers to construct flexible and adaptable designs. It offers a convenient technique to space and evenly align a container's components.

Let's review the basics and then move on to more advanced `display: flex` features.

Basics Features of Display Flex

  1. Flex Container and Flex Items: The `display: flex` property is applied to the parent element, which becomes the flex container. The direct child elements of the flex container are referred to as flex items.
  2. Flex Direction ('flex-direction): This specifies the direction of the flex container's main axis and the arrangement of the flex components. The primary axis may be horizontal (designated as "row"), vertical (designated as "column"), reversed horizontal (designated as "row-reverse"), or reversed vertical (designated as "column-reverse").
  3. Flex Wrapping (or "flex-wrap"): Flex elements are frequently placed on a single line by default. The elements may be wrapped into many lines if the flex container needs to be bigger. The 'flex-wrap' property, which may be set to 'nowrap' (the default), 'wrap', or 'wrap-reverse', can be used to manage this behaviour.
  4. Aligning Flex Items along the Main Axis (`justify-content): This property is utilized to align flex elements along the flex container's main axis. When additional space is in the container, it decides how it will be allocated. 'Flex-start' (the default), 'Flex-end', 'Centre', 'Space-between', 'Space-around', and 'Space-evenly' are available options.
  5. Aligning Flex Items with the Cross Axis (using the "align-items" command): It specifies the alignment of flex items along the cross-axis, which is perpendicular to the principal axis. Stretch (the default), Flex-start, Flex-end, Centre, and Baseline are available options.

Advanced Feature of Display Flex

  1. Ordering Flex Items (`order`): Changing the order in which flex elements are displayed inside the flex container is possible using the 'order' parameter. Items have an order of 0 by default, but you may change that by giving them positive or negative values.
  2. Resizing Flex Items ('flex'): The 'flex' property is a shorthand for the attributes 'flex-grow', 'flex-shrink', and 'flex-basis'. It specifies how flex objects should expand, contract, and change size within the flex container.
  3. Aligning Individual Flex Items ('align-self): This property takes priority over the 'align-items' property for a given Flex Item. Irrespective of the alignment settings for other items, it enables you to align a flex item along the cross-axis independently.
  4. Adjusting Space between Flex Items (`justify-items`): Justifying Items ('justify-items') modifies the space between flex elements as opposed to Justifying content ('justify-content), which distributes space along the main axis. The options for this attribute are "flex-start," "flex-end," "centre," "stretch," "baseline," and "space-between."
  5. Aligning Multiple Lines of Flex Items (`align-content): If flex items wrap onto multiple lines, 'align-content' regulates how the lines are aligned along the cross-axis. Like "align-items," it affects many lines instead of single items.

These are some of the basic ideas and features of CSS Flexbox. You can easily construct flexible and responsive layouts by using them.

Display Flex vs Flexbox

"Display: flex" and "flexbox" are essentially the same thing, as they refer to the CSS Flexbox module. Let's clarify the relationship between them:

Display Flex Flexbox
A CSS attribute called "Display: flex" activates Flexbox on a container element. When you provide an element with the "display: flex" attribute, it is transformed into a flex container, and any direct children are transformed into flex items.
An essential CSS property used to specify how an element should be shown is the "display" property. By changing it to "flex," you enable Flexbox layout support for that element.
The CSS layout module Flexbox offers a variety of options for producing responsive and dynamic layouts.
It is a set of CSS values and attributes that let you manage items' distribution, alignment, and placement within a container.
The CSS3 standard included the introduction of Flexbox, which is now heavily supported by present web browsers.

In summary, Flexbox is the overall concept and set of properties for creating flexible layouts, while "display: flex" is the specific CSS property used to activate Flexbox on a container element.

CSS Grid vs Flexbox

CSS Grid and Flexbox are powerful layout modules in CSS, each with strengths and use cases. One can choose which one to utilize in certain situations by being aware of their differences:

CSS Grid

Anyone can design complicated grid-based layouts with CSS Grid, CSS Grid is a two-dimensional layout framework. It divides the available space into columns and rows, forming a grid of cells into which elements can be placed. Some key points about CSS Grid are:

  1. Grid Structure: The layout's columns and rows may be explicitly controlled using CSS Grid. Each grid track's dimensions, orientation, and location (column and row) are individually adjustable.
  2. Grid Items: Elements may be positioned precisely anywhere inside the grid. Grid elements may span numerous cells, resulting in adaptable and dynamic layouts.
  3. Complex Layouts: CSS Grid is very helpful for designing intricate, multi-dimensional layouts with overlapping content and variably sized sections.
  4. Responsive Design: CSS Grid has built-in support for responsive design, making it simple to create layouts that adjust to various screen sizes.


In a one-dimensional Flexbox layout, items are distributed and aligned along a single axis (horizontally or vertically). It works nicely with simple, linear layouts. Here are some crucial Flexbox features:

  1. Flexible Box Model: Flexbox enables pieces to extend and contract to fit space dynamically. It offers control over how excess room is divided and how things are arranged within a container.
  2. Single-axis Alignment: Flexbox is designed for single-axis layouts, which may be vertical (in a column) or horizontal (in a row). It is excellent at allocating space and positioning objects along the primary axis.
  3. Ordering and Reordering: Flexbox allows for the visible reordering of items, which helps move elements about without changing their source code order.
  4. Responsive Design:Flexbox, particularly for linear, one-dimensional layouts, is responsive-friendly and adaptable to various screen sizes.

When We Use CSS Grid or Flexbox

The choice between CSS Grid and Flexbox should be made by recognizing their advantages and combining them when necessary. Here are some principles to consider:

  1. Complex, grid-based Layouts: CSS Grid is superior if your layout calls for several columns and rows with varied widths and overlapping content.
  2. Linear, Single-axis Layouts: For simpler, linear layouts along a single axis (horizontal or vertical), where items need to expand or shrink flexibly, and alignment is crucial, Flexbox is a suitable option.
  3. Using Both: Flexbox and CSS Grid both can be utilized in the same project. To further manage item alignment and distribution, one can utilize Flexbox inside certain grid sections after using CSS Grid to layout the website.

It's crucial to remember that most current web browsers support CSS Grid and Flexbox.

The selection choice between CSS Grid and Flexbox ultimately depends on the particular needs of your layout. You may easily design complex and responsive web layouts by being aware of their possibilities and using their advantages.

Next TopicCSS Font Color

Youtube For Videos Join Our Youtube Channel: Join Now


Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Trending Technologies

B.Tech / MCA