The following is the basic JavaScript setup for a Splide slider with only one slide showing at a time. By default, it has pagination (which only shows if there’s more than one slide), and a pause/play button.

if(document.querySelector(".hero__slider")) {
      const homeSplide = new Splide( '.hero__slider', {
         type:          'loop',
         perPage:       1,
         arrows:        false,
         pagination:    true,
         autoplay    : !inCms,
         // rewind      : true,
         pauseOnHover: false,
         pauseOnFocus: false,  
         accessibility: !inCms,
         drag:          !inCms
      });

      homeSplide.on('pagination:mounted', function ( data ) {
         document.querySelector('#homeSliderControls .pagination').appendChild(data.list);
      });

      let homeSplideControlButton = homeSplide.root.querySelector('.slider-remote');

      homeSplide.on('autoplay:play', function () {
         homeSplideControlButton.classList.remove("paused");
         homeSplideControlButton.classList.add("playing");
         homeSplideControlButton.setAttribute( 'aria-label', 'Pause slider' );
         homeSplideControlButton.querySelector(".action").textContent = 'Pause';
      });

      homeSplide.on('autoplay:pause', function () {
         homeSplideControlButton.classList.remove("playing");
         homeSplideControlButton.classList.add("paused");
         homeSplideControlButton.setAttribute( 'aria-label', 'Play slider' );
         homeSplideControlButton.querySelector(".action").textContent = 'Play';
      });
      
      homeSplide.mount();

      homeSplideControlButton.addEventListener( 'click', function () {
        var autoplay = homeSplide.Components.Autoplay;
        if ( autoplay.isPaused() ) { autoplay.play();
        } else { autoplay.pause(); }
      } );
   }

Example Sites

Tags: splide, slider, BS5, javascript