diff options
| author | Mark Otto <[email protected]> | 2021-05-14 14:32:24 -0700 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2021-07-16 15:11:40 -0700 |
| commit | 2bc6de1f5ea85e2b1e228e56c96b339dc105b1c8 (patch) | |
| tree | f465a791bb677ca720faa6eb66c7992fbc3b262e | |
| parent | 5c1691ac3a7511e3ae0f1f619bfc0c848090efb5 (diff) | |
| download | bootstrap-2bc6de1f5ea85e2b1e228e56c96b339dc105b1c8.tar.xz bootstrap-2bc6de1f5ea85e2b1e228e56c96b339dc105b1c8.zip | |
Add hstack and vstack helpers
| -rw-r--r-- | scss/_helpers.scss | 1 | ||||
| -rw-r--r-- | scss/helpers/_stacks.scss | 24 | ||||
| -rw-r--r-- | site/content/docs/5.0/helpers/stacks.md | 82 | ||||
| -rw-r--r-- | site/data/sidebar.yml | 1 |
4 files changed, 108 insertions, 0 deletions
diff --git a/scss/_helpers.scss b/scss/_helpers.scss index 8f566d12f..13fb1bbb5 100644 --- a/scss/_helpers.scss +++ b/scss/_helpers.scss @@ -2,6 +2,7 @@ @import "helpers/colored-links"; @import "helpers/ratio"; @import "helpers/position"; +@import "helpers/stacks"; @import "helpers/visually-hidden"; @import "helpers/stretched-link"; @import "helpers/text-truncation"; diff --git a/scss/helpers/_stacks.scss b/scss/helpers/_stacks.scss new file mode 100644 index 000000000..bb0d4d55a --- /dev/null +++ b/scss/helpers/_stacks.scss @@ -0,0 +1,24 @@ +// scss-docs-start stacks +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} +// scss-docs-end stacks + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentColor; + opacity: $hr-opacity; +} diff --git a/site/content/docs/5.0/helpers/stacks.md b/site/content/docs/5.0/helpers/stacks.md new file mode 100644 index 000000000..41c0ac546 --- /dev/null +++ b/site/content/docs/5.0/helpers/stacks.md @@ -0,0 +1,82 @@ +--- +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 +--- + +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/). + +## Vertical + +Use `.vstack` to create vertical layouts. Stacked items are full-width by default. Use `.gap-*` utilities to add space between items. + +{{< example >}} +<div class="vstack gap-3"> + <div class="bg-light border">First item</div> + <div class="bg-light border">Second item</div> + <div class="bg-light border">Third item</div> +</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. + +{{< example >}} +<div class="hstack gap-3"> + <div class="bg-light border">First item</div> + <div class="bg-light border">Second item</div> + <div class="bg-light border">Third item</div> +</div> +{{< /example >}} + +Using horizontal margin utilities like `.ms-auto` as spacers: + +{{< example >}} +<div class="hstack gap-3"> + <div class="bg-light border">First item</div> + <div class="bg-light border ms-auto">Second item</div> + <div class="bg-light border">Third item</div> +</div> +{{< /example >}} + +<div class="d-flex" style="height: 200px;"> +<div class="vr"></div> +</div> + +{{< example >}} +<div class="hstack gap-3"> + <div class="bg-light border">First item</div> + <div class="bg-light border ms-auto">Second item</div> + <div class="vr"></div> + <div class="bg-light border">Third item</div> +</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"> + <input class="form-control me-auto" type="text" placeholder="Add your item here..."> + <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 >}} + +## Sass + +{{< scss-docs name="stacks" file="scss/helpers/_stacks.scss" >}} diff --git a/site/data/sidebar.yml b/site/data/sidebar.yml index ab99029b0..fa37b8197 100644 --- a/site/data/sidebar.yml +++ b/site/data/sidebar.yml @@ -88,6 +88,7 @@ - title: Colored links - title: Ratio - title: Position + - title: Stacks - title: Visually hidden - title: Stretched link - title: Text truncation |
