Cycle 2 的字幕支持非常简单,就像滑块一样强大和灵活,就像一两个其他用例一样,只要您需要比给出的绝对基本示例多一点,您就需要挖掘一个更深一点。
解决这个问题并创建非常强大的全功能“字幕”支持的方法是一起绕过内置字幕,而是使用 Cycles 自定义事件来触发您自己的功能。所以第一步,删除任何标题特定的循环内容。
看看 Events API 看看有什么可用的(如果你掌握了这些,你可以做很多很酷的东西)。Cycle2 事件 API
其次,您可以继续在图像上使用 alt 标签,或者使用可以从中获取任何 html 内容的隐藏元素。这将是我的首选标记,
<div class="cycle-slideshow"
data-cycle-fx=scrollHorz
data-cycle-slides="> .slide"
>
<div class="slide">
<a href="/whatever"><img src="whatever/jpg"></a>
<p class="slide-caption" style="display:none;">
Hi, I'm a super fancy caption,
<a href="somelink">with anything</a>
you want in it :)
</p>
</div>
</div>
<div class="fancy-caption-box">
<div class="inner"></div>
<!-- You'll insert your caption here with jQuery, put the slider and this box in a wrapper element if you need to overlay your caption elements -->
</div>
接下来,您将要挂钩两个事件,(您可以更高级,并使用三个,但让开始时保持简单)。您需要先在滑块加载时更新标题,然后在每次滑块更新幻灯片时更新标题。我假设您正在使用 jQuery,并且会知道将其放在哪里。
<script>
<!-- when the slideshow has been fully initialized -->
$('.cycle-slideshow').on('cycle-initialized', function(event, optionHash) {
var capBox = $('.fancy-caption-box');
var firstCaption = $('.cycle-slideshow').children('.slide').eq(0).find('.slide-caption').html();
capBox.children('.inner').fadeOut().html(firstCaption).fadeIn();
});
<!-- when each slide changes -->
$('.cycle-slideshow').on('cycle-before', function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) {
var capBox = $('.fancy-caption-box');
var caption = $(incomingSlideEl).find('.slide-caption').html();
capBox.children('.inner').fadeOut().html(caption).fadeIn();
});
</script>
这只是一个非常快速和粗略的示例,它近似于我在项目中所做的并且尚未经过测试,如果您找不到通过它的方法,我将设置一个 jsfiddle,其中包含您可以看到的工作。当然,您还需要根据自己的口味对其进行样式设置。
这种方法的好处是你可以在你的标题块中使用任何你想要的东西,其次在标题上使用你喜欢的任何效果,正如我提到的,滚动更多的事件和回调将允许你做更多的事情。