You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3项目使用bootstrap-vue3的Carousel轮播组件无法运行求助

BootstrapVue3 轮播组件异常修复方案

修复步骤

  • 依赖样式引入修正
    必须在项目入口文件(main.js/main.ts)按如下顺序引入样式,顺序错误会导致组件样式、交互异常:
// 先引入Bootstrap 5官方样式
import 'bootstrap/dist/css/bootstrap.css'
// 再引入BootstrapVue3样式
import 'bootstrap-vue-3/dist/bootstrap-vue-3.css'
  • 组件完整注册
    轮播功能依赖BCarousel、BCarouselSlide两个组件,注册时不能遗漏,局部注册示例如下:
import { BCarousel, BCarouselSlide } from 'bootstrap-vue-3'

export default {
  components: {
    BCarousel,
    BCarouselSlide
  },
  // 其余原有逻辑
}
  • API适配调整
    你所使用的代码来自Vue2版本BootstrapVue的官方文档,和Vue3版本的BootstrapVue3 API存在差异,需要做两处修改:
    1. 事件名调整:将原@sliding-start改为@slide-start,原@sliding-end改为@slide-end
    2. 数值属性绑定调整:将img-width="1024"、img-height="480"改为动态绑定:img-width="1024"、:img-height="480",确保传入组件的是数值类型参数

修正后完整代码

<template>
  <div>
    <b-carousel
      id="carousel-1"
      v-model="slide"
      :interval="4000"
      controls
      indicators
      background="#ababab"
      :img-width="1024"
      :img-height="480"
      style="text-shadow: 1px 1px 2px #333;"
      @slide-start="onSlideStart"
      @slide-end="onSlideEnd"
    >
      <!-- Text slides with image -->
      <b-carousel-slide
        caption="First slide"
        text="Nulla vitae elit libero, a pharetra augue mollis interdum."
        img-src="https://picsum.photos/1024/480/?image=52"
      ></b-carousel-slide>

      <!-- Slides with custom text -->
      <b-carousel-slide img-src="https://picsum.photos/1024/480/?image=54">
        <h1>Hello world!</h1>
      </b-carousel-slide>

      <!-- Slides with image only -->
      <b-carousel-slide img-src="https://picsum.photos/1024/480/?image=58"></b-carousel-slide>

      <!-- Slides with img slot -->
      <!-- Note the classes .d-block and .img-fluid to prevent browser default image alignment -->
      <b-carousel-slide>
        <template #img>
          <img
            class="d-block img-fluid w-100"
            width="1024"
            height="480"
            src="https://picsum.photos/1024/480/?image=55"
            alt="image slot"
          >
        </template>
      </b-carousel-slide>

      <!-- Slide with blank fluid image to maintain slide aspect ratio -->
      <b-carousel-slide caption="Blank Image" img-blank img-alt="Blank image">
        <p>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eros felis, tincidunt
          a tincidunt eget, convallis vel est. Ut pellentesque ut lacus vel interdum.
        </p>
      </b-carousel-slide>
    </b-carousel>

    <p class="mt-4">
      Slide #: {{ slide }}<br>
      Sliding: {{ sliding }}
    </p>
  </div>
</template>

<script>
import { BCarousel, BCarouselSlide } from 'bootstrap-vue-3'
export default {
  components: {
    BCarousel,
    BCarouselSlide
  },
  data() {
    return {
      slide: 0,
      sliding: null
    }
  },
  methods: {
    onSlideStart(slide) {
      this.sliding = true
    },
    onSlideEnd(slide) {
      this.sliding = false
    }
  }
}
</script>

内容的提问来源于stack exchange,提问作者fairdev610

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:04