如何在Slick Carousel中添加随导航点击更新的进度条
滑块导航与进度条同步实现
需求说明:
我有一组编号1-5的滑块导航图标,点击任意图标时,绿色进度条会随之更新。例如点击第2项时,进度条的绿色部分会显示40%……无论Slick Carousel中有多少项,核心需求是绿色背景能同步更新,逻辑类似slickCount/100或slickCount*100,我的进度条类名为"progress-bar__inner"。
更新说明:代码已更新。
HTML代码
<div class="container"> <div class="slider slider-for"> <div class="slider-content">1</div> <div class="slider-content">2</div> <div class="slider-content">3</div> <div class="slider-content">4</div> <div class="slider-content">5</div> </div> <div class="slider-nav-wrapper"> <div class="slider slider-nav"> <div class="icons">1</div> <div class="icons">2</div> <div class="icons">3</div> <div class="icons">4</div> <div class="icons">5</div> </div> <div class="progress-bar"> <div class="progress-bar__inner"></div> </div> </div> </div>
CSS代码
body{ background:#ccc; } .container { font-family:Arial; max-width:800px; display:block; margin:0 auto; position: relative; } .slider-content { background: #fff; padding: 3rem; font-size: 3rem; text-align: center; height: 200px; } .slider-nav-wrapper { position: absolute; left:3rem; right: 3rem; bottom: 3rem; } .slider-nav-wrapper .icons { background: black; color: #3498db; font-size: 1rem; margin: 0 .5rem; position: relative; text-align: center; display: flex; align-items: center; justify-content: center; width: 50px; height: 50px; } .progress-bar { width: 100%; height: 10px; border-radius: 10px; background: gray; position: relative; overflow: hidden; margin-top: 1rem; } .progress-bar__inner { background: green; position: absolute; height: 10px; top: 0; left: 0; width: 0; transition: width 0.3s ease; }
JavaScript代码
$('.slider-for').slick({ slidesToShow: 1, slidesToScroll: 1, arrows: false, fade: false, draggable: false, swipe: false, swipeToSlide: false, touchMove: false, asNavFor: '.slider-nav' }); $('.slider-nav').slick({ slidesToShow: 5, slidesToScroll: 1, asNavFor: '.slider-for', dots: false, arrows: false, focusOnSelect: true, variableWidth: true }); $('.slider-nav .icons').on('click', function() { var index = $(this).index(); var progressBar = $('.progress-bar__inner'); var itemWidth = 100 / $('.slider-nav .icons').length; var progress = (index + 1) * itemWidth; progressBar.css('width', progress + '%'); });
内容的提问来源于stack exchange,提问作者clarkf
相关产品推荐
相关产品推荐

