FAQ: Flexbox - flex-direction

This community-built FAQ covers the “flex-direction” exercise from the lesson “Flexbox”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

FAQs on the exercise flex-direction

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Why does Flex-Direction: Row and Flex-Direction: Row-Reverse in this exercise not center the items when align-items: center; is set for the .container?
Flex-Direction: Column and Flex-Direction: Column-Reverse both do…

align-items: center; simply centers flex items on the cross-axis of their flex container. By default, the cross-axis is the vertical axis. However, this can be changed using the flex-direction property. By default, flex-direction is set to row, however, it can also have the following value:

  • row-reverse
  • column
  • column-reverse

row-reverse acts exactly like row. The only difference is that the flex items will be positioned from right to left and from the top right corner of their parent container. However, the cross-axis is still the vertical axis and because their flex container had a height that was computed by its content, we couldn’t actually center them vertically

1 Like

Why don’t the boxes in the column divs stretch horizontally in the last activity as well?

Because the width is limited to 100px in the .box container, the boxes wont stretch horizontally.
If you want it to stretch, set the width value to 100%

.box {
  background-color: whitesmoke;
  border: 1px solid white;
  width: 100px;
  height: 100px;
  flex-grow: 1;
}
1 Like

Ah okay that makes sense, thank you!

1 Like

flex-grow only works on the main axis. When flex-direction is set to column or column-reverse, the main axis is the vertical axis. Because the container is too small to allow the boxes to grow vertically, they do not grow.

You should be able to set the boxes to stretch horizontally if you remove the align-items property from .container

2 Likes

How so does flex-grow affect justify-content: space-around? I noticed when flex-grow is set, there happen to be no visual effect of justify-content: space-around.

1 Like

Why does the container shrink when we change it’s height property to max-height in step 5?

I don’t think the boxes will be able to stretch horizontally even if you take off the align-items property.

  1. This is because flex-grow only takes effect if the main-axis can expand.
  2. But for our case, our main axis had been changed to be the vertical axis with the help of the flex-direction property, and when you expand the view, only the horizontal axis expands and not the vertical axis which in our case has become the main axis.
  3. Our main axis (vertical axis) is not expanding and hence we don’t see the effect of flex-grow on our main axis since it’s not expanding.

How does max-height affects flex-direction and why does flex-grow acts on horizontal items?