I want the correct fixed columns in the bootstrap-vue table However, the Sticky feature in the document is only fixed on the left side. Is there a way to fix the right or last column?
I want both the left and right columns to be fixed in place.
Documentation website: https://bootstrap-vue.org/docs/components/table#sticky-columns
<template> <div> <div class="mb-2"> <b-form-checkbox v-model="stickyHeader" inline>Sticky header</b-form-checkbox> <b-form-checkbox v-model="noCollapse" inline>No border collapse</b-form-checkbox> </div> <b-table :sticky-header="stickyHeader" :no-border-collapse="noCollapse" responsive :items="items" :fields="fields" > <!-- We are using utility class `text-nowrap` to help illustrate horizontal scrolling --> <template #head(id)="scope"> <div class="text-nowrap">Row ID</div> </template> <template #head()="scope"> <div class="text-nowrap"> Heading {{ scope.label }} </div> </template> </b-table> </div> </template> <script> export default { data() { return { stickyHeader: true, noCollapse: false, fields: [ { key: 'id', stickyColumn: true, isRowHeader: true, variant: 'primary' }, 'a', 'b', { key: 'c', stickyColumn: true, variant: 'info' }, 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l' ], items: [ { id: 1, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 2, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 3, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 4, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 5, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 6, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 7, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 8, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 9, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 }, { id: 10, a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7, i: 8, j: 9, k: 10, l: 11 } ] } } } </script>
This can be achieved by overriding bootstrap's CSS with some of our own CSS. First make sure the last column has the
stickyColumn: true
option along with any other options you want to give it:This will ensure it has a class name that we can easily choose. Apply a style giving the last sticky column in the table the
attributeright: 0
:codesandbox example