jquery - Slick Carousel - 在模式选项卡/窗口内浏览时图像卡在垂直位置

标签 jquery html css carousel slick.js

我正在使用带有模态内容的 Slick 轮播。一切正常,但是当尝试使用打开的选项卡/窗口中的上一个/下一个处理程序从一个元素浏览到另一个元素时。图像卡在垂直位置。

<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”,但我必须使用它才能在打开模态窗口时保持 slider 正常工作。如果没有“unslick”,轮播无法正确加载(有时显示速度很快,有时显示 slider 需要一些时间)。

谢谢。

最佳答案

你需要更换

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

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

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

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


请注意您有严重的标记问题(即:您的链接 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');
});

关于jquery - Slick Carousel - 在模式选项卡/窗口内浏览时图像卡在垂直位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466838/

相关文章:

c# - jQuery.load() 编辑的内容中的 UpdatePanel 在回发时脱离页面

html - 互联网浏览器 : Float and Clear Issues

javascript - 即使我按下退格键/删除键,该功能仍保持事件状态。并在加载页面时获取选择的值

javascript - 如何使用 "for loop"更改变量名称?

使用 FormData 的 javascript 文件上传问题,收到空的 $_FILES

css: FlexBox 里面的 FlexBox

css - 流体宽度如何工作?

jquery - 如何计算流体宽度导航菜单的正确宽度?

javascript - 未捕获的类型错误 : undefined is not a function while using . prepend()

jquery - JQuery 中的水平动画