Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2023, 08:47
Кандидат Javascript-наук
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 112

HTML5 video - play/pause по клику на кастомную кнопку
Приветствую! Есть обычный код видео (с кнопкой - картинкой), controls отключены:

<div class="my-video">
   <video>
       <source src="/catalog/123.mp4" type="video/mp4">
   </video>
   <img class="play-button" src="/catalog/play-button.png" alt="">
</div>

Подскажите как сделать, чтобы видео проигрывалось при клике на кнопку (при этом кнопка исчезает, opacity: 0 или display: none). Если же во время проигрывания видео кликнуть по нему, то оно ставится на паузу, и, кнопка play появляется. Обгуглил всё - нормального решения не нашел. Подойдет и js и jquery.

Заранее, спасибо!

P.S. Видео может быть несколько на странице, поэтому вариант js с getElementById не подходит.
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2023, 10:45
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

<html>
<head>
<style>
    .hidden {
        display:none;
    }
    .play-button {
        width: 40px;
        height:40px;
    }
    
</style>
</head>
<body>
<div class="my-video">
   <video>
       <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
   </video>
   <img class="play-button" src="/catalog/play-button.png" alt="Play">
</div>
<div class="my-video">
   <video>
       <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
   </video>
   <img class="play-button" src="/catalog/play-button.png" alt="Play">
</div>

<script>
document.querySelectorAll('.my-video')
    .forEach(div =>  {
        const video = div.querySelector('video');
        const bplay = div.querySelector('img');

        video.addEventListener('click', ev => {
            if (video.paused) return;
            video.pause();
            bplay.classList.remove('hidden');
        })

        video.addEventListener('ended', ev => {
            video.currentTime = 0;
            bplay.classList.remove('hidden');
        })

        bplay.addEventListener('click', ev => {
            if (! video.paused) return;
            video.play().then (() => {bplay.classList.add('hidden');})
        })
    })
</script>
</body>
<html>

Последний раз редактировалось voraa, 06.05.2023 в 10:55.
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2023, 13:37
Кандидат Javascript-наук
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 112

Спасибо БОЛЬШОЕ!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка трансляции на сайт mikhail_zvonarev Общие вопросы Javascript 0 19.04.2020 20:47
По клику на кнопку открыть сразу несколько DIV BOOSOORMAN Элементы интерфейса 3 11.03.2020 17:35
Как отключить кнопку download html5 видео weirdjava Events/DOM/Window 0 20.02.2020 01:16
как по клику на кнопку получить отмеченный объект pirat9629 ExtJS 0 19.08.2014 11:49
Event paste по клику на кнопку piraids Events/DOM/Window 4 13.08.2014 10:54