You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slick Carousel数字计数器实现及无特定CSS的JS替代方案

解决导航计数同步与动态总数的纯JS方案

需求回顾

  • 左侧.left__count显示当前导航索引(两位数字格式,如01)
  • 右侧.right__count显示导航总数(两位数字格式,如05)
  • 点击导航图标或滑块切换时,左侧计数同步更新
  • 新增导航元素后,右侧总数自动更新
  • 移除原CSS中.slick-track { left: 0 !important; }的强制修正,改用JS实现

实现代码与步骤

1. 初始化计数

页面加载完成后,先设置初始的当前索引和总数:

const navItems = document.querySelectorAll('.nav__item');
const leftCount = document.querySelector('.left__count');
const rightCount = document.querySelector('.right__count');

// 设置初始总数(基于实际导航元素数量,不受Slick克隆项干扰)
rightCount.textContent = String(navItems.length).padStart(2, '0');
// 设置初始当前索引(默认第一个)
let currentIndex = 0;
leftCount.textContent = String(currentIndex + 1).padStart(2, '0');

2. 导航点击同步计数与滑块

给每个导航图标绑定点击事件,同步更新计数并切换到对应滑块:

navItems.forEach((item, index) => {
  item.addEventListener('click', () => {
    currentIndex = index;
    leftCount.textContent = String(currentIndex + 1).padStart(2, '0');
    // 调用Slick官方API切换滑块
    $('.slick-slider').slick('slickGoTo', index);
  });
});

3. 滑块切换同步计数

监听Slick的afterChange事件,确保滑块自动切换时计数同步:

$('.slick-slider').on('afterChange', (event, slick, currentSlide) => {
  currentIndex = currentSlide;
  leftCount.textContent = String(currentIndex + 1).padStart(2, '0');
});

4. 动态更新总数

如果有新增导航元素的场景,用以下方式自动更新总数:

// 手动更新总数的函数
function updateTotalNavCount() {
  const updatedNavItems = document.querySelectorAll('.nav__item');
  rightCount.textContent = String(updatedNavItems.length).padStart(2, '0');
}

// 用MutationObserver监听导航容器的DOM变化,自动更新总数
const navContainer = document.querySelector('.nav__container');
const observer = new MutationObserver(updateTotalNavCount);
observer.observe(navContainer, { childList: true });

5. 移除强制CSS

删除原代码中的:

.slick-track {
  left: 0 !important;
}

核心优势

  • 完全基于导航元素的实际数量计算总数,规避Slick克隆元素干扰
  • 使用Slick官方API实现滑块与导航的双向同步,无CSS强制修改的兼容性问题
  • 支持动态新增导航元素,总数自动更新
  • 计数格式统一为两位数字,符合需求展示效果

内容的提问来源于stack exchange,提问作者clarkf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:55:01