align-items property
The align-items property also aligns items, but this time along the cross axis (when arranged as a row vertically, when arranged as a column – horizontally). This property can take the following values:
- stretch : The default value that makes flex items stretch the full height (when stacked) or full width (when stacked) of the flex container
- flex-start : items are aligned to the top (when stacked) or left (when stacked) of the flex container
- flex-end : items are aligned to the bottom (when stacked) or right (when stacked) of the flex container
- center : items are center-aligned on the flex container
- baseline : elements are aligned according to their baseline
Alignment when inline:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flexbox In CSS3</title> <style> .flex-container { display: flex; border: 1px #ccc solid; height: 5em; } .flex-start { align-items: flex-start; } .flex-end { align-items: flex-end; } .center { align-items: center; } .baseline { align-items: baseline; } .flex-item { text-align: center; font-size: 1em; padding: 1.2em; color: white; } .largest-item { padding-top: 2em; } .color1 { background-color: #675BA7; } .color2 { background-color: #9BC850; } .color3 { background-color: #A62E5C; } .color4 { background-color: #2A9FBC; } </style> </head> <body> <h3>Flex-start</h3> <div class="flex-container flex-start"> <div class="flex-item color1">Flex Item 1</div> <div class="flex-item color2">Flex Item 2</div> <div class="flex-item color3">Flex Item 3</div> <div class="flex-item color4">Flex Item 4</div> </div> <h3>Flex-end</h3> <div class="flex-container flex-end"> <div class="flex-item color1">Flex Item 1</div> <div class="flex-item color2">Flex Item 2</div> <div class="flex-item color3">Flex Item 3</div> <div class="flex-item color4">Flex Item 4</div> </div> <h3>Center</h3> <div class="flex-container center"> <div class="flex-item color1">Flex Item 1</div> <div class="flex-item color2">Flex Item 2</div> <div class="flex-item color3">Flex Item 3</div> <div class="flex-item color4">Flex Item 4</div> </div> <h3>Baseline</h3> <div class="flex-container baseline"> <div class="flex-item color1">Flex Item 1</div> <div class="flex-item color2 largest-item">Flex Item 2</div> <div class="flex-item color3">Flex Item 3</div> <div class="flex-item color4">Flex Item 4</div> </div> </html>
Similarly, the property works when arranged in a column. For example, let’s change the styles of the flex container as follows:
align-self property
The align-self property allows you to override the value of a property align-itemson a single element. It can take all the same values plus the “auto” value:
- auto : The default value where the element gets its value from the property align-itemsdefined in the flex container. If the style is not defined in the container, then the value is applied stretch.
- stretch
- flex start
- flex end
- center
- baseline
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flexbox In CSS3</title> <style> .flex-container { display: flex; border: 1px #ccc solid; justify-content: space-between; align-items: stretch; height: 12em; } .flex-item { text-align: center; font-size: 1em; padding: 1.2em; color: white; } .item1 { background-color: #675BA7; align-self: center; } .item2 { background-color: #9BC850; align-self: flex-start; } .item3 { background-color: #A62E5C; align-self: flex-end; } .item4 { background-color: #2A9FBC; align-self: center; } </style> </head> <body> <h3>Align-self</h3> <div class="flex-container"> <div class="flex-item item1">Flex Item 1</div> <div class="flex-item item2">Flex Item 2</div> <div class="flex-item item3">Flex Item 3</div> <div class="flex-item item4">Flex Item 4</div> </div> </html>