Slick Slider:构建比较滑块

Posted

技术标签:

【中文标题】Slick Slider:构建比较滑块【英文标题】:Slick Slider: building a comparison slider 【发布时间】:2020-08-12 06:59:35 【问题描述】:

我正在构建一个比较滑块。

这个想法是我有两个相邻的滑块,每个滑块都有相同的项目。

然后我根据每个滑块显示的内容过滤滑块。这样您就可以浏览两个滑块,而不会看到匹配的项目。

这是我目前所拥有的:

Codepen:https://codepen.io/flinch85/pen/MWaordK

$('.slider-1').slick(
  dots: false,
  arrows: true,
  infinite: true,
  speed: 300,
  slidesToShow: 1,
  slidesToScroll: 1,
  easing: 'ease'
);

$('.slider-2').slick(
  dots: false,
  arrows: true,
  infinite: true,
  speed: 300,
  slidesToShow: 1,
  slidesToScroll: 1,
  easing: 'ease',
  initialSlide: 1
);


 $('.slider-1').on('beforeChange', function () 
     $(this).slick('slickUnfilter');
   var otherIndex =  $('.slider-2 .slick-active').attr('data-slick-index');
   $(this).slick('slickFilter', 'div:not([data-slick-index="'+ otherIndex +'"])');
 );


 $('.slider-2').on('beforeChange', function (event, slick, slides, currentSlide, nextSlide) 
   $(this).slick('slickUnfilter');
   var otherIndex =  $('.slider-1 .slick-active').attr('data-slick-index');
   $(this).slick('slickFilter', 'div:not([data-slick-index="'+ otherIndex +'"])');

 ); 

它可以工作,除了第一次滑动第二个滑块时,它会滑回同一张幻灯片。并且在移动相反的滑块并返回时,它将在第一次移动时重复相同的滑块。

我尝试将slickUnfilter 函数移动到beforeChangeslickFilter 以发生afterChange。这可行,但会弄乱动画,因为下一项仅在幻灯片发生后才会更改。

【问题讨论】:

【参考方案1】:

在 beforeChange 函数中使用 otherIndex+1

otherindex 仍然指向当前元素

$('.slider-1').on('beforeChange', function () $(this).slick('slickUnfilter'); var otherIndex = $('.slider-2 .slick-active').attr('data-slick-index'); $(this).slick('slickFilter', 'div:not([data-slick-index="'+ otherIndex+1 +'"])'); );

https://codepen.io/vkv88/pen/OJygEgK?editors=1010

【讨论】:

您好,感谢您的回答,但该示例并不能解决我的问题。我不想同时在屏幕上看到相同的两个幻灯片编号。【参考方案2】:

在这里,我制作了 2 个不同的旋转木马。 第一个是“一个图像”传送带,第二个是“3 个图像视图传送带”。以及“通过活动幻灯片”比较它们的 js 代码。

<div class="left-side-sec-lnd-child" id="pc-only-slide">
  <!--Main slider with only ONE main viewed image as active-->
  <!--START------------------------------>
  <div class="slider slider-single">
    <div class="slick-slide"><img data-lazy="img/slide-one.jpg"  ></div>
    <div class="slick-slide"><img data-lazy="img/slide-two.jpg"  ></div>
    <div class="slick-slide"><img data-lazy="img/slide-three.jpg"  ></div>
  </div>
  <!--END==============================-->
</div>
<div class="right-side-sec-lnd-child">
  <div class="inside-bot-sec-lnd"style="width:100%;">
    <p class="sec-lnd-b-header">A journey not to be<br>forgotten</p>
    <!--NAV slider as child with amount of small images-->
    <!--START------------------------------>
    <div class="variable-width slider-nav" style="width:100%;">
       <div class="slick-slide"><img data-lazy="img/slide-one.jpg"  ></div>
       <div class="slick-slide"><img data-lazy="img/slide-two.jpg"  ></div>
       <div class="slick-slide"><img data-lazy="img/slide-three.jpg"  ></div>
    </div>
  <!--END==============================-->
  </div>
 </div>

 //General carousel - big image view
  $('.slider-single').slick(
     slidesToShow: 1,
     slidesToScroll: 1,
     arrows: false,
     fade: true,
     asNavFor: '.slider-nav'
  );
  //This is for carousel what is working as nav for general carousel
  $('.variable-width').slick(
     slidesToShow: 1,
     slidesToScroll: 1,
     asNavFor: '.slider-single',
     dots: false,
     centerMode: true,
     focusOnSelect: true,
     variableWidth: true
  );

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 谢谢!完成。

以上是关于Slick Slider:构建比较滑块的主要内容,如果未能解决你的问题,请参考以下文章

Slick Slider (Ken Wheeler) - 隐藏滑块直到加载

Slick Slider - 在多个滑块上显示计数器

Slick Slider 在网站上不起作用?

Slick Slider - 从另一个页面创建链接

使用slick.js的“分层”滑块

光滑的滑块选项会发生变化