← All Carousels

tiny-slider

Accessibility Fixes Applied

  • Remove tabindex="-1" from nav buttons (library makes them unreachable)
  • tabindex management for cloned slides (loop mode creates focus traps)

Summary

Accessibility Analysis

Score: 58.5% — 24/41 accessibility issues resolved Median resolution time: 80.2 days

Open Issues (17)


Our Workarounds

1. Navigation Button Fix

tiny-slider sets tabindex="-1" on buttons in the controlsContainer:

setTimeout(() => {
  const controlButtons = document.querySelectorAll('#controls button')
  controlButtons.forEach((btn) => btn.removeAttribute('tabindex'))
}, 100)

2. Cloned Slides Focus Trap

In loop mode, tiny-slider clones slides. Focusable elements in clones trap focus:

const updateFocusableElements = () => {
  const allSlides = document.querySelectorAll('.tns-item')
  allSlides.forEach((slide) => {
    const isActive = slide.classList.contains('tns-slide-active')
    const focusables = slide.querySelectorAll('a, button')
    focusables.forEach((el) => {
      el.setAttribute('tabindex', isActive ? '0' : '-1')
    })
  })
}

Slide Index Calculation

indexChanged returns DOM index including clones. Use displayIndex for actual slide number:

slider.events.on('indexChanged', (info) => {
  const realIndex = (info.displayIndex - 1) % totalSlides
  updateDots(realIndex)
})