我创建了一个 html 页面来测试 bootstrap 5 轮播。它显示多个项目,并在幻灯片图像之外具有上一个和下一个控件。这些控件使用 bootstrap 提供的 glyphicon-chevron-left 和 glphicon-chevron-right。 CSS 用于指定控制位置。我遇到了无法正确定位“下一个”控件的问题。它实际上显示在第一张幻灯片上,而不是最后一张幻灯片的右侧,距离上一张控件不远。我应该如何更改CSS样式来解决这个问题?
这是我的测试程序:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Modymix Website Prototype</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<style>
@media (max-width: 767px)
{
.carousel-inner .carousel-item >div
{
display: none
}
.carousel-inner .carousel-item >div:first-child
{
display: block
}
}
.carousel-inner .carousel-item.active, .carousel-inner .carousel-item-next, .carousel-inner .carousel-item-prev
{
display: flex
}
@media (min-width: 768px)
{
.carousel-inner .carousel-item-end.active, .carousel-inner .carousel-item-next
{
transform: translateX(25%)
}
.carousel-inner .carousel-item-start.active, .carousel-inner .carousel-item-prev
{
transform: translateX(-25%)
}
}
.carousel-inner .carousel-item-end, .carousel-inner .carousel-item-start
{
transform: translateX(0)
}
.carousel-control-next-icon
{
right: -30px;
}
.carousel-control-prev-icon
{
right: -30px;
}
/* Adjusted control positioning and styling */
.carousel-control-prev,
.carousel-control-next {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.carousel-control-prev, .glyphicon glyphicon-chevron-left {
left: -75px;
}
.carousel-control-next, .glyphicon glyphicon-chevron-right {
right: -75px;
}
.card
{
border-style: none;
}
</style>
</head>
<body>
<div class="container text-center my-3">
<h2 class="font-weight-light mb-3">Learning Center Category List</h2>
<div class="row mx-auto my-auto justify-content-center">
<div id="recipeCarousel" class="carousel slide" >
<div class="carousel-inner" role="listbox">
<div class="carousel-item active">
<div class="col-md-3">
<div class="card">
<div class="card-img text-center">
<img src="/images/learning/HealthDieNoBackgroundt0911-2023.jpg"
width="250" height="96">
</div>
<!-- <div class="card-img-overlay">Slide 1</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/carbManagementNoBackground911-2023.jpg"
width="250" height="96">
</div>
<!-- <div class="card-img-overlay">Slide 2</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/knowDiabetesCatalog.png"
width="250" height="96" >
</div>
<!-- <div class="card-img-overlay">Slide 3</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/ResearchUpdateNobackground0911-2023.jpg"
width="250" height="96" >
</div>
<!-- <div class="card-img-overlay">Slide 4</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/LearningCatalog_new.jpg"
width="250" height="96">
</div>
<div class="card-img-overlay fw-bold" style="color: white"">Catalog 5</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/LearningCatalog_new.jpg"
width="250" height="96">
</div>
<div class="card-img-overlay fw-bold" style="color: white">Catalog 6</div>
</div>
</div>
</div>
</div>
<a class="carousel-control carousel-control-prev bg-transparent w-aut" href="#recipeCarousel"
role="button" data-bs-slide="prev">
<span class="glyphicon glyphicon-chevron-left " aria-hidden="true"
style="color: black; font-size: 25px;"></span>
</a>
<a class="carousel-control carousel-control-next bg-transparent w-aut" href="#recipeCarousel"
role="button" data-bs-slide="next">
<span class="glyphicon glyphicon-chevron-right " aria-hidden="true"
style="color: black; font-size: 25px;"></span>
</a>
</div>
</div>
<h5 class="mt-3 fw-light">advances one slide at a time</h5>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
// carousel jquery script
let items = document.querySelectorAll('.carousel .carousel-item')
items.forEach((el) => {
const minPerSlide = 4
let next = el.nextElementSibling
for (var i=1; i<minPerSlide; i++) {
if (!next) {
// wrap carousel by using first child
next = items[0]
}
let cloneChild = next.cloneNode(true)
el.appendChild(cloneChild.children[0])
next = next.nextElementSibling
}
})
</script>
</html>
您调整的控件定位样式没有任何效果,因为它被引导样式覆盖。唯一有效果的是
transform: translateY(-50%);
如果您想让 V 形垂直居中,则不需要它。目前他们将它们拉到传送带的顶部。
要修复此临时问题,您可以将
left: auto
添加到 carousel-control carousel-control-next
查看下面添加的代码片段的 CSS 部分。我注释掉了您的调整并在底部添加了一行。
顺便说一句:
您包含 2 个版本的 bootstrap:
你可以解决这个问题。
// carousel jquery script
let items = document.querySelectorAll('.carousel .carousel-item')
items.forEach((el) => {
const minPerSlide = 4
let next = el.nextElementSibling
for (var i=1; i<minPerSlide; i++) {
if (!next) {
// wrap carousel by using first child
next = items[0]
}
let cloneChild = next.cloneNode(true)
el.appendChild(cloneChild.children[0])
next = next.nextElementSibling
}
})
@media (max-width: 767px)
{
.carousel-inner .carousel-item >div
{
display: none
}
.carousel-inner .carousel-item >div:first-child
{
display: block
}
}
.carousel-inner .carousel-item.active, .carousel-inner .carousel-item-next, .carousel-inner .carousel-item-prev
{
display: flex
}
@media (min-width: 768px)
{
.carousel-inner .carousel-item-end.active, .carousel-inner .carousel-item-next
{
transform: translateX(25%)
}
.carousel-inner .carousel-item-start.active, .carousel-inner .carousel-item-prev
{
transform: translateX(-25%)
}
}
.carousel-inner .carousel-item-end, .carousel-inner .carousel-item-start
{
transform: translateX(0)
}
.carousel-control-next-icon
{
right: -30px;
}
.carousel-control-prev-icon
{
right: -30px;
}
/* Adjusted control positioning and styling */
/* Doesn't have any effect other than the transform
.carousel-control-prev,
.carousel-control-next {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.carousel-control-prev, .glyphicon glyphicon-chevron-left {
left: -75px;
}
.carousel-control-next, .glyphicon glyphicon-chevron-right {
right: -75px;
}
*/
.card
{
border-style: none;
}
/* Fixes the issue */
.carousel-control.carousel-control-next {
left: auto;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Modymix Website Prototype</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<style>
</style>
</head>
<body>
<div class="container text-center my-3">
<h2 class="font-weight-light mb-3">Learning Center Category List</h2>
<div class="row mx-auto my-auto justify-content-center">
<div id="recipeCarousel" class="carousel slide" >
<div class="carousel-inner" role="listbox">
<div class="carousel-item active">
<div class="col-md-3">
<div class="card">
<div class="card-img text-center">
<img src="/images/learning/HealthDieNoBackgroundt0911-2023.jpg"
width="250" height="96">
</div>
<!-- <div class="card-img-overlay">Slide 1</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/carbManagementNoBackground911-2023.jpg"
width="250" height="96">
</div>
<!-- <div class="card-img-overlay">Slide 2</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/knowDiabetesCatalog.png"
width="250" height="96" >
</div>
<!-- <div class="card-img-overlay">Slide 3</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/ResearchUpdateNobackground0911-2023.jpg"
width="250" height="96" >
</div>
<!-- <div class="card-img-overlay">Slide 4</div> -->
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/LearningCatalog_new.jpg"
width="250" height="96">
</div>
<div class="card-img-overlay fw-bold" style="color: white"">Catalog 5</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="col-md-3">
<div class="card">
<div class="card-img">
<img src="/images/learning/LearningCatalog_new.jpg"
width="250" height="96">
</div>
<div class="card-img-overlay fw-bold" style="color: white">Catalog 6</div>
</div>
</div>
</div>
</div>
<a class="carousel-control carousel-control-prev bg-transparent w-aut" href="#recipeCarousel"
role="button" data-bs-slide="prev">
<span class="glyphicon glyphicon-chevron-left " aria-hidden="true"
style="color: black; font-size: 25px;"></span>
</a>
<a class="carousel-control carousel-control-next bg-transparent w-aut" href="#recipeCarousel"
role="button" data-bs-slide="next">
<span class="glyphicon glyphicon-chevron-right " aria-hidden="true"
style="color: black; font-size: 25px;"></span>
</a>
</div>
</div>
<h5 class="mt-3 fw-light">advances one slide at a time</h5>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
</script>
</html>