Slick.js and html5 video autoplay and pause on video

后端 未结 1 1032
野的像风
野的像风 2020-12-14 22:40

Is it possible to use slick.js with html5 self hosted videos, to play and pause a video without user interaction?

I currently have the following code to have a dual

1条回答
  •  忘掉有多难
    2020-12-14 23:38

    Yes it can be done using JavaScript.
    When the video slide becomes the currentSlide you need to:

    1. pause the slider
    2. play the video

    You can do this using the slick.js event afterChange:

    $('.sliderMain').on('afterChange', function(event, slick, currentSlide){
      if (currentSlide == 5) {
        $('.sliderMain').slick('slickPause');
        myVideo.play();
      }
    });
    

    You will also need to add an event listener for when to video ends in order to order the slider to continue. You can do so like this:

    document.getElementById('myVideo').addEventListener('ended',myHandler,false);
    function myHandler(e) {
        $('.sliderMain').slick('slickPlay');
    }
    

    If you're having trouble with this, please add a JSFiddle and I'll try help you there.

    Edit: here's a working JSFiddle

    $(document).ready(function() {
      $('.sliderMain').slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        arrows: false,
        fade: true,
        asNavFor: '.sliderSidebar',
        autoplay: true,
        autoplaySpeed: 3000
      });
      $('.sliderSidebar').slick({
        slidesToShow: 5,
        slidesToScroll: 1,
        asNavFor: '.sliderMain',
        dots: false,
        centerMode: false,
        focusOnSelect: true,
        vertical: true,
        arrows: false
      });
      $('.sliderMain').on('afterChange', function(event, slick, currentSlide) {
        if (currentSlide == 5) {
          $('.sliderMain').slick('slickPause');
          theVideo.play();
        }
      });
    
      document.getElementById('theVideo').addEventListener('ended', myHandler, false);
    
      function myHandler(e) {
        $('.sliderMain').slick('slickPlay');
      }
    });
    #slideBox {
      width: 1300px;
      max-height: 500px;
      overflow: hidden;
      margin: 1% auto;
      position: relative;
      top: 1em;
      background-color: #54585A;
      border-radius: .3em;
    }
    video {
      background-color: black;
    }
    #slideBox .slick-vertical .slick-slide {
      border: none;
    }
    .sliderSidebar {
      width: 200px;
      height: 500px;
      float: left;
    }
    #slideBox .slick-vertical .slick-slide {
      border: none;
    }
    .sliderMain {
      width: 900px;
      height: 500px;
      position: relative;
      float: left;
    }

    0 讨论(0)
提交回复
热议问题