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');
});
我正在使用带有模态内容的 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');
});