2021-05-14 14:32:24 -07: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
2024-03-05 08:12:38 +02:00
added:
version: "5.1"
2021-05-14 14:32:24 -07: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-07 03:48:35 +09:00
{{< callout warning > }}
2024-09-18 22:35:28 +09:00
**Heads up!** Support for gap utilities with flexbox isn't available in Safari prior to 14.5, so consider verifying your intended browser support. Grid layout should have no issues. [Read more ](https://caniuse.com/flexbox-gap ).
2021-09-07 03:48:35 +09:00
{{< / callout > }}
2021-05-14 14:32:24 -07: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 14:32:24 -07: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 14:32:24 -07: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 14:32:24 -07: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 14:32:24 -07: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 14:32:24 -07:00
< div class = "hstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
2023-06-13 14:04:00 -07:00
< div class = "p-2 ms-auto" > Second item< / div >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > Third item< / div >
2021-05-14 14:32:24 -07:00
< / div >
{{< / example > }}
2021-06-22 22:22:02 -07:00
And with [vertical rules ]({{< docsref "/helpers/vertical-rule" >}} ):
2021-05-14 14:32:24 -07:00
2023-01-17 09:54:54 +01:00
{{< example class = "bd-example-flex" > }}
2021-05-14 14:32:24 -07:00
< div class = "hstack gap-3" >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > First item< / div >
2023-06-13 14:04:00 -07:00
< div class = "p-2 ms-auto" > Second item< / div >
2021-05-14 14:32:24 -07:00
< div class = "vr" > < / div >
2023-01-17 09:54:54 +01:00
< div class = "p-2" > Third item< / div >
2021-05-14 14:32:24 -07: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 14:32:24 -07: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-16 18:57:24 -08:00
## CSS
2021-05-14 14:32:24 -07:00
{{< scss-docs name = "stacks" file = "scss/helpers/_stacks.scss" > }}