Выбор всех элементов
Здравствуйте.
Есть такой код
<section class="features">
<h2 class="features__title">Особенности</h2>
<video class="features__video" loop="loop" muted="" playsinline="">
<source src="1.mp4" type="video/mp4">
</video>
<video class="features__video" loop="loop" muted="" playsinline="">
<source src="2.mp4" type="video/mp4">
</video>
<video class="features__video" loop="loop" muted="" playsinline="">
<source src="3.mp4" type="video/mp4">
</video>
<video class="features__video" loop="loop" muted="" playsinline="">
<source src="4.mp4" type="video/mp4">
</video>
</section>
И скрип который автозапускает видео когда оно в окне просмотра
<script src="https://cdnjs.cloudflare.com/ajax/libs/is-in-viewport/3.0.4/isInViewport.min.js"></script>
<script>
// Play Video
$(function() {
var $video = $('video');
var $window = $(window);
$window.scroll(function() {
if ($video.is(":in-viewport")) {
$video[0].play();
} else {
$video[0].pause();
}
});
});
</script>
Проблема в том что, запускается лишь первое видео, я как понимаю это связано с ноликом в $video[0], т.е. выбирается тег video который первый на странице(нулевой). Я совершенно не знаю JS, и не понимаю как изменить чтобы работало со всеми элементами на странице. Помогите пожалуйста. Спасибо |
|
Цитата:
Немного не понял на что вы мне дали ссылку, там скрипт анимации. Почитал в интернете, и как понял, нужно создать цикл, который бы посчитал все элементы video на странице и добавлял бы порядковый номер в переменную $video[0]. пробую так
<script>
// Play Video
$(function() {
var $video = $('video');
var $window = $(window);
var i;
var acc = document.getElementsByClassName("features__video");
for (i = 0; i < acc.length; i++) {
$window.scroll(function() {
if ($video.is(":in-viewport")) {
$video[i].play();
} else {
$video[i].pause();
}
})};
});
</script>
Но мне выдает что синтаксическая ошибка, не пойму пока где в чем ошибка |
Получилось!
// Play Video
$(function() {
var $video = $('video');
var $window = $(window);
var i;
var acc = document.getElementsByClassName("features__video");
$window.scroll(function() {
for (i = 0; i < acc.length; i++) {
if ($video.is(":in-viewport")) {
$video[i].play();
} else {
$video[i].pause();
}
}
}
);
});
|
Цитата:
window.addEventListener("DOMContentLoaded", anim, false)
window.addEventListener("scroll", anim, false);
function anim() {
[].forEach.call( document.querySelectorAll('video'), function(el) {
checkViewport(el) ? el.play() : el.pause()
});
}
function checkViewport(a) {
var b = a.getBoundingClientRect();
return 0 < b.top && b.top + a.scrollHeight < window.innerHeight
};
|
рони,
Спасибо большое! И правда работает, причем Ваш скрипт намного быстрее работает чем тот Франкиштейн которого сотворил я) |
| Часовой пояс GMT +3, время: 06:47. |