Slick Carousel - 在模态框内浏览时图像卡在垂直方向 tab/window

Slick Carousel - Images stuck in vertical when browsing inside a modal tab/window

我正在使用带有模态内容的 Slick 轮播。一切正常,但是当尝试使用打开的 tab/window 中的 prev/next 处理程序从一个项目浏览到另一个项目时。图片卡在垂直方向。

<section>
  <div>
   <a data-open="first-project" class="card cell aos-init" data-aos="slide-up" aria-controls="project-1" aria-haspopup="true" tabindex="0">
    <div><img src="first-project-1.jpg"></div>
   </a>
  </div>

 <div>
  <a data-open="second-project" class="card cell aos-init" data-aos="slide-up" aria-controls="project-1" aria-haspopup="true" tabindex="0">
   <div><img src="second-project-1.jpg"></div>
  </a>
 </div>
</section>

<div class="reveal modal" id="first-project" data-reveal data-close-on-click="true" data-animation-in="slide-in-right" data-animation-out="slide-out-right" data-resize="first-project">

    <div><a data-open="second-project"><span>Next </span><i class="fas fa-caret-right"></i></a></div>

      <div class="carousel">
       <div><img src="first-project-1.jpg"></div>
       <div><img src="first-project-2.jpg"></div>
       <div><img src="first-project-3.jpg"></div>
       <div><img src="first-project-4.jpg"></div>
      </div>

<a class="close-button close-reveal-modal" aria-label="Close" data-close <span aria-hidden="true">X</span></a>
</div>

<div class="reveal modal" id="second-project" data-reveal data-close-on-click="true" data-animation-in="slide-in-right" data-animation-out="slide-out-right" data-resize="second-project">

     <div><a data-open="first-project"><i class="fas fa-caret-left"></i> <span class="pr-txt">Previous</span></a></div>

  <div class="carousel">
    <div><img src="second-project-1.jpg"></div>
    <div><img src="second-project-2.jpg"></div>
    <div><img src="second-project-3.jpg"></div>
    <div><img src="second-project-4.jpg"></div>
  </div>

X

$(document).on('open.zf.reveal', '[data-reveal]', function () {
  var modal = $(this);
$('.carousel').slick({
  autoplay: true,
  infinite: true,
  arrows:true,
  nextArrow: '<i class="fas fa-caret-right"></i',
  prevArrow: '<i class="fas fa-caret-left"></i',
  autoplaySpeed: 3000,
  speed: 1500,
  slidesToShow: 2,
  slidesToScroll:1  
 });
});

$(document).on('closed.zf.reveal', '[data-reveal]', function () {
  var modal = $(this);
  $('.carousel').slick('unslick');
});

问题可能是因为 'unslick',但我必须使用它才能在打开模态 window 时保持滑块正常工作。没有 'unslick',轮播无法正确加载(有时显示速度很快,有时显示滑块需要一些时间)。

谢谢。

你需要更换

 $('.carousel').slick(...)

$('.carousel', this).slick(...)

将仅针对当前模式中的 .carousel,它在显示回调中被 this 引用。

此外,在模态 close 上销毁浮油可能是个好主意,而不是在 closed 上销毁它(最好在模态关闭时销毁它,而不是在它关闭之后关闭)。如果它被销毁得太快,请将其留在 closed.


请注意您有严重的标记问题(即:您的 link src 属性未关闭)。您可能希望通过 HTML 验证器 运行 您的代码,直到您解决所有验证问题。

在那之后,以下应该起作用:

$(document).on('open.zf.reveal', '[data-reveal]', function () {
  $('.carousel', this).slick({
    autoplay: true,
    infinite: true,
    arrows:true,
    nextArrow: '<i class="fas fa-caret-right"></i',
    prevArrow: '<i class="fas fa-caret-left"></i',
    autoplaySpeed: 3000,
    speed: 1500,
    slidesToShow: 2,
    slidesToScroll:1  
  });
}).on('close.zf.reveal', '[data-reveal]', function () {
  $('.carousel', this).slick('unslick');
});