您使用的name
的id
爲多個項目,這是無效的。 id
必須始終是唯一的。除了使用id
定位幻燈片名稱外,您還可以指定一個通用類,例如slide-name
爲了使功能按照您的意願工作,您必須使用在afterChange
事件之後運行的名爲的附加事件。但是,在引入其他事件處理程序之前,需要使用beforeChange
事件跟蹤當前幻燈片,然後檢查下一張幻燈片是否與afterChange
事件中的當前幻燈片匹配。如果當前幻燈片和下一張幻燈片匹配(未發生變化),請跳過動畫。如果它們不匹配(發生更改),請觸發動畫。
僅噹噹前幻燈片和下一張幻燈片不匹配(即活動幻燈片已更改)時,才使用afterChange
事件啓動動畫。使用變量來跟蹤當前和下一張幻燈片分別爲currSlide
和nextSlide
。然後在事件中,您可以通過比較currSlide
到nextSlide
來觸發動畫。
最後,我添加了一個輔助方法,將class
的hidden
應用於當前不可見的幻燈片名稱。這可以防止文本過早出現並破壞動畫。我在init
以及事件中調用此方法。
更新的HTML
<div id="my_slider">
<div class="item">
<div id="name1" class="slide-name hidden">slide1</div>
</div>
<div class="item">
<div id="name2" class="slide-name hidden">slide2</div>
</div>
<div class="item">
<div id="name3" class="slide-name hidden">slide3</div>
</div>
</div>
jQuery的
$('#my_slider').on('init', function(event, slick) {
$('.slick-active .slide-name').removeClass('hidden');
applyHiddenClass();
})
$('#my_slider').slick({
arrows: false,
speed: 900,
});
var currSlide = 0;
var nextSlide = 0;
function applyHiddenClass() {
$.each($('.slick-slide'), function() {
if ($(this).attr('aria-hidden') == 'true') {
$(this).find('.slide-name').addClass('hidden');
} else {
$(this).find('.slide-name').removeClass('hidden');
}
});
}
$('#my_slider').on('afterChange', function(event, slick, currentSlide) {
nextSlide = currentSlide;
if (nextSlide !== currSlide) {
$('.slick-active .slide-name').removeClass('animated zoomIn');
$('.slick-active .slide-name').addClass('hidden');
}
});
$('#my_slider').on('setPosition', function(event, slick, currentSlide) {
if (nextSlide !== currSlide) {
$('.slick-active .slide-name').removeClass('hidden');
$('.slick-active .slide-name').addClass('animated zoomIn');
}
applyHiddenClass();
});
$('#my_slider').on('beforeChange', function(event, slick, currentSlide) {
currSlide = currentSlide;
});
Fiddle Demo
如果您有任何疑問,請詢問。
您是否在談論幻燈片文本上的縮放動畫「滑件」? – Yass