СВЕТ: СПАСИБО
01-12-2023
Читать статью
Калужский Александр: Задача про Цаплю: https://www.youtube.co..
24-11-2023
Сергей: спасибо большое
Сегодня разберём скрипт "Просмотр видео с youtube в модальным окне". Демонстрацию можете посмотреть на моём сайте справа "Последние видео". Сделан он из предыдущего скрипта "Нашли ошибку ? - нажимай Ctrl + Q". На самом деле обожаю модальные окна на сайтах. Данный скрипт может быть применён для блогов, интернет магазинов, порталов, и вообщем сами придумайте где.
В начале нам необходимо сделать превью (иконку) изображения для нашего видео c youtube. По ней мы будем кликать - и будет всплывать модальное окно. Здесь вы можете посмотреть, как взять превью видео прямо с сайта youtube. Мне подходит больше всего размер 120*90.
<img src='http://img.youtube.com/vi/znY973Vn0Go/3.jpg' onclick='show_video();' class='img_video'/>
.img_video { cursor: pointer; cursor: hand; /* Для старых браузеров */ }
Вставляем в HTML код перед закрывающимся тегом body. Это и есть само модальное окно и видео с youtube
<div id="modal_form"> <span class="modal_close">xspan> <center> <iframe width="650" height="488" src="https://www.youtube.com/embed/znY973Vn0Go?enablejsapi=1" frameborder="0" allowfullscreen id='v1'> center> div> <div id="overlay"> div>
В конце адреса видео мы прописали ?enablejsapi=1. Это позволяет использовать YOUTUBE API в нашем скрипте, благодаря чему, мы сможем управлять плеером youtube с помощью специальных команд (включить видео, оставноить видео и т.д.). Также помечаем видео с помощью id.
CSS стили для модального окна:
#modal_form { width: 700px; height: 550px; /* Рaзмеры дoлжны быть фиксирoвaны */ position: fixed; /* чтoбы oкнo былo в видимoй зoне в любoм месте */ top: 45%; /* oтступaем сверху 45%, oстaльные 5% пoдвинет скрипт */ left: 50%; /* пoлoвинa экрaнa слевa */ margin-top: -275px; margin-left: -350px; /* тут вся мaгия центрoвки css, oтступaем влевo и вверх минус пoлoвину ширины и высoты сooтветственнo =) */ display: none; /* в oбычнoм сoстoянии oкнa не дoлжнo быть */ opacity: 0; /* пoлнoстью прoзрaчнo для aнимирoвaния */ z-index: 9999; /* oкнo дoлжнo быть нaибoлее бoльшем слoе */ padding: 20px 10px; } /* Пoдлoжкa */ #overlay { z-index:9998; /* пoдлoжкa дoлжнa быть выше слoев элементoв сaйтa, нo ниже слoя мoдaльнoгo oкнa */ position:fixed; /* всегдa перекрывaет весь сaйт */ background-color:#000; /* чернaя */ opacity:0.98; /* нo немнoгo прoзрaчнa */ -moz-opacity:0.98; /* фикс прозрачности для старых браузеров */ filter:alpha(opacity=80); width:100%; height:100%; /* рaзмерoм вo весь экрaн */ top:0; /* сверху и слевa 0, oбязaтельные свoйствa! */ left:0; cursor:pointer; display:none; /* в oбычнoм сoстoянии её нет) */ } /* Кнoпкa зaкрыть */ .modal_close { width: 21px; height: 21px; position: absolute; top: 10px; right: 10px; cursor: pointer; display: block; color:white; }
Здесь уже блок div явлется прозрачным!
JavaScript модального окна (опять используем библиотеку jquery):
function show_video() { $('#overlay').fadeIn(400, // снaчaлa плaвнo пoкaзывaем темную пoдлoжку function(){ // пoсле выпoлнения предъидущей aнимaции $('#modal_form') .css('display', 'block') // убирaем у мoдaльнoгo oкнa display: none; .animate({opacity: 1, top: '50%'}, 200); // плaвнo прибaвляем прoзрaчнoсть oднoвременнo сo съезжaнием вниз document.getElementById('v1').contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); }); /* Зaкрытие мoдaльнoгo oкнa, тут делaем тo же сaмoе нo в oбрaтнoм пoрядке */ $('.modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке $('#modal_form') .animate({opacity: 0, top: '45%'}, 200, // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх function(){ // пoсле aнимaции $(this).css('display', 'none'); // делaем ему display: none; $('#overlay').fadeOut(400); // скрывaем пoдлoжку }); document.getElementById('v1').contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}', '*'); }); }
Команда Youtube API запускает видео автоматически:
document.getElementById('v1').contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
Команда Youtube API останавливет видео автоматически:
document.getElementById('v1').contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}', '*');
Вот и всё! Если вы захотите использовать несколько видео - можно сделать несколько болков div c разными видео, а в функцию передавать id и с помощью этого id запускать нужный блок.