Search code examples
htmlcss

Autoscroll Carousel Doesn't get responsively cut off


My site's carousel works when the website is at a normal desktop size such as 1440px width, but when I start shrinking it down, it doesn't get cut off like how it does on the right side. How can I fix this? You can see the issue in this picture, where it just isn't getting cut off and its creating a bunch of white space on the site in other areas because of this.Unresponsive carousel

.pdp-examples {
    display: flex;
    flex-direction: column;
    align-items: center; /* Centers all children horizontally */
    justify-content: center;
    padding: 48px 0 72px;
    background: #F2F2F2;
    border-bottom: 1px solid rgba(0, 0, 0, 0.09);
}



.pdp-examples p {
margin-top: 12px;
margin-bottom: 32px;
color: var(--Subheading, #676464);
text-align: center;
font-family: "Instrument Sans";
font-size: 20px;
font-style: normal;
font-weight: 400;
line-height: normal;
}

@keyframes scroll {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(calc(-100% - 16px));
    }
}

.pdp-example-carousel-container {
    padding-bottom: 32px;
    max-width: 1160px;  /* or whatever container width makes sense */
    margin: 0 auto;     /* centers the carousel at large widths */
    overflow: hidden;   /* CRITICAL: ensures the scrolled images get clipped */
    position: relative;
}
.pdp-example-carousel-container::after {
    content: "";
    position: absolute;
    top: 0; 
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none; /* So mouse events pass through */
    z-index: 2;           /* Ensure it's above the images */
    background: linear-gradient(90deg, rgba(250, 250, 250, 0.50) 5%, rgba(250, 250, 250, 0.00) 20%, rgba(250, 250, 250, 0.00) 85%, rgba(250, 250, 250, 0.50) 95%);
  }

  


.pdp-example-carousel {
    max-width: 1160px;
    margin: 0 auto;
    padding-bottom: 16px;
    overflow: hidden; /* Hide the overflow */
    position: relative;

    width: 100%;
}

.slide-track {
    display: flex;
    white-space: nowrap;
    animation: scroll 50s linear infinite;
    gap: 16px; /* Add gap between images */
}

.pdp-carousel-slide {
    width: 169px;
    height: 169px;
    flex-shrink: 0; /* Prevent shrinking of slides */
}

.pdp-carousel-slide img {
    max-width: 100%;  /* shrinks if needed */
    height: auto;
    display: block;
  }

/* Clone the first item at the end using ::after */
.slide-track::after {
    content: "";
    display: inline-block;
    width: 169px; /* Same as slide width */
    height: 169px;
}
            <section class="pdp-examples">
                <h2>Examples</h2>
                <p>The type of shit flowscope can make</p>
                <section class="pdp-example-carousel-container">
                <div class="pdp-example-carousel">
                    <div class="slide-track">
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-1.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-2.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-3.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-4.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-5.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-6.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-7.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-8.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-9.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-10.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-11.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-12.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-13.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-14.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-15.png" height="169" width="169" alt="" />
                        </div>
                    </div>
                </div>
                <div class="pdp-example-carousel">
                    <div class="slide-track">
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-8.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-9.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-10.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-11.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-12.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-13.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-14.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-15.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-1.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-2.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-3.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-4.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-5.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-6.png" height="169" width="169" alt="" />
                        </div>
                        <div class="pdp-carousel-slide">
                            <img src="/Flowscope/img/examples/example-7.png" height="169" width="169" alt="" />
                        </div>
                    </div>
                </div>
                </section>


Solution

  • Just add overflow-x: hidden; to .pdp-examples and your issue will be fixed but if there is any specific reason that you cannot use it then do share that. Below is working example.

    .pdp-examples {
      overflow-x: hidden;  /* <- Add this */
      display: flex;
      flex-direction: column;
      align-items: center;
      /* Centers all children horizontally */
      justify-content: center;
      padding: 48px 0 72px;
      background: #F2F2F2;
      border-bottom: 1px solid rgba(0, 0, 0, 0.09);
    }
    
    
    
    .pdp-examples p {
      margin-top: 12px;
      margin-bottom: 32px;
      color: var(--Subheading, #676464);
      text-align: center;
      font-family: "Instrument Sans";
      font-size: 20px;
      font-style: normal;
      font-weight: 400;
      line-height: normal;
    }
    
    @keyframes scroll {
      0% {
        transform: translateX(0);
      }
    
      100% {
        transform: translateX(calc(-100% - 16px));
      }
    }
    
    .pdp-example-carousel-container {
      padding-bottom: 32px;
      max-width: 1160px;
      /* or whatever container width makes sense */
      margin: 0 auto;
      /* centers the carousel at large widths */
      overflow: hidden;
      /* CRITICAL: ensures the scrolled images get clipped */
      position: relative;
    }
    
    .pdp-example-carousel-container::after {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      pointer-events: none;
      /* So mouse events pass through */
      z-index: 2;
      /* Ensure it's above the images */
      background: linear-gradient(90deg, rgba(250, 250, 250, 0.50) 5%, rgba(250, 250, 250, 0.00) 20%, rgba(250, 250, 250, 0.00) 85%, rgba(250, 250, 250, 0.50) 95%);
    }
    
    
    
    
    .pdp-example-carousel {
      max-width: 1160px;
      margin: 0 auto;
      padding-bottom: 16px;
      overflow: hidden;
      /* Hide the overflow */
      position: relative;
    
      width: 100%;
    }
    
    .slide-track {
      display: flex;
      white-space: nowrap;
      animation: scroll 50s linear infinite;
      gap: 16px;
      /* Add gap between images */
    }
    
    .pdp-carousel-slide {
      width: 169px;
      height: 169px;
      flex-shrink: 0;
      /* Prevent shrinking of slides */
    }
    
    .pdp-carousel-slide img {
      max-width: 100%;
      /* shrinks if needed */
      height: auto;
      display: block;
    }
    
    /* Clone the first item at the end using ::after */
    .slide-track::after {
      content: "";
      display: inline-block;
      width: 169px;
      /* Same as slide width */
      height: 169px;
    }
    <section class="pdp-examples">
      <h2>Examples</h2>
      <p>The type of shit flowscope can make</p>
      <section class="pdp-example-carousel-container">
        <div class="pdp-example-carousel">
          <div class="slide-track">
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-1.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-2.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-3.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-4.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-5.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-6.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-7.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-8.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-9.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-10.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-11.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-12.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-13.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-14.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-15.png" height="169" width="169" alt="" />
            </div>
          </div>
        </div>
        <div class="pdp-example-carousel">
          <div class="slide-track">
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-8.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-9.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-10.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-11.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-12.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-13.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-14.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-15.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-1.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-2.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-3.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-4.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-5.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-6.png" height="169" width="169" alt="" />
            </div>
            <div class="pdp-carousel-slide">
              <img src="/Flowscope/img/examples/example-7.png" height="169" width="169" alt="" />
            </div>
          </div>
        </div>
      </section>