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

Bootstrap 5 图文并排轮播问题:非激活Slide 3始终置顶

Bootstrap 5 轮播Slide 3始终显示顶层的CSS修复方案

问题说明

使用Bootstrap 5创建自定义轮播,要求每个幻灯片内文本与图片并排显示。当前幻灯片布局正常,但Slide 3即使处于非激活状态,也始终显示在所有幻灯片的顶层。需要在不使用JavaScript的前提下解决该问题,适配jQuery 4.0+和Bootstrap 5(用于Drupal 11网站)。

问题原因

Bootstrap 5默认通过opacity属性控制轮播项的显示/隐藏,而非直接设置display: none。自定义CSS中给.carousel-item添加了display: flex,导致DOM结构中最后一个轮播项(Slide 3)在视觉层级上默认高于前面的项,即使非激活状态也会覆盖其他幻灯片。

修复方案

通过CSS层级(z-index)控制,让激活状态的幻灯片拥有更高层级,非激活状态的幻灯片层级降低,即可解决覆盖问题。

修改后的完整代码

CSS 代码

.carousel-item {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #f8f9fa;
  /* 增加层级控制基础值 */
  position: relative;
}

/* 激活的幻灯片层级更高 */
.carousel-item.active {
  z-index: 1;
}

/* 非激活的幻灯片层级降低 */
.carousel-item:not(.active) {
  z-index: 0;
}

.carousel-item .item {
  display: flex;
  width: 100%;
}

.carousel-item .text,
.carousel-item .image {
  padding: 15px;
}

.carousel-item .text {
  flex: 1;
  background-color: rgba(0, 0, 0, 0.5);
  color: white;
  padding: 20px;
}

.carousel-item .image img {
  width: 100%;
  height: auto;
  object-fit: cover;
}

.carousel-caption {
  display: none;
}

@media (max-width: 768px) {
  .carousel-item .item {
    flex-direction: column;
  }

  .carousel-item .image img {
    max-height: 300px;
  }
}

HTML 代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
  <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
</head>

<body>
  <div class="container mt-4">
    <div id="carouselExample" class="carousel slide" data-bs-ride="carousel">
      <div class="carousel-inner">
        <!-- Slide 1 -->
        <div class="carousel-item active">
          <div class="item">
            <div class="text col-md-6">
              <p>Slide 1: Lorem ipsum dolor sit amet consectetur, adipisicing elit. Perspiciatis a modi repellat eaque voluptatibus repellendus veniam quia! Et recusandae quam inventore atque sapiente eius minus quaerat, perferendis, magnam ex fugit.</p>
            </div>
            <div class="image col-md-6">
              <img src="https://i.ibb.co/39dVTpfY/banner-600300.png" alt="">
            </div>
          </div>
        </div>
        
        <!-- Slide 2 -->
        <div class="carousel-item">
          <div class="item">
            <div class="text col-md-6">
              <p>Slide 2: Description for Slide 2 goes here...</p>
            </div>
            <div class="image col-md-6">
              <img src="https://i.ibb.co/39dVTpfY/banner-600300.png" alt="Slide 2">
            </div>
          </div>
        </div>
        
        <!-- Slide 3 -->
        <div class="carousel-item">
          <div class="item">
            <div class="text col-md-6">
              <p>Slide 3: Description for Slide 3 goes here...</p>
            </div>
            <div class="image col-md-6">
              <img src="https://i.ibb.co/39dVTpfY/banner-600300.png" alt="Slide 3">
            </div>
          </div>
        </div>
      </div>
      
      <button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
          <span class="carousel-control-prev-icon" aria-hidden="true"></span>
          <span class="visually-hidden">Previous</span>
      </button>
      <button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
          <span class="carousel-control-next-icon" aria-hidden="true"></span>
          <span class="visually-hidden">Next</span>
      </button>
            
      <div class="carousel-indicators">
        <button type="button" data-bs-target="#carouselExample" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
        <button type="button" data-bs-target="#carouselExample" data-bs-slide-to="1" aria-label="Slide 2"></button>
        <button type="button" data-bs-target="#carouselExample" data-bs-slide-to="2" aria-label="Slide 3"></button>
      </div>
    </div>
  </div>

  <footer class="bg-dark text-white text-center py-3 mt-4">
    <p>&copy; 2025 My Site. All rights reserved.</p>
  </footer>

  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>

</html>

说明

  • 给.carousel-item添加position: relative是为了让z-index属性生效
  • 通过.carousel-item.active设置更高层级,确保激活的幻灯片始终显示在顶层
  • 非激活的幻灯片通过.carousel-item:not(.active)设置较低层级,避免覆盖激活的幻灯片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:44:53