Skip to main content

Issues with CSS and JavaScript for creating a carousel with multiple images

I am trying to create a carousel with multiple images using HTML, CSS, and JavaScript, but I am having trouble getting it to work properly. The first image displays correctly, but the second image only shows up partially or not at all. I have tried adjusting the CSS, but it doesn't seem to be solving the issue.

Here is my current code:

document.addEventListener('DOMContentLoaded', () => {
    const track = document.querySelector('.carousel_track');
    const slides = Array.from(track.children);
    const nextButton = document.querySelector('button.button-carousel.next');
    const prevButton = document.querySelector('button.button-carousel.prev');
    const trackWidth = track.getBoundingClientRect().width;
    const slideWidth = trackWidth / slides.length;

    // const setSlide = (slide, index) => {
    //   slide.style.left = slideWidth * index + 'px';
    // };
    const setSlide = (slide, index) => {
        const offset = (track.offsetWidth - slideWidth) / 2;
        slide.style.left = slideWidth * index + offset + 'px';
      };
    slides.forEach(setSlide);

    const moveToSlide = (track, currS, nextS) => {
      track.style.transform = `translateX(-${nextS.style.left})`;
      currS.classList.remove('current-slide');
      nextS.classList.add('current-slide');
    };

    prevButton.addEventListener('click', e => {
      const currS = track.querySelector('.current-slide');
      const prevS = currS.previousElementSibling || slides[slides.length - 1];
      moveToSlide(track, currS, prevS);
    });

    nextButton.addEventListener('click', e => {
      const currS = track.querySelector('.current-slide');
      let nextS = currS.nextElementSibling;
      if (!nextS) {
        nextS = slides[0];
      }
      moveToSlide(track, currS, nextS);
    });
  });
.carousel {
  position: relative;
  height: 600px;
  width: 90%;
  margin: 0 auto;
  overflow: hidden;
}

.carousel_track {
  display: flex;
  padding: 0;
  margin: 0;
  list-style: none;
  position: relative;
  height: 100%;
  width: 200%; /* Set the width of the carousel_track to be twice the width of one slide */
  transition: transform 0.3s ease-in-out;
}


.slide {
  position: relative; /* Change the position of the slide to relative */
  display: inline-block; /* Set the display of the slide to inline-block */
  flex: 0 0 auto;
  width: slideWidth;
}

.slide img {
  width: 100%;
  height: 300px;
}


button.button-carousel.prev {
  position: absolute;
  top: 50%;
  left: 0;
  z-index: 50;
  border-radius: 5px;
  border: none;
  padding: 30px;
  transform: translateY(-50%);
}

button.button-carousel.next {
  position: absolute;
  top: 50%;
  right: 0;
  z-index: 50;
  border-radius: 5px;
  border: none;
  padding: 30px;
  transform: translateY(-50%);
}
 <div class="carousel">
    <button class="button-carousel prev"><svg width="14.6" height="27" viewBox="0 0 16 27"
        xmlns="http://www.w3.org/2000/svg">
        <path d="M16 23.207L6.11 13.161 16 3.093 12.955 0 0 13.161l12.955 13.161z" fill="#000000"></path>
      </svg></button>
    <button class="button-carousel next"><svg width="14.6" height="27" viewBox="0 0 16 27"
        xmlns="http://www.w3.org/2000/svg">
        <path d="M16 23.207L6.11 13.161 16 3.093 12.955 0 0 13.161l12.955 13.161z" fill="#000000"></path>
      </svg></button>
    <ul class="carousel_track">
      <li class="slide current-slide"><img class="slideimg" src="img1.webp" alt="image"></li>
      <li class="slide"><img class="slideimg" src="img4.webp" alt="image"></li>
    </ul>
</div>

Can anyone help me troubleshoot this issue and get the carousel to display all the images properly?

I tried to create a simple carousel with 2 images but right now i am getting only one image to move. i want both the images to move when i click on the next and prev buttons.

Via Active questions tagged javascript - Stack Overflow https://ift.tt/0FHRokm

Comments

Popular posts from this blog

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...