Search code examples
htmlcssbuttoncarouselbootstrap-5

How to change position for prev and next btn on Boostrap5 carousel?


I'm struggling to set the correct position for prev/next btns in a bootstrap5 carousel. The initial code I used as model was for a carousel that displays 4 images at once, I changed to 3 images at once. I added also some space between images.
I know that prev/next btns have position:absolute, I changed to position:relative and tried to position it by changing margins but it was worse.
Is there a solution on how to fix this problem?
The buttons look like this now: buttons

<div class="container text-center my-3 mb-5 carousel2">
                    <div class="row mx-5 my-5 justify-content-between align-items-center">
                        <div id="Carousel-2" class="carousel slide" data-bs-ride="carousel">
                            <div class="carousel-inner" role="listbox">
                                <div class="carousel-item active">
                                    <div class="col-md-4">
                                        <div class="card">
                                            <div class="card-img">
                                                <img src="./images/woman1.jpg" class="img-fluid">
                                            </div>
                                            <div class="card-img-bottom"><strong>Jane Dow</strong>
                                                <p class="mt-0 me-2" style="font-size: 13px;">CEO - AXA Group</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="carousel-item">
                                    <div class="col-md-4">
                                        <div class="card">
                                            <div class="card-img">
                                                <img src="./images/man1.jpg" class="img-fluid">
                                            </div>
                                            <div class="card-img-bottom"><strong>Dave Johnson</strong>
                                                <p class="mt-0 me-2" style="font-size: 13px;">Marketing Manager - Johnson's & Co</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="carousel-item">
                                    <div class="col-md-4">
                                        <div class="card">
                                            <div class="card-img">
                                                <img src="./images/man2.jpg" class="img-fluid">
                                            </div>
                                            <div class="card-img-bottom"><strong>Roger Smith</strong>
                                                <p class="mt-0 me-2" style="font-size: 13px;">CEO - Hi-Tech Intl.</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="carousel-item">
                                    <div class="col-md-4">
                                        <div class="card">
                                            <div class="card-img">
                                                <img src="./images/woman2.jpg" class="img-fluid">
                                            </div>
                                            <div class="card-img-bottom"><strong>Diana Russel</strong>
                                                <p class="mt-0 me-2" style="font-size: 13px;">Manager - Creativity Hub</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <a class="carousel-control-prev bg-transparent w-aut" href="#Carousel-2" role="button" data-bs-slide="prev">
                                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                            </a>
                            <a class="carousel-control-next bg-transparent w-aut" href="#Carousel-2" role="button" data-bs-slide="next">
                                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                            </a>
                        </div>
                    </div>
                </div>

Solution

  • if you want to make them stable in fixed positions use this code give your carousel position relative as a parent for your prev and next buttons.

    the top and transform make your buttons stay in the middle of your container.

         .carousel {
            position: relative;
         }           
         .carousel-control-prev , .carousel-control-next {
            position: absolute;
            top: 50%;
            transform: TranslateY(-50%);
         }
         .carousel-control-prev {
            right: auto;
            left: 20px;
         }
         .carousel-control-next {
            left: auto;
            right: 20px;
         }