Я пытаюсь реализовать slick slider, который содержит бесконечную серию циклов видео Youtube, которые автоматически запускаются и приостанавливаются при прокрутке на следующий слайд и т. Д. Я также хотел, видео, как вы можете с изображениями.Слайсор слайдера YouTube сбой на последнем и первом слайде
У меня это работает, но я замечаю проблему при скольжении от последнего слайда до первого слайда. Вместо того, чтобы останавливать паузу, последние и первые видео останавливаются, но затем отображаются изображение обложки видео, а не просто приостанавливаются.
Вот мой HTML ...
<div class="slider-youtube">
<div class="item youtube">
<div class="video-background">
<div class="video-foreground">
<iframe src="https://www.youtube.com/embed/M-hGwtvtXCk?controls=0&showinfo=0&loop=1&playlist=M-hGwtvtXCk&enablejsapi=1&iv_load_policy=3&rel=0&modestbranding=1" frameborder="0" allowfullscreen></iframe>
</div>
</div>
<div class="slick-button">
<a href="#">SEE MORE</a>
</div>
</div>
<div class="item youtube">
<div class="video-background">
<div class="video-foreground">
<iframe src="https://www.youtube.com/embed/V2vwFS8ae2I?controls=0&showinfo=0&loop=1&playlist=V2vwFS8ae2I&enablejsapi=1&iv_load_policy=3&rel=0&modestbranding=1" frameborder="0" allowfullscreen></iframe>
</div>
</div>
<div class="slick-button">
<a href="#">SEE MORE</a>
</div>
</div>
<div class="item youtube">
<div class="video-background">
<div class="video-foreground">
<iframe src="https://www.youtube.com/embed/YXBUD7-ACMM?controls=0&showinfo=0&loop=1&playlist=YXBUD7-ACMM&enablejsapi=1&iv_load_policy=3&rel=0&modestbranding=1" frameborder="0" allowfullscreen></iframe>
</div>
</div>
<div class="slick-button">
<a href="#">SEE MORE</a>
</div>
</div>
</div>
Вот мой CSS ...
.slider-youtube iframe {
min-width: 700px;
height: 400px;
}
.slider-youtube .youtube {
opacity: 1;
transition: opacity 1s;
}
.slider-youtube .youtube:not(.slick-current) {
opacity: 0.4;
transition: opacity 1s;
}
img.slick-slide {
max-width: 100vw;
}
.video-background {
background: #000;
z-index: -99;
max-height: 400px;
}
.video-foreground,
.video-background iframe {
width: 100%;
height: 400px;
pointer-events: none;
}
.slick-button {
position: relative;
bottom: 60px;
text-align: center;
z-index: 9999;
}
.slick-button a {
color: white;
background-color: black;
}
... и вот мой Javascript ...
$(document).ready(function() {
//on first load, play the video
$(".slider-youtube").on('init', function(event, slick, currentSlide) {
var currentSlide, player, command;
currentSlide = $(slick.$slider).find(".slick-current");
player = currentSlide.find("iframe").get(0);
command = {
"event": "command",
"func": "playVideo"
};
setTimeout(
function() {
player.contentWindow.postMessage(JSON.stringify(command), "*");
}, 5000);
});
//when new slide displays, play the video
$(".slider-youtube").on("afterChange", function(event, slick) {
var currentSlide, player, command;
currentSlide = $(slick.$slider).find(".slick-current");
player = currentSlide.find("iframe").get(0);
command = {
"event": "command",
"func": "playVideo"
};
if (player != undefined) {
player.contentWindow.postMessage(JSON.stringify(command), "*");
}
});
//reset iframe of non current slide
$(".slider-youtube").on('beforeChange', function(event, slick, currentSlidee) {
var current = $('.slick-current');
var currentSlide, player, command;
currentSlide = $(slick.$slider).find(".slick-current");
player = currentSlide.find("iframe").get(0);
command = {
"event": "command",
"func": "pauseVideo"
};
if (player != undefined) {
player.contentWindow.postMessage(JSON.stringify(command), "*");
}
});
//start the slider
$('.slider-youtube').slick({
slidesToShow: 1,
arrows: false,
centerMode: true,
centerPadding: '50px',
infinite: true,
variableWidth: true
});
});
Вот jsfiddle ,
Я пробовал это в последней версии IE/Firefox и Chrome, и все же происходит то же самое.
Это мой первый пост, так извиняюсь, если я сделал что-то не так, я пробовал найти эту проблему уже без везения.
Это работает очень хорошо, я не думал о сохранении t стойку и т. д. Большое спасибо за вашу помощь. Я нашел опечатку «currentSlidee» должен быть «currentSlide», просто чтобы вы знали. – RedCoupe