JSFiddle - React, Tailwind, and code Playground

by Yurii Shpylovyi

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/uikit.min.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/uikit.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/uikit-icons.min.js"></script>
<div class="uk-padding tm-width-xxlarge">
  <div class="uk-position-relative uk-visible-toggle" data-uk-slider>
    <div id="tm-slider-label" class="uk-label uk-margin"></div>
    <div class="uk-slider-items uk-child-width-1-1 uk-light">
        <div class="uk-transition-toggle tm-slide" tabindex="0">
            <img src="https://getuikit.com/docs/images/slider1.jpg" width="400" height="600" alt="">
            <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">1</h1></div>
        </div>
        <div class="uk-transition-toggle tm-slide">
            <img src="https://getuikit.com/docs/images/slider2.jpg" width="400" height="600" alt="">
            <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">2</h1></div>
        </div>
        <div class="uk-transition-toggle tm-slide">
            <img src="https://getuikit.com/docs/images/slider3.jpg" width="400" height="600" alt="">
            <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">3</h1></div>
        </div>
        <div class="uk-transition-toggle tm-slide" 
            <img src="https://getuikit.com/docs/images/slider4.jpg" width="400" height="600" alt="">
            <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">4</h1></div>
        </div>
        <div class="uk-transition-toggle tm-slide">
            <img src="https://getuikit.com/docs/images/slider5.jpg" width="400" height="600" alt="">
            <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">5</h1></div>
        </div>
        <div class="uk-transition-toggle tm-slide">
            <img...

CSS

.tm-width-xxlarge {
  width: 300px;
}

JavaScript

// Get the slides
let slides = document.querySelectorAll('.uk-slider-items .tm-slide');

// Get the div where we will display the label
let sliderLabelDiv = document.getElementById('tm-slider-label');

// Function to update the text in the div
function updateSliderLabel(currentSlideIndex) {
    // Format the label as "1 ----- 10"
    let totalSlides = slides.length; // Get the total number of slides
    let currentSlideNumber = currentSlideIndex + 1; // Get the current slide number (1-based)
    let formattedLabel = `${currentSlideNumber} ----- ${totalSlides}`; // Create the formatted label
    
    // Update the label text in the div
    sliderLabelDiv.textContent = formattedLabel;
}

// Initialize with the first slide
updateSliderLabel(0); // Starts with the first slide

// Event handler for slide change
UIkit.util.on('.uk-slider-items', 'itemshown', function (event) {
    let activeSlideIndex = Array.from(slides).indexOf(event.target); // Get the index of the active slide
    updateSliderLabel(activeSlideIndex); // Update the label based on the active slide
});