2021-05-14 23:32:24 +02:00
---
layout: docs
title: Stacks
description: Shorthand helpers that build on top of our flexbox utilities to make component layout faster and easier than ever.
group: helpers
toc: true
2022-04-30 19:53:54 +02:00
added: "5.1"
2021-05-14 23:32:24 +02:00
---
Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create layouts in Bootstrap. All credit for the concept and implementation goes to the open source [Pylon project ](https://almonk.github.io/pylon/ ).
2021-09-06 20:48:35 +02:00
{{< callout warning > }}
Heads up! Support for gap utilities with flexbox was recently added to Safari, so consider verifying your intended browser support. Grid layout should have no issues. [Read more ](https://caniuse.com/flexbox-gap ).
{{< / callout > }}
2021-05-14 23:32:24 +02:00
## Vertical
Use `.vstack` to create vertical layouts. Stacked items are full-width by default. Use `.gap-*` utilities to add space between items.
2023-01-17 09:54:54 +01:00
{{< example class = "bd-example-flex" > }}
2021-05-14 23:32:24 +02:00
< div class = "vstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
< div class = "p-2" > Second item< / div >
< div class = "p-2" > Third item< / div >
2021-05-14 23:32:24 +02:00
< / div >
{{< / example > }}
## Horizontal
Use `.hstack` for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width. Use `.gap-*` utilities to add space between items.
2023-01-17 09:54:54 +01:00
{{< example class = "bd-example-flex" > }}
2021-05-14 23:32:24 +02:00
< div class = "hstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
< div class = "p-2" > Second item< / div >
< div class = "p-2" > Third item< / div >
2021-05-14 23:32:24 +02:00
< / div >
{{< / example > }}
Using horizontal margin utilities like `.ms-auto` as spacers:
2023-01-17 09:54:54 +01:00
{{< example class = "bd-example-flex" > }}
2021-05-14 23:32:24 +02:00
< div class = "hstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
< div class = "p-2" > Second item< / div >
< div class = "p-2" > Third item< / div >
2021-05-14 23:32:24 +02:00
< / div >
{{< / example > }}
2021-06-23 07:22:02 +02:00
And with [vertical rules ]({{< docsref "/helpers/vertical-rule" >}} ):
2021-05-14 23:32:24 +02:00
2023-01-17 09:54:54 +01:00
{{< example class = "bd-example-flex" > }}
2021-05-14 23:32:24 +02:00
< div class = "hstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
< div class = "p-2" > Second item< / div >
2021-05-14 23:32:24 +02:00
< div class = "vr" > < / div >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > Third item< / div >
2021-05-14 23:32:24 +02:00
< / div >
{{< / example > }}
## Examples
Use `.vstack` to stack buttons and other elements:
{{< example > }}
< div class = "vstack gap-2 col-md-5 mx-auto" >
< button type = "button" class = "btn btn-secondary" > Save changes< / button >
< button type = "button" class = "btn btn-outline-secondary" > Cancel< / button >
< / div >
{{< / example > }}
Create an inline form with `.hstack` :
{{< example > }}
< div class = "hstack gap-3" >
2021-09-04 08:36:18 +02:00
< input class = "form-control me-auto" type = "text" placeholder = "Add your item here..." aria-label = "Add your item here..." >
2021-05-14 23:32:24 +02:00
< button type = "button" class = "btn btn-secondary" > Submit< / button >
< div class = "vr" > < / div >
< button type = "button" class = "btn btn-outline-danger" > Reset< / button >
< / div >
{{< / example > }}
2023-01-17 03:57:24 +01:00
## CSS
2021-05-14 23:32:24 +02:00
{{< scss-docs name = "stacks" file = "scss/helpers/_stacks.scss" > }}