CSS Flexbox #3. The align-items property
![CSS Flexbox align-items property](https://ostraining.setupwp.io/wp-content/uploads/blog/web-design/css-flexbox/01/flexbox-explianed-showcase-1200x540.jpg)
As you already learned in the second tutorial of this series, a flex-container has two following axes:
- main axis
- cross axis
The justify-content
property specifies how the flex-items are distributed along the main axis, whereas the align-items
property specifies how the flex-items are distributed along the cross axis of the flex-container.
![01](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/01.png)
This tutorial will introduce you the align-items
property and how to use it within a flex-container. The align-items
property accepts five possible values:
flex-start
flex-end
center
baseline
stretch
(default)
Step # 1. – Create the HTML
- Open your preferred code editor.
- Create an empty HTML file.
- Visit this page, copy the HTML code and save the file.
Step #2. – The CSS Styles
- Create a file called style.css (the file is already linked in the tag of the HTML code).
- Copy and paste this code:
/* GLOBAL STYLES */
* {
box-sizing: border-box;
}
body {
background-color: #AAA;
margin: 0px 50px 50px;
}
.item {
padding: 2rem;
border: 5px solid #87b5ff;
border-radius: 3px;
font-size: 2em;
font-family: sans-serif;
font-weight: bold;
background-color: #1c57b5;
}
![02](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/02.png)
Step # 3. – The Flexbox Styles
Create a flex-container.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
}
![03](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/03.png)
The defaults for flex-direction
and align-items
are row
and stretch
respectively, that means the main-axis is the inline axis and the cross-axis is the block axis.
- Edit the CSS file:
.container {
display: flex;
background-color: #f5ca3c;
align-items: flex-end;
}
You will see no difference. That is because the flex-container is only as high, as the items inside it, like a regular block container.
In order to see how this works, you have to declare a height value for the flex-container.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: flex-end;
}
![04](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/04.png)
As you can see, the flex-items have been displaced to the end of the cross axis, through the use of the align-items
property. Let’s test other possible values.
- Edit the CSS file:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: flex-start;
}
![05](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/05.png)
Now the flex-items are located at the start of both axes within the container. Remember that the default value for the justify-content
property is flex-start
and that the default value for the flex-direction
property (main-axis) is row
.
- Edit the CSS file once again:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: center;
}
![06](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/06.png)
The items are now vertically centered along the cross-axis. If you want to center them perfectly within the container, you just add the justify-content
property (once again main-axis) with the value center
.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: center;
justify-content: center;
}
![07](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/07.png)
- Edit the CSS code one more time:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
}
![08](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/08.png)
As already stated, the default value for the align-items
property is stretch
, so if you edit the code and add this property, you will see no difference at all.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: stretch;
}
Now change the font-size of two of the flex-items.
- Edit the CSS code:
.item2 {<br>font-size: 3em;<br>}
.item3 {<br>font-size: 3.5em;<br>}
![09](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/09.png)
Notice that the baselines of the flex-items do not align with each other. In order to line all items (once again, along with the cross-axis) according to their baseline, you assign the baseline
value to the align-items
property.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
height: 90vh;
align-items: baseline;
}
![10](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/10.png)
Until now, you have seen how the align-items
property works with the default flex-direction: row
. Let’s test how this works if we change the flex-direction
to column
.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
flex-direction: column;
align-items: center;
}
![11](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/11.png)
Notice, that you don’t have to declare a height value for the container since the main-axis is now the block axis. The items pile on top of each other.
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
flex-direction: column;
align-items: flex-end;
}
![12](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/12.png)
- Edit the CSS code:
.container {
display: flex;
background-color: #f5ca3c;
flex-direction: column;
align-items: flex-start;
}
![13](https://ostraining.setupwp.io/wp-content/uploads/images/blog/web-design/css-flexbox/03/13.png)
As you already have realized, it does not make much sense to declare the baseline
value, since you would have to rotate all flex-items 90 degrees to the left, in order to line up their baselines and it is not very common to read that way.
In conclusion, the align-items
property works always on the cross-axis, while the justify-content
property works always on the main-axis. The main axis is always determined by the value of the flex-direction
property.
I hope you liked this tutorial, thank you very much for reading.