Stacks
Vue Bootstrap 5 Stacks
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.
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.
Vertical
Use .vstack
to create vertical layouts. Stacked items are
full-width by default. Use .gap-*
utilities to add space
between items.
<template>
<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>
</template>
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.
<template>
<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>
</template>
Using horizontal margin utilities like .ms-auto
as
spacers:
<template>
<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>
</template>
And with vertical rules:
<template>
<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>
</template>
Examples
Use .vstack
to stack buttons and other elements:
<template>
<div class="vstack gap-2 col-md-5 mx-auto">
<MDBBtn color="secondary">
Save changes
</MDBB>
<MDBBtn outline="secondary">
Cancel
</MDBBtn>
</div>
</template>
<script>
import { MDBBtn } from 'mdb-vue-ui-kit';
export default {
components: {
MDBBtn
},
};
</script>
<script setup lang="ts">
import { MDBBtn } from 'mdb-vue-ui-kit';
</script>
Create an inline form with .hstack
:
<template>
<div class="bg-white border rounded-5">
<div class="p-4">
<div class="hstack gap-3">
<MDBInput
:wrap="false"
placeholder="Add your item here..."
/>
<MDBBtn color="secondary">Submit</MDBBtn>
<div class="vr"></div>
<MDBBtn outline="danger">
Reset
</MDBBtn>
</div>
</div>
</div>
</template>
<script>
import { MDBBtn, MDBInput } from 'mdb-vue-ui-kit';
export default {
components: {
MDBBtn,
MDBInput
},
};
</script>
<script setup lang="ts">
import { MDBBtn, MDBInput } from 'mdb-vue-ui-kit';
</script>
Sass
<style>
.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;
}
</style>