【问题标题】:slick slider carousel starts before page loads光滑的滑块轮播在页面加载之前开始
【发布时间】:2016-04-19 20:28:55
【问题描述】:

修改我的问题,当然希望有人能提供帮助。我设置了光滑的滑块。我还使用 Foundation Zurb“选项卡”功能,因此打开一个页面,顶部带有选项卡以进行导航。由于整个页面加载,因此初始页面加载(例如滑块)触发的任何内容都会开始运行,即使人们没有查看该选项卡 - 并且在图像本身完全加载之前。我需要的是滑块开始通过幻灯片组自动旋转,并在完成一个循环时在第一张幻灯片上停止。滑块本身正在工作 - 这是我不知道该怎么做的初始启动功能。我希望在实际滑块的函数调用中有一些方法可以做到这一点,但我只是不知道要使用哪些 javascript 函数。

我现在对滑块的函数调用如下。但是,当人们单击选项卡时,它从幻灯片 1 开始,但幻灯片从未显示,因为在有人移动到该页面后它仍在尝试加载图像。然后它打开幻灯片 2 并通过浏览剩余的幻灯片并返回到一张并停止正确完成。

<script type="text/javascript">
var item_length = $('.slide > div').length - 1;
var slider = $('.slide').slick({
autoplay: true,
autoplaySpeed: 5000,
dots: true,
infinite: false,
speed: 2000,
fade: true,
slide: 'div',
onAfterChange: function(){
//check the length of total items in .slide container
//if that number is the same with the number of the last slider
//Then pause the slider
if( item_length == slider.slickCurrentSlide() ){
//this should do the same thing -> slider.slickPause();
slider.slickSetOption("autoplay",false,false)
};
} 
});
</script>

【问题讨论】:

  • 请提供小提琴或您的代码,以便我们更好地理解。
  • 以上有帮助吗?我还稍微编辑了我的问题,因为我认为我不是很清楚。

标签: slider slick.js pause


【解决方案1】:

尝试在 jquery 的 load 函数中添加您的脚本。这个回调函数只有在 DOM 准备好并且所有资源都加载完毕后才会执行。

<script type = "text/javascript">
$(window).load(function() {
    var item_length = $('.slide > div').length - 1;
    var slider = $('.slide').slick({
        autoplay: true,
        autoplaySpeed: 5000,
        dots: true,
        infinite: false,
        speed: 2000,
        fade: true,
        slide: 'div',
        onAfterChange: function() {
            //check the length of total items in .slide container
            //if that number is the same with the number of the last slider
            //Then pause the slider
            if (item_length == slider.slickCurrentSlide()) {
                //this should do the same thing -> slider.slickPause();
                slider.slickSetOption("autoplay", false, false)
            };
        }
    });
});
</script>

【讨论】:

  • 行为没有变化。我认为,但不知道如何测试,滑块正在等待页面加载,但有些东西导致延迟,直到第二个“点”变为活动状态。单击要显示滑块的选项卡时,只有点而不是图像可见。第一个点是“活动的”,然后第二个点变成“活动的”,只有在那个时候图像才变得可见。我希望我知道如何弄清楚在延迟期间发生了什么。不过感谢您提供此功能。这是更好的编码结构。
  • 是否可以重新初始化函数?如果有人单击选项卡,我可以捕获该类 ID 并导致它重新启动 #1 上的幻灯片然后暂停吗?我只是不知道为什么图像没有加载。似乎加载功能可以解决这个问题。
  • 是的,你需要先 unslick(destroy) 插件 - $('.slide').slick('unslick'); 然后再次初始化 slick 滑块。
  • 谢谢!我会试试的。非常感谢您的反馈和帮助!
猜你喜欢
  • 2015-11-29
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多