$w('#slider-frame').flexslider({ animation: 'fade',directionNav: false,slideshowSpeed: 4000,controlNav: true,pauSEOnHover: true,manualControls: '#indicator-dots li',start: function(slider){ $w('.roi-click').click(function(){ slider.trigger('mouseenter'); }); $w('div#ovrly,a#close').click(function(){ slider.trigger('mouseleave'); }); } });
该页面的链接是http://www.whitehardt.com/sandbox/whitehardt-v3.
任何有关这方面的帮助将不胜感激.
解决方法
我想我弄清楚这里发生了什么.问题是你发生了相互冲突的事件.
> Flexslider通过执行setInterval并将间隔ID存储在内部状态变量(slider.animatedSlides)中来启动动画.
>当您将鼠标悬停在幻灯片上时,Flexslider会暂停.它通过使用clearInterval()清除动画间隔来完成此操作.
>单击幻灯片中的roi链接,再次暂停,通过清除现在不存在的间隔.
>页面上有一个叠加层,这意味着您在Flexslider上执行鼠标移动,因此它使用setInterval()再次启动动画并存储间隔ID.
>关闭叠加层,方法是单击关闭按钮或叠加层,此时调用resume(),它也会执行setInterval(),覆盖存储的间隔ID.所以,现在你有两个动画,因此双倍速度.另外,下次调用pause()时,它只能访问清除您设置的最后一个间隔,因为它覆盖了存储的ID.因此,您无法再清除步骤3中的间隔.因此,您将在一个间隔动画前进(慢),鼠标中心和两个鼠标离开(快速)之间进行.
您可以暂停#ovrly鼠标悬停,然后单击继续,而不是暂停点击,因为Flexslider的mouseexit将在重叠鼠标悬停之前.
$w('#slider-frame').flexslider({ animation: 'fade',start: function(slider){ $w('div#ovrly').mouSEOver(function(){ slider.pause(); }); $w('div#ovrly,a#close').click(function() { slider.resume(); }); } });
但是,你可能会遇到类似的问题,这取决于当覆盖关闭时鼠标是否在滑块之上……但我不确定.理想情况下,Flexslider不会启动新动画.你可以将其破解为flexslider.js:
//FlexSlider: Automatic Slideshow Pause slider.pause = function() { // Only pause if running if(slider.animatedSlides == null) { return; } clearInterval(slider.animatedSlides); // Clear the interval ID slider.animatedSlides = null; if (slider.vars.pausePlay) { slider.pausePlay.removeClass('pause').addClass('play').text(slider.vars.playText); } } //FlexSlider: Automatic Slideshow Start/Resume slider.resume = function() { // Only resume if paused if(slider.animatedSlides != null) { return; } slider.animatedSlides = setInterval(slider.animateSlides,slider.vars.slideshowSpeed); if (slider.vars.pausePlay) { slider.pausePlay.removeClass('play').addClass('pause').text(slider.vars.pauseText); } }
此更改将解决快速速度以及无法再次暂停的事实.当您的叠加层弹出时,您仍然会遇到滑块恢复的问题.这可以通过我之前提到的鼠标悬停解决方案来解决.
这是一个显示鼠标悬停解决方案的小提琴:http://jsfiddle.net/jtbowden/TWN5t/
它看起来好像你可能不需要第二次黑客攻击,虽然它是更好的代码.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。