Итак, я расскажу как можно вместо обычного фона использовать видео без флеша и html5. Делать мы это будем с помощью youtube api и немного мозгов. Задача у нас простая: поместить ролик под основной контент сайта и вывести кнопки управления видео на специальную панель. По-моему такое решение будет очень круто смотреться на сайтах музыкальных групп etc.
Использовать мы будем специальный плеер ютуба «Chromeless Player». Он отличается тем, что полностью контролируется с помощью JavaScript и не имеет визуального оформления. Примеры можно найти на Google PlayGround.
Итак, создадим файл index.html, script.js и style.css.
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equiv="content-type"content="text/html; charset=utf-8"/> <title>DevShack youtube api демо</title>
<linkrel="stylesheet"href="style.css"type="text/css"media="all"/> <scriptsrc="http://www.google.com/jsapi"type="text/javascript"></script> <scripttype="text/javascript"> google.load("swfobject","2.1"); </script> <scriptsrc="script.js"></script> </head> <body> <divid="wrapper"><!-- Здесь начинается весь контент -->
<divid="panel"> Управление звуком: <ahref="javascript:void(0)"onclick="setVideoVolume('0');">Нет</a> <ahref="javascript:void(0)"onclick="setVideoVolume('20');">Тихо</a> <ahref="javascript:void(0)"onclick="setVideoVolume('60');">Средне</a> <ahref="javascript:void(0)"onclick="setVideoVolume('100');">Громко</a> </div>
<divid="content"> <h1>Правда выглядит круто?</h1><br/> <ahref="http://devshack.ru/2010/10/ispolzuem-video-kak-fon-sajta-razbiraemsya-v-youtube-api-pleer-chromeless/">Вернутья к уроку...</a> </div>
</div><!-- /wrapper -->
<divid="videoDiv">Видео загружается...</div>
</body> </html>
Здесь обязательно в head подключен файл с нашем js кодом и файл для работы всего api. Далее идет элемент с id=wrapper. Он будет симулировать основной и в нем и нужно располагать весь основной контент страницы. Далее id=content. В него я вставлю уже непосредственно сам текст. За ним идет панелька c настройками звука (я включил в урок только их т.к. использование их наиболее оправдано. Остальные опции врятли нужны. Так же я уже в код ссылок прописал функции управления звуком в плеере. О них мы будем говорить позже) и div в который будет заменяться на плеер.
// Функция вызовется при появление ошибки function onPlayerError(errorCode){ alert("Упс. Что-то пошло не так... Код ошибки:"+ errorCode); }
// Allow the user to set the volume from 0-100 function setVideoVolume(volume){ if(isNaN(volume)|| volume <0|| volume >100){ alert("Упс. Что-то пошло не так..."); } elseif(ytplayer){ ytplayer.setVolume(volume); } }
// Начать проигрывать ролик function playVideo(){ if(ytplayer){ ytplayer.playVideo(); } }
// По окончанию ролика будет вызвана эта функция. Она запустит ролик повторно. functionStateChange(){ if(ytplayer){ if(ytplayer.getPlayerState()==0){ ytplayer.playVideo() } } }
// Эта функция автоматическив вызывается при загрузки плеера function onYouTubePlayerReady(playerId){ ytplayer = document.getElementById("ytPlayer"); // В случаи ошибки вызывается функция ytplayer.addEventListener("onError","onPlayerError"); ytplayer.addEventListener("onStateChange","StateChange"); // Загрузка видео в плеер. Может использоваться отдельно. ytplayer.cueVideoById("mVFeHv4oxJc"); // Запуск видео сразу после загрузки ytplayer.playVideo() // Сразу ставим громкость на 20 из 100 setVideoVolume('20') }
// The "main method" of this sample. Called when someone clicks "Run". function loadPlayer(){ // Lets Flash from another domain call JavaScript varparams={ allowScriptAccess:"always", wmode:"opaque" }; // Ставим ИД для embed var atts ={ id:"ytPlayer" }; // Вся магия происходит с помощью SWFObject (http://code.google.com/p/swfobject/) // Сюда можете вписать ваши параметры для видео swfobject.embedSWF("http://www.youtube.com/apiplayer?"+ "&enablejsapi=1&playerapiid=player1&hd=1", "videoDiv","100%","100%","8",null,null,params, atts); }
// Загружаем видео. function _run(){ loadPlayer(); } google.setOnLoadCallback(_run);
Итак, здесь функция ytplayer.cueVideoById(«mVFeHv4oxJc») задает какой ролик воспроизводить. Id ролика берется из его ссылки на ютубе. В swfobject.embedSWF я приписал к параметрам видео hd=1. Это значит, что если есть видео в HD, то будет воспроизводиться именно оно. Так же как раз параметр wmode: «opaque» и позволит нашему ролику быть на фоне страницы. Остальное вам врятли придется менять и я оставляю это без подробных объяснений. Да кстати, если вы не хотите чтобы все видели всплывающее окно в случаи ошибки, просто удали код alert(…).
style.css
Чем дальше, тем интереснее… Теперь настроем внешний вид страницы.
*{ padding:0; margin:0; font-family:Tahoma,Geneva, sans-serif; } /* Этот код лучше не редактировать */ body { width:100%; height:100%; background: black; } #ytPlayer { position:fixed; z-index:0; } #wrapper { position: absolute; left:0; top:0; z-index:1; width:100%; height:100%; overflow:auto;
} /* Далее уже можете сами настраивать все как хотите */
Вроде выглядит достаточно неплохо. Во всех последних браузерах работает отлично. Если что, скролл появляется как обычно и прокрутка осуществляется так же как и без видео.
Я уже чуть было не подумал, что совсем без флеша.