Как создать HTML видео проигрыватель на JQuery и CSS3

В этом уроке мы покажем как создать HTML видео проигрыватель, с использованием CSS3 для моделирования и MediaElement.js для функциональности. MediaElement.js это HTML5 плагин аудио и видео плеера, который также работает и в старых браузерах имитируя MediaElement HTML5 API с помощью Flash и Silverlight.

Сложность

video player html5

Шаг 1 - Загрузка MediaElement.js

Для начала скачаем MediaElement.js с официального сайта. Нам понадобятся три файла из папки build:

  • flashmediaelement.swf
  • mediaelement-and-player.min.js
  • silverlightmediaelement.xap

Затем скопируем эти три файла в одну директорию, я назову эту папку js.

Шаг 2 - HTML-разметка

Теперь разместим ссылки на наши JS и CSS файлы внутри контейнера head:

<head>
<title>Video Player</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script src="/js/mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="/css/style.css" media="screen">
</head>

Чтобы создать HTML видео проигрыватель необходимо всего лишь добавить новый HTML5 тег - video. Затем зададим некоторые параметры: ширину и высота видео, а так же "обложки". Изображение обложки, покажем перед запуском видео, пока пользователь не нажмет на кнопку воспроизведения.

<video width="640" height="267" poster="/media/cars.png">
<source src="/media/cars.mp4" type="video/mp4">
</video>

Опции для кнопок управления:

  • alwaysShowControls – всегда показывать кнопки управления или только при наведении курсора
  • videoVolume – ползунок громкости
  • features: ['playpause','progress','volume','fullscreen'] – кнопки управления для видео
<script type="text/javascript">// <![CDATA[
$(document).ready(function() {
$('video').mediaelementplayer({
alwaysShowControls: true,
videoVolume: 'horizontal',
features: ['playpause','progress','volume','fullscreen']
});
});
// ]]></script>

Шаг 3 - Основные стили

Добавим основные стили элементов:

.mejs-inner,
.mejs-inner div,
.mejs-inner a,
.mejs-inner span,
.mejs-inner button,
.mejs-inner img {
    margin: 0;
    padding: 0;
    border: none;
    outline: none;
}

Затем добавим общий стиль для блока видео. Все CSS свойства мы используем для создания разметки блока видео, не для самого видео.

.mejs-container {
    position: relative;
    background: #000000;
}

.mejs-inner {
    position: relative;
    width: inherit;
    height: inherit;
}

.me-plugin { position: absolute; }

.mejs-container-fullscreen .mejs-mediaelement,
.mejs-container-fullscreen video,
.mejs-embed,
.mejs-embed body,
.mejs-mediaelement {
    width: 100%;
    height: 100%;
}

.mejs-embed,
.mejs-embed body {
    margin: 0;
    padding: 0;
    overflow: hidden;
}

.mejs-container-fullscreen {
    position: fixed;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
    z-index: 1000;
}

.mejs-background,
.mejs-mediaelement,
.mejs-poster,
.mejs-overlay {
    position: absolute;
    top: 0;
    left: 0;
}

.mejs-poster img { display: block; }

video player css3

Шаг 4 – Блок с управлением

Добавим большую кнопку воспроизведения в центре блока с видео.

.mejs-overlay-play { cursor: pointer; }

.mejs-inner .mejs-overlay-button {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 50px;
    height: 50px;
    margin: -25px 0 0 -25px;
    background: url(../img/play.png) no-repeat;
}

Теперь настроим положение блока с кнопками управления. Разместим его снизу, зададим ему высоту в 34px и установим цвет фона. Лучше использовать RGBA, чтобы сделать фон прозрачным, но RGBA не поддерживается в старых браузерах, поэтому также добавим RGB. Затем добавим несколько кнопок с общим стилем и спрайт изображение.

.mejs-container .mejs-controls {
    position: absolute;
    width: 100%;
    height: 34px;
    left: 0;
    bottom: 0;
    background: rgb(0,0,0);
    background: rgba(0,0,0, .7);
}

.mejs-controls .mejs-button button {
    display: block;
    cursor: pointer;
    width: 16px;
    height: 16px;
    background: transparent url(../img/controls.png);
}

video player jquery

Шаг 5 - Кнопки управления видео

На этом этапе расположим все кнопки на своих местах. Цель: изменить расположение каждой кнопки на блоке управления, установить ширину и высоту для каждой кнопки, изменить положение фонового изображения.

.mejs-controls div.mejs-playpause-button {
    position: absolute;
    top: 12px;
    left: 15px;
}

.mejs-controls .mejs-play button,
.mejs-controls .mejs-pause button {
    width: 12px;
    height: 12px;
    background-position: 0 0;
}

.mejs-controls .mejs-pause button { background-position: 0 -12px; }

.mejs-controls div.mejs-volume-button {
    position: absolute;
    top: 12px;
    left: 45px;
}

.mejs-controls .mejs-mute button,
.mejs-controls .mejs-unmute button {
    width: 14px;
    height: 12px;
    background-position: -12px 0;
}

.mejs-controls .mejs-unmute button { background-position: -12px -12px; }

.mejs-controls div.mejs-fullscreen-button {
    position: absolute;
    top: 7px;
    right: 7px;
}

.mejs-controls .mejs-fullscreen-button button,
.mejs-controls .mejs-unfullscreen button {
    width: 27px;
    height: 22px;
    background-position: -26px 0;
}

.mejs-controls .mejs-unfullscreen button { background-position: -26px -22px; }

video player javascript

Шаг 6 – Ползунок громкости

Перейдем к стил ползунка громкости, разместим в нужном месте, зададим ширину и высоту, а так же сделаем рамку с закруглёнными углами.

.mejs-controls div.mejs-horizontal-volume-slider {
    position: absolute;
    cursor: pointer;
    top: 15px;
    left: 65px;
}

.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
    width: 60px;
    background: #d6d6d6;
}

.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
    position: absolute;
    width: 0;
    top: 0;
    left: 0;
}

.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total,
.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
    height: 4px;

    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
}

video player

Шаг 7 – Индикатор просмотра

Для индикатора просмотра используем общий стиль. Так же нужно разместить его на верхней части блока управления, добавить цвет фона для каждого состояния (полная шкала и время для загрузки). Установим ширину в 0, она будет автоматически обновляться при загрузке фильма.

.mejs-controls div.mejs-time-rail {
    position: absolute;
    width: 100%;
    left: 0;
    top: -10px;
}

.mejs-controls .mejs-time-rail span {
    position: absolute;
    display: block;
    cursor: pointer;
    width: 100%;
    height: 10px;
    top: 0;
    left: 0;
}

.mejs-controls .mejs-time-rail .mejs-time-total {
    background: rgb(152,152,152);
    background: rgba(152,152,152, .5);
}

.mejs-controls .mejs-time-rail .mejs-time-loaded {
    background: rgb(0,0,0);
    background: rgba(0,0,0, .3);
}

.mejs-controls .mejs-time-rail .mejs-time-current { width: 0; }

video player navigation

Шаг 8 – Маркер просмотра и индикатор времени

На этом этапе добавим маркер для шкалы просмотра и дополнительные подсказки, которые будут отображать текущее время просмотра при наведении курсора мыши. Зададим позицию, добавим фоновое изображение, установим ширину и высоту, добавим некоторые стили необходимые для текста.

.mejs-controls .mejs-time-rail .mejs-time-handle {
    position: absolute;
    cursor: pointer;
    width: 16px;
    height: 18px;
    top: -3px;
    background: url(../img/handle.png);
}

.mejs-controls .mejs-time-rail .mejs-time-float {
    position: absolute;
    display: none;
    width: 33px;
    height: 23px;
    top: -26px;
    margin-left: -17px;
    background: url(../img/tooltip.png);
}

.mejs-controls .mejs-time-rail .mejs-time-float-current {
    position: absolute;
    display: block;
    left: 0;
    top: 4px;

    font-family: Helvetica, Arial, sans-serif;
    font-size: 10px;
    font-weight: bold;
    color: #666666;
    text-align: center;
}

.mejs-controls .mejs-time-rail .mejs-time-float-corner { display: none; }

video player time

Шаг 9 - Зеленый градиент

На последнем шаге, добавим зеленый градиент CSS3, для шкалы просмотра и регулятора громкости.

.mejs-controls .mejs-time-rail .mejs-time-current,
.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
    background: #82d344;
    background: -webkit-linear-gradient(top, #82d344 0%, #51af34 100%);
    background: -moz-linear-gradient(top, #82d344 0%, #51af34 100%);
    background: -o-linear-gradient(top, #82d344 0%, #51af34 100%);
    background: -ms-linear-gradient(top, #82d344 0%, #51af34 100%);
    background: linear-gradient(top, #82d344 0%, #51af34 100%);
}

Перевод статьи How to Create an Video Player in jQuery, HTML5 & CSS3

Тэги: videoplayer

Вход

Уважаемый пользователь! Мы обнаружили, что вы используете AdBlock и вынуждены скрыть часть материалов на нашем сайте. Siteacademy существует и развивается за счет доходов от рекламы. Просим внести наш сайт в список исключений или отключить Блокировщик рекламы на нашем сайте.