diff --git a/src/components/carousel/carousel.js b/src/components/carousel/carousel.js index 2e8e27bc697..981108ad87b 100644 --- a/src/components/carousel/carousel.js +++ b/src/components/carousel/carousel.js @@ -10,6 +10,7 @@ import { getActiveElement, reflow, removeClass, + requestAF, selectAll, setAttr } from '../../utils/dom' @@ -269,7 +270,10 @@ export const BCarousel = /*#__PURE__*/ Vue.extend({ // Don't change slide while transitioning, wait until transition is done if (this.isSliding) { // Schedule slide after sliding complete - this.$once('sliding-end', () => this.setSlide(slide, direction)) + this.$once('sliding-end', () => { + // Wrap in `requestAF()` to allow the slide to properly finish to avoid glitching + requestAF(() => this.setSlide(slide, direction)) + }) return } this.direction = direction