Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
375 views
in Technique[技术] by (71.8m points)

javascript - Bootstrap 5 carousel indicator for multiple carousels

I'm trying to trigger multiple carousel sliders via data-bs-target. I tried with class name instead of ID, but it triggers only one.

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<div class="row">
<div class="col-6">
<div id="carouselA" class="carousel slide carouselBoth" data-bs-ride="carousel">
  <ol class="carousel-indicators">
    <li data-bs-target=".carouselBoth" data-bs-slide-to="0" class="active"></li>
    <li data-bs-target=".carouselBoth" data-bs-slide-to="1"></li>
    <li data-bs-target=".carouselBoth" data-bs-slide-to="2"></li>
  </ol>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="https://via.placeholder.com/300x150/1" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://via.placeholder.com/300x150/2" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://via.placeholder.com/300x150/3" class="d-block w-100" alt="...">
    </div>
  </div>
</div>
</div>

<div class="col-6">

<div id="carouselB" class="carousel slide carouselBoth" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="https://via.placeholder.com/300x150/1" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://via.placeholder.com/300x150/2" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://via.placeholder.com/300x150/3" class="d-block w-100" alt="...">
    </div>
  </div>
</div>
</div>
</div>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

According to the Bootstrap 5 beta docs...

"Control and indicator elements must have a data-bs-target attribute (or href for links) that matches the id of the .carousel element."

So I think only the Collapse component supports multiple targets. However, you can hook into the slide.bs.carousel event of the 1st carousel to trigger slide on the 2nd carousel using javascript...

var carouselA = document.getElementById('carouselA')
var carouselB = document.getElementById('carouselB')

carouselA.addEventListener('slide.bs.carousel', function(e) {
    var bsCarouselB = bootstrap.Carousel.getInstance(carouselB)
    bsCarouselB.to(e.to)
})

Demo


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...