Owl 轮播当前幻灯片和带循环选项的幻灯片数量 (php)
Owl Carousel Current Slide and Number of Slides WITH loop option (php)
到目前为止,我已经研究了几个问题,none 我看到的这些问题确实帮助我找到了解决方案。
我需要在使用 Owl 轮播的滑块上设置一个计数器。我需要获取当前幻灯片计数和滑块中的项目数。
问题是,我告诉滑块在到达最后一张幻灯片时循环回到开头。
除了一件事,我看过的一些代码示例是有效的。似乎 Owl Carousel 在开头添加了 2 个项目,在结尾添加了 2 个项目,并附加了 class cloned
。这与我一直在使用的代码计数混淆了。
我试图隔离克隆的计数并且有效,但是 currentIndex
是我遇到问题的地方。试图使计数准确是行不通的。如果我说 4 张幻灯片,currentIndex
从 3 开始到 8,而 totalItems
显示 4。
感谢任何帮助!
我正在使用OwlCarousel 2
这是我使用的代码:
var = mapSliderOptions = {
loop: true,
margin: 0,
items: 1,
autoWidth: false,
mouseDrag: true,
touchDrag: true,
dots: false,
onInitialized : counter, //When the plugin has initialized.
onTranslated : counter,
responsive: {
0: {
autoplay: true,
autoplayTimeout: 5000,
autoplayHoverPause: true
},
768: {
autoplay: false,
items: 1
}
}
},
function counter(event) {
var totalItems = $('.owl-item:not(.cloned)' ).length;
var currentIndex = $('div.active').index() + 1 ;
$('#counter').html("item "+ currentIndex +" of " + totalItems);
}
$('.map-hero-slider').owlCarousel( mapSliderOptions );
所以这个答案是为那些使用 php 和 运行 一个 foreach
循环的人准备的。
我所做的是用增量数字设置 data-dot
。然后我计算了数组中项目的数量,并将其作为项目的最终计数通过。
然后调用容器并使用 CSS 的一些绝对位置,我能够 "trick" 前端查看器在某种意义上进入计数。
不是很有效,但对我有用。
我在网上找到了这个解决方案,效果很好
https://codepen.io/maer2k/pen/qPVWEd
我把它分解成更容易理解的代码。
var gallery = $('.owl-carousel');
gallery.owlCarousel({
items: 1,
loop: true,
onInitialized: counter,
onChanged: counter,
});
function counter(event) {
if (!event.namespace) {
return;
}
var slides = event.relatedTarget;
$('.slider-counter').text(slides.relative(slides.current()) + 1 + '/' + slides.items().length);
}
它做到了它所承诺的。但我不知道 event.relatedTarget 和 .relative() 实际上做了什么,这是我第一次看到它们的实现。此外,命名空间相关的 if 语句并不是真正需要它才能工作。
它看起来不像是 owl-carousel 基本代码。如果有人试图向我解释这个魔法是如何工作的,我会很高兴:D
到目前为止,我已经研究了几个问题,none 我看到的这些问题确实帮助我找到了解决方案。
我需要在使用 Owl 轮播的滑块上设置一个计数器。我需要获取当前幻灯片计数和滑块中的项目数。
问题是,我告诉滑块在到达最后一张幻灯片时循环回到开头。
除了一件事,我看过的一些代码示例是有效的。似乎 Owl Carousel 在开头添加了 2 个项目,在结尾添加了 2 个项目,并附加了 class cloned
。这与我一直在使用的代码计数混淆了。
我试图隔离克隆的计数并且有效,但是 currentIndex
是我遇到问题的地方。试图使计数准确是行不通的。如果我说 4 张幻灯片,currentIndex
从 3 开始到 8,而 totalItems
显示 4。
感谢任何帮助!
我正在使用OwlCarousel 2
这是我使用的代码:
var = mapSliderOptions = {
loop: true,
margin: 0,
items: 1,
autoWidth: false,
mouseDrag: true,
touchDrag: true,
dots: false,
onInitialized : counter, //When the plugin has initialized.
onTranslated : counter,
responsive: {
0: {
autoplay: true,
autoplayTimeout: 5000,
autoplayHoverPause: true
},
768: {
autoplay: false,
items: 1
}
}
},
function counter(event) {
var totalItems = $('.owl-item:not(.cloned)' ).length;
var currentIndex = $('div.active').index() + 1 ;
$('#counter').html("item "+ currentIndex +" of " + totalItems);
}
$('.map-hero-slider').owlCarousel( mapSliderOptions );
所以这个答案是为那些使用 php 和 运行 一个 foreach
循环的人准备的。
我所做的是用增量数字设置 data-dot
。然后我计算了数组中项目的数量,并将其作为项目的最终计数通过。
然后调用容器并使用 CSS 的一些绝对位置,我能够 "trick" 前端查看器在某种意义上进入计数。
不是很有效,但对我有用。
我在网上找到了这个解决方案,效果很好 https://codepen.io/maer2k/pen/qPVWEd
我把它分解成更容易理解的代码。
var gallery = $('.owl-carousel');
gallery.owlCarousel({
items: 1,
loop: true,
onInitialized: counter,
onChanged: counter,
});
function counter(event) {
if (!event.namespace) {
return;
}
var slides = event.relatedTarget;
$('.slider-counter').text(slides.relative(slides.current()) + 1 + '/' + slides.items().length);
}
它做到了它所承诺的。但我不知道 event.relatedTarget 和 .relative() 实际上做了什么,这是我第一次看到它们的实现。此外,命名空间相关的 if 语句并不是真正需要它才能工作。
它看起来不像是 owl-carousel 基本代码。如果有人试图向我解释这个魔法是如何工作的,我会很高兴:D