显示幻灯片编号 orbit.js foundation 6 zurb
display slide number orbit.js foundation 6 zurb
我目前正在使用 Foundation 6 中的 orbit.js 滑块,但没有看到显示幻灯片编号的选项。
你能给我一些建议或分享例子吗?
谢谢!
这是一个使用 jQuery 的示例,它会将具有 class .slide-number
的元素的 innerHTML
属性 更改为活动幻灯片编号,并且每次幻灯片更改时,将活动幻灯片编号记录到控制台。
function slideNumber() {
var $slides = $('.orbit-slide');
var $activeSlide = $slides.filter('.is-active');
var activeNum = $slides.index($activeSlide) + 1;
$('.slide-number').innerHTML = activeNum;
console.log(activeNum);
}
$('[data-orbit]').on('slidechange.zf.orbit', slideNumber);
来源: 我在 this SO post 的帮助下得出了这个答案。
你可以用普通的 CSS 来实现。
.orbit-parent {
counter-reset: orbit-bullet-num;
}
.orbit-bullets button::after {
content: counter(orbit-bullet-num);
counter-increment: orbit-bullet-num;
}
<div class="orbit-parent">
<div class="orbit" aria-label="Slider" data-orbit>
<ul class="orbit-container">
...
...
</ul>
<nav class="orbit-bullets" aria-label="Slider Navigation">
<button data-slide="0" class=""><span class="show-for-sr">First slide details.</span></button>
<button data-slide="1" class=""><span class="show-for-sr">Second slide details.</span></button>
<button data-slide="2" class="is-active"><span class="show-for-sr">Third slide details.</span><span class="show-for-sr">Current Slide</span></button>
</nav>
</div>
</div>
这是正常工作的完整 jQuery 代码。
还要在页面上要显示的位置添加 css class "orbit-slide-number"
function slideNumber() {
var $slides = $('.orbit-slide');
var totalItems = $('.orbit-container li').length;
var $activeSlide = $slides.filter('.is-active');
var activeNum = $slides.index($activeSlide) + 1;
$('.orbit-slide-number').html(''+activeNum+'/'+totalItems+'');
}
slideNumber(); // call for every
// call for automatic slide change
$('[data-orbit]').on('slidechange.zf.orbit', slideNumber);
对于那些可能想要使用 vanilla js 的人:
function slideNumbers() {
const arrows = document.getElementsByClassName("orbit-arrow");
const target = document.getElementById("currentSlide");
[...arrows].forEach(function(arrow) {
arrow.addEventListener("click", function() {
const currentSlide = document.querySelector(".is-active");
target.textContent = Number(currentSlide.getAttribute("data-slide")) + 1;
});
});
}
我目前正在使用 Foundation 6 中的 orbit.js 滑块,但没有看到显示幻灯片编号的选项。
你能给我一些建议或分享例子吗?
谢谢!
这是一个使用 jQuery 的示例,它会将具有 class .slide-number
的元素的 innerHTML
属性 更改为活动幻灯片编号,并且每次幻灯片更改时,将活动幻灯片编号记录到控制台。
function slideNumber() {
var $slides = $('.orbit-slide');
var $activeSlide = $slides.filter('.is-active');
var activeNum = $slides.index($activeSlide) + 1;
$('.slide-number').innerHTML = activeNum;
console.log(activeNum);
}
$('[data-orbit]').on('slidechange.zf.orbit', slideNumber);
来源: 我在 this SO post 的帮助下得出了这个答案。
你可以用普通的 CSS 来实现。
.orbit-parent {
counter-reset: orbit-bullet-num;
}
.orbit-bullets button::after {
content: counter(orbit-bullet-num);
counter-increment: orbit-bullet-num;
}
<div class="orbit-parent">
<div class="orbit" aria-label="Slider" data-orbit>
<ul class="orbit-container">
...
...
</ul>
<nav class="orbit-bullets" aria-label="Slider Navigation">
<button data-slide="0" class=""><span class="show-for-sr">First slide details.</span></button>
<button data-slide="1" class=""><span class="show-for-sr">Second slide details.</span></button>
<button data-slide="2" class="is-active"><span class="show-for-sr">Third slide details.</span><span class="show-for-sr">Current Slide</span></button>
</nav>
</div>
</div>
这是正常工作的完整 jQuery 代码。 还要在页面上要显示的位置添加 css class "orbit-slide-number"
function slideNumber() {
var $slides = $('.orbit-slide');
var totalItems = $('.orbit-container li').length;
var $activeSlide = $slides.filter('.is-active');
var activeNum = $slides.index($activeSlide) + 1;
$('.orbit-slide-number').html(''+activeNum+'/'+totalItems+'');
}
slideNumber(); // call for every
// call for automatic slide change
$('[data-orbit]').on('slidechange.zf.orbit', slideNumber);
对于那些可能想要使用 vanilla js 的人:
function slideNumbers() {
const arrows = document.getElementsByClassName("orbit-arrow");
const target = document.getElementById("currentSlide");
[...arrows].forEach(function(arrow) {
arrow.addEventListener("click", function() {
const currentSlide = document.querySelector(".is-active");
target.textContent = Number(currentSlide.getAttribute("data-slide")) + 1;
});
});
}