Bootstrap 5 多个轮播的轮播指示器
Bootstrap 5 carousel indicator for multiple carousels
我正在尝试通过 data-bs-target 触发多个轮播滑块。我尝试使用 class 名称而不是 ID,但它只触发一个。
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/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>
我猜 data-bs-target=".carouselBoth"
会起作用,但看起来我错了或者我漏掉了什么
根据 Bootstrap 5 beta 文档...
"Control and indicator elements must have a data-bs-target attribute
(or href for links) that matches the id of the .carousel element."
所以我认为只有Collapse组件支持multiple targets。但是,您可以使用 javascript...
连接到第一个轮播的 slide.bs.carousel
事件以触发第二个轮播上的幻灯片
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)
})
我正在尝试通过 data-bs-target 触发多个轮播滑块。我尝试使用 class 名称而不是 ID,但它只触发一个。
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/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>
我猜 data-bs-target=".carouselBoth"
会起作用,但看起来我错了或者我漏掉了什么
根据 Bootstrap 5 beta 文档...
"Control and indicator elements must have a data-bs-target attribute (or href for links) that matches the id of the .carousel element."
所以我认为只有Collapse组件支持multiple targets。但是,您可以使用 javascript...
连接到第一个轮播的slide.bs.carousel
事件以触发第二个轮播上的幻灯片
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)
})