完成后滑动滑块幻灯片

时间:2018-06-11 12:57:25

标签: javascript jquery slick.js

我使用光滑的滑块来创建一个英雄块,我有一个vimeo视频和一个我想要自动滑动的图像,我的工作正常。我想要实现的是,当幻灯片进入vimeo视频时,滑块会停止自动播放,直到视频播放完毕,然后再次开始自动播放幻灯片。

这是滑块的基本html:

   <div id="main-image" class="sliderMain">
        <div>
          <iframe id="video" class="embed-player slide-media" src="https://player.vimeo.com/video/273725261?api=1&byline=0&portrait=0&title=0&background=1&mute=1&loop=0&autoplay=1&id=273725261" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
        </div>
        <div>
          <img src="http://foley13.webfactional.com/grid-website/wp-content/uploads/2018/06/o-FRIENDS-facebook.jpeg">
      </div>
   </div>

这是我的Javascript以使滑块工作:

$('.sliderMain').on('afterChange', function(event, slick, currentSlide) {
    var vid = $(slick.$slides[currentSlide]).find('oembed');
      if (vid.length > 0) {
        $('.sliderMain').slick('slickPause');
        $(vid).get(0).play();
      }
    });

  $('oembed').on('ended',function(){     
    console.log('Video Complete')
      $('.sliderMain').slick('slickPlay');
  });

 $(document).ready(function(){
  $('.sliderMain').slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: true,
    fade: true,
    autoplay: true,
    autoplaySpeed: 1000
  });


});

我添加了afterChange功能,但是光滑的滑块自动播放速度让它看起来并没有让视频幻灯片在视频播放完毕之前滑动。您可以在此处查看示例:http://foley13.webfactional.com/grid-website/

1 个答案:

答案 0 :(得分:2)

这是因为没有oembed元素,您可以在afterChange事件中搜索它。

我不确定.play()函数是如何工作的,但是SO片段似乎存在问题。这就是我无法测试它是否正常工作的原因。无论如何,将oembed更改为iframe,因为这肯定是错误的。

还将光滑保存为变量,这样就不会进行太多不必要的jQuery调用。

以下示例

$(document).ready(function() {
  var slider = $('.sliderMain').slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: true,
    fade: true,
    autoplay: true,
    autoplaySpeed: 1000
  });
  slider.on('afterChange', function(event, slick, currentSlide) {
    var vid = $(slick.$slides[currentSlide]).find('iframe');
    if (vid.length > 0) {
      slider.slick('slickPause');
      $(vid).get(0).play();
    }
  });

  $('iframe').on('ended', function() {
    console.log('Video Complete')
    slider.slick('slickPlay');
  });
});