Issues with Bootstrap carousel animations experiencing glitches

I recently implemented a carousel that showcases 3 items at a time and advances by one.

After clicking the next button, I noticed that the 2nd and 3rd items disappear momentarily before reappearing. This animation glitch is not smooth, and I would like all items to transition seamlessly. Additionally, when the 6th item (6th card) reaches the leftmost position, there is a blank space where card 1 should be located, causing a visual inconsistency in the carousel layout.

This project was created for my school assignment, and since I'm new to Bootstrap, I believe there are some missing CSS properties affecting the carousel's behavior. I initially copied code from this source but encountered issues with directly pasting it, leading me to make modifications in the CSS file.

$(document).ready(function() {
  $("#myCarousel").on("slide.bs.carousel", function(e) {
    var $e = $(e.relatedTarget);
    var idx = $e.index();
    var itemsPerSlide = 3;
    var totalItems = $(".carousel-item").length;

    if (idx >= totalItems - (itemsPerSlide - 1)) {
      var it = itemsPerSlide - (totalItems - idx);
      for (var i = 0; i < it; i++) {
        // append slides to end
        if (e.direction == "left") {
          $(".carousel-item")
            .eq(i)
            .appendTo(".carousel-inner");
        } else {
          $(".carousel-item")
            .eq(0)
            .appendTo($(this).find(".carousel-inner"));
        }
      }
    }
  });
});
.carousel-inner .active,
.carousel-inner .active+.carousel-item,
.carousel-inner .active+.carousel-item+.carousel-item {
  display: block;
}

.carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left),
.carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left)+.carousel-item,
.carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left)+.carousel-item+.carousel-item {
  transition: none;
  margin-right: initial;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

<div class="container-fluid">
  <h1 class="text-center mb-3">Bootstrap Multi-Card Carousel</h1>
  <div id="myCarousel" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner row w-100 mx-auto">
      <div class="carousel-item col-md-4 active">
        <div class="card">
          <img class="card-img-top img-fluid" src="http://placehold.it/800x600/f44242/fff" alt="Card image cap">
          <div class="card-body">
            <h4 class="card-title">Card 1</h4>
            <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
          </div>
        </div>
      </div>
      <div class="carousel-item col-md-4">
        <div class="card">
          <img class="card-img-top img-fluid" src="http://placehold.it/800x600/418cf4/fff" alt="Card image cap">
          <div class="card-body">
            <h4 class="card-title">Card 2</h4>
            <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
          </div>
        </div>
      </div>
...
    </a>
    <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>

Answer №1

The carousel is currently facing multiple CSS issues, and the highly recommended fix involves incorporating @Zim's solution from this specific post on Stack Overflow.

If you come across any glitches while sliding, you can check out my personal query related to how to add a gap between images in a carousel slider or troubleshoot sliding glitches.


$('.carousel .carousel-item').each(function(){
    var minPerSlide = 3;
    var next = $(this).next();
    if (!next.length) {
        next = $(this).siblings(':first');
    }
    next.children(':first-child').clone().appendTo($(this));

    for (var i=0;i<minPerSlide;i++) {
        next=next.next();
        if (!next.length) {
            next = $(this).siblings(':first');
        }

        next.children(':first-child').clone().appendTo($(this));
    }
});

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What is the best way to connect a string to a scoped variable in a view?

I'm looking to connect a string to a scope variable that will be determined by user input in an input field located within a specific view. The goal is for the combined string and scope variable value to appear in another div within the view. Here&ap ...

The properties are not compatible with the expected types for a Next.js page

On my next.js website, I have created a page.tsx that should take in two props. Even though Visual Studio Code is not showing any errors, I encountered the following error message during the website build: Failed to compile. app/(Dashboard)/(practice)/pra ...

Tips for finding the *index* of distinct values in an array

My goal is to identify the indexes of unique values in an array. While I've come across various methods for removing duplicate values from an array, such as those found here: How to get unique values in an array I'm currently struggling to find ...

It appears that when filtering data in Angular from Web Api calls, there is a significant amount of data cleaning required

It appears that the current website utilizes asp.net web forms calling web api, but I am looking to convert it to Angular calling Web api. One thing I have noticed is that I need to clean up the data. How should I approach this? Should I use conditional ...

You cannot use a relative path when inserting an image tag in React

I am having an issue with my img tag not loading the desired image when using a relative src path in my React project. When I try: //import { ReactComponent } from '*.svg'; import React from 'react'; import firebase from "./firebas ...

Bootstrap Navbar Not Extending Across Entire Width or Reaching Top Edge

I'm running into an issue with the Bootstrap navbar within my React project. The navbar is not extending across the entire width of the screen, resulting in empty space on both the left and right sides. Additionally, there is a gap between the navbar ...

Modify the paragraph's class upon clicking the radio button

I have been struggling with changing the color of <p> based on the radio button selected using two classes, red and blue. However, for some reason, it's not working as expected. If anyone has any insights or suggestions on how to fix this issue ...

Utilizing the jQuery inline form validation Engine to interact with an ASP.net webservice method

I have implemented the jQuery inline form validation Engine on my website, but I am facing an issue where my web method is not being triggered. Despite seeing the request being sent to the server in Fiddler, I am getting an HTTP:500 error with that request ...

What is the reason for needing to multiply all the numbers by ten in order to solve this floating point addition problem?

When dealing with floating point arithmetic in Javascript, it's common to see results like 0.2 + 0.1 = 0.30000000000000004, which can be confusing. However, a simple workaround is to multiply the numbers by 10, perform the operation, and then divide b ...

What is the best way to retrieve a MariaDB query result using Node.js?

I've been delving into the world of Node.js to enhance my web development skills, particularly in retrieving data from a mariaDB using SELECT queries and converting it into JSON for client requests. Despite scouring the internet and stackoverflow, I h ...

Bluemix / Watson Natural Language Processing API Key unrecognized

After conducting a thorough search, I couldn't find any similar issues within the past year. My current endeavor involves following this tutorial, however, it appears that there have been changes since its publication in April. I've successfully ...

What is the best way to retrieve data from a SQL database using Express?

I encountered a problem while working with Express Node.js. The error message "url not defined" keeps popping up. app.get("/id", function(req, res) { var id = req.param("id"); connection.query('SELECT `url` FROM dynamic_url where id ='+req.p ...

Guide to changing the border color in a Material-UI TextField component styled with an outline design

To complete the task, utilize the Material UI outlined input field (TextField component from "@material-ui/core": "^4.12.2",) and apply a custom blue color style to it. Here is the outcome of my work: https://i.sstatic.net/lw1vC.png C ...

leveraging express.js middleware alongside jwt and express-jwt for secured authentication in express framework

I am encountering an issue while using the express-jwt to create a custom middleware. The error message persists as follows: app.use(expressJwt({ secret: SECRET, algorithms: ['HS256']}).unless({path: ['/login', '/']})); ...

A step-by-step guide on recursively removing all empty array children [] from a nested JSON structure

When I receive a JSON response, I utilize nested JSON data from my GeoRegionCountries APIController and a custom class TreeView to structure the data for a plugin. The specific plugin I am using is a combo multi-select Treeview, accessible through this lin ...

Enhance your website with interactive AJAX callback animations using jQuery

I've encountered an issue while using a basic AJAX script in jQuery. I want to implement an easeInOut effect for the AJAX callback to change the HTML smoothly, but I'm not sure how to achieve this. Currently, when the response is received, the co ...

Enhance your website's user experience with dynamic zoom functionality using Javascript

Currently, I am in search of a javascript zoom library that functions similarly to this one. However, the majority of options available require the presence of thumbnails images for the unzoomed image, which is proving to be quite bothersome for me as I on ...

Issue encountered when trying to establish a NodeJS reverse SSH tunnel: unable to connect to serveo.net on port

Exploring Serveo Recently, I stumbled upon a fantastic service called Serveo that allows me to showcase my local apps on the Internet through reverse SSH tunneling. For instance, when someone connects to https://abc.serveo.net, it gets forwarded to http: ...

Leveraging Bootstrap in Django with Django_tables2

What steps should be taken to integrate Bootstrap with django-tables2? Do I need to specify DJANGO_TABLES2_TEMPLATE = 'django_tables2/bootstrap4.html' somewhere? If I want to utilize bootstrap5 instead, what changes do I need to make? ...

Generating an image in Fabric.js on a Node server following the retrieval of canvas data from a JSON

I've been trying to solve this problem for the past few days. In my app, users can upload two images, with one overlaying the other. Once they position the images and click a button, the canvas is converted to JSON format and sent to a node (express) ...