首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在光滑的旋转木马中添加视频自动播放

在光滑的旋转木马中添加视频自动播放
EN

Stack Overflow用户
提问于 2015-04-27 16:30:05
回答 5查看 13.9K关注 0票数 20

我在我的页面上使用光滑的旋转木马http://kenwheeler.github.io/slick/,现在我需要添加带有自动播放的视频。

我使用这个代码

HTML

代码语言:javascript
复制
<div class="main-slider" id="main-slider">
            <div>
                <div class="video-wrapper">
                    <video autoplay loop class="pageBackground-video">
                        <source src="/Content/video/332145276.mp4" type="video/mp4">
                    </video>
                </div>
            </div>
            <div>
                <div class="video-wrapper">
                    <video autoplay loop class="pageBackground-video">
                        <source src="/Content/video/332145276.mp4" type="video/mp4">
                    </video>
                </div>
            </div>          
        </div>

和剧本

代码语言:javascript
复制
$('#main-slider').slick({
      slidesToShow: 1,
      slidesToScroll: 1,
      autoplay: true,
      autoplaySpeed: 30000,
      dots: true,
      infinite: true,
      adaptiveHeight: true,
      arrows: false
  });

但是自动播放不起作用。有什么办法让自动播放工作吗?

upd我尝试使用

代码语言:javascript
复制
$('#main-slider').on('afterChange', function(event, slick, currentSlide, nextSlide){
  var video = currentSlide.children('video').get(0).play();
});

但是我得到了一个错误Uncaught TypeError: currentSlide.children is not a function,因为currentSlide它只是一个数字(0,1,等等)。如何获取当前元素?

upd2 --我使用了这段代码,它可以工作。

代码语言:javascript
复制
$('#main-slider').on('afterChange', function(event, slick, currentSlide, nextSlide){
    $('#main-slider .slick-slide').find('video').get(0).pause();
    var video = $('#main-slider .slick-active').find('video').get(0).play();
});

但是现在自动播放对于所有的视频都是完美的,但只有在第一次巧妙的改变之后。如何使它工作后的第一个视频页面只加载。

upd3我使用了以下代码

代码语言:javascript
复制
 var video = $('#main-slider .slick-active').find('video').get(0).play();

  $('#main-slider').on('afterChange', function(event, slick, currentSlide, nextSlide){
    $('#main-slider .slick-slide').find('video').get(0).pause();
    var video = $('#main-slider .slick-active').find('video').get(0).play();
});

现在所有的代码都可以按我的意愿工作,但恐怕我的代码很难看(

EN

回答 5

Stack Overflow用户

发布于 2020-03-04 13:29:52

您可以使用光滑的文档中的函数。

代码语言:javascript
复制
// On slide change, pause all videos
$('#main-slider').on('beforeChange', function(event, slick, currentSlide, nextSlide){
  $('video').each(function() {
    $(this).get(0).pause();
  });
});

// On slide chnage, play a video inside the current slide
$('#main-slider').on('afterChange', function(event, slick, currentSlide, nextSlide){
  if( $('.project-slide.slick-current').find('video').length !== 0) {
    $("#main-slider .slick-current video")[0].play();
  }
});
票数 4
EN

Stack Overflow用户

发布于 2021-08-22 01:56:43

您可以在所有浏览器中将muted添加到视频标记到autoplay中。此外,在移动设备上自动播放还需要playsinline

代码语言:javascript
复制
<video autoplay muted playsinline></video>

我知道,如果您的视频有声音,这是没有帮助的,但声音立即播放在最初的页面加载可能不是首选。

票数 1
EN

Stack Overflow用户

发布于 2015-05-02 18:46:33

这一行代码

.find(‘视频’).get(0).pause();

在afterChange内部,回调函数将暂停幻灯片容器中的所有视频,而不管视频播放与否。

如果有100张幻灯片,它会暂停所有100个视频,尽管它们没有播放。最好是找到上一张幻灯片,只暂停幻灯片中的视频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29901228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档