mmdevcodes / a11y-slider

Library for simple and accessible sliders
https://a11yslider.js.org/
MIT License
53 stars 7 forks source link

Slider only being created in the DOM below ~750px breakpoint #43

Open tbeckman1234 opened 9 months ago

tbeckman1234 commented 9 months ago

I can see the slider being created in the DOM only when screen size goes below about a 750px breakpoint.

Above this level, the .a11y-slider is not being created and is being removed if it is present in the DOM.

This is my implementation:

HTML:

<section class="carousel | padding-block-900 text-center">
        <h2 class="fs-secondary-heading fw-bold">What they've said</h2>
        <!--Carousel here-->
        <ul class="slider">
          <li>
            <img src="images/avatar-anisha.png" alt="">
            <div class="slider-content | flow" style="--flow-spacer: 1rem">
              <h3 class="fw-bold">Anisha Li</h3>
              <p data-width="wide">"Manage has supercharged our team's workflow. The ability to maintain visiblity on larger milestones at all times keeps everyone motivated."</p>
            </div>
          </li>
          <li>
            <img src="images/avatar-ali.png" alt="">
            <div class="slider-content | flow" style="--flow-spacer: 1rem">
              <h3 class="fw-bold">Ali Bravo</h3>
              <p data-width="wide">"We have been able to cancel so many other subscriptions since using Manage. There is no more cross-channel confusion and everyone is much more focused."</p>
            </div>
          </li>
          <li>
            <img src="images/avatar-richard.png" alt="">
            <div class="slider-content | flow" style="--flow-spacer: 1rem">
              <h3 class="fw-bold">Richard Watts</h3>
              <p data-width="wide">"Manage allows us to provide structure and process. It keeps us organized and focused. I can't stop recommending them to everyone I talk to!"</p>
            </div>
          </li>
          <li>
            <img src="images/avatar-shanai.png" alt="">
            <div class="slider-content | flow" style="--flow-spacer: 1rem">
              <h3 class="fw-bold">Shanai Gough</h3>
              <p data-width="wide">"Their software allows us to track, manage, and collaborate on our projects from anywhere. It keeps the whole team in sync without being intrusive."</p>
            </div>
          </li>
        </ul>
          <button class="button">Get Started</button>
      </section>

Javascript:

const slider = new A11YSlider(document.querySelector(".slider"), {
    dots: true,
    arrows: false,

    responsive: {
      480: {
        dots: false, // dots disabled above 480
      },
    },
  });

CSS:

  /* slider */

.slider {
  display: flex;
  gap: var(--size-600);
  list-style: none;
}

.a11y-slider-container {
  margin-block: var(--size-700);
  margin-inline: var(--size-400);
}

.slider > * {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
}

@media (min-width: 30em) {
  .slider {
    scroll-padding-inline: 25px;
  }
  .a11y-slider-container {
    margin-inline: 0;
  }
  .slider > * {
    width: 50%;
  }
}

@media (min-width: 47em) {
  .slider > * {
    width: 28%;
  }
}

.slider-content {
  border-radius: var(--size-100);
  padding: var(--size-700) var(--size-600) var(--size-600);
  background: var(--clr-neutral-200);
}

.slider img {
  width: var(--size-800);
  position: relative;
  top: calc(var(--size-800) / 2);
  margin-inline: auto;
}

.a11y-slider-dots {
  display: flex;
  justify-content: center;
  margin-block: var(--size-500);
  gap: var(--size-300);
}

.a11y-slider-dots li {
  display: block;
  width: 12px;
  height: 12px;
  padding: 0;
}

.a11y-slider-dots li button {
  display: block;
  font-size: 0;
  text-indent: -9999px;
  background: transparent;
  border: 1px solid var(--clr-accent-400)
  !important;
  width: 100%;
  height: 100%;
  border-radius: 100%;
}

.a11y-slider-dots li button.active {
  background: var(--clr-accent-400);
}