【发布时间】:2018-10-18 15:37:19
【问题描述】:
我正在使用Slick Slider 创建产品轮播。
此示例显示轮播中的 4 个产品。当您跳过幻灯片时,产品上方的导航匹配:Example
此示例显示 2 个产品。它正在克隆幻灯片以确保屏幕上总是有 3 个。这样做的问题是,当您跳过时,产品上方的导航会不同步:Example。基本上,当您在克隆幻灯片上时,当它跳到原始幻灯片时,导航会重新同步。
我怎样才能让它匹配?
这是我的完整代码:
// Category gallery
// Set preferred slidesToShow
var slidesToShow = 3; // always 3
// Clone the slides.
var $slides = $('.category-gallery .slide');
if ($slides.length < slidesToShow + 1) {
var $slide;
$slides.each( function(){
$slide = $(this).clone(true)
.insertAfter( $slide || $slides.last() )
.addClass('slick-cloned-2')
.attr('id', '');
});
}
$('.category-gallery').slick({
dots: false,
infinite: true,
slidesToShow: slidesToShow,
slidesToScroll: 1,
autoplay: false,
pauseOnHover:false,
focusOnSelect: false,
centerMode:true,
arrows: true,
});
$('a.category-nav[data-slide]').click(function(e) {
e.preventDefault();
var slideno = $(this).data('slide');
$('.category-gallery').slick('slickGoTo', slideno - 1);
});
$('a.category-nav[data-slide="1"]').addClass("highlighted-cat-nav");
$('.category-gallery').on('afterChange', function(event, slick, currentSlide, nextSlide){
$('a.category-nav').removeClass('highlighted-cat-nav');
$('a.category-nav[data-slide=' + (currentSlide + 1) + ']').addClass('highlighted-cat-nav');
});
问题似乎出在这一行:
$('a.category-nav[data-slide=' + (currentSlide + 1) + ']').addClass('highlighted-cat-nav');
【问题讨论】:
-
(currentSlide%2 + 1)怎么样,好像你只有 2 件产品就有这个问题。 -
嗨,罗伯。你为什么禁用
var i = currentSlide >= slidesToShow ? currentSlide - slidesToShow : currentSlide;?这应该工作,就像它一样。尝试重新启用它并将(currentSlide + 1)更改为i。 -
@SallyCJ 我发现了一些问题。当滑块中超过 3 个时,它会破坏导航,它只会转到第 3 个产品,然后返回到开始(而不是导航中的第 4 个项目),当少于 3 个产品时,它不会将它们居中。 (现在查看两个链接以查看问题)。不过距离很近。
-
“它正在克隆幻灯片以确保屏幕上总是有 3 个” - 你知道 slick 有一个内置选项吗?