Недавно столкнулся с интересной задачей: в шапку сайта установить видео в качестве фона. Шапка всегда занимает первый экран и установлена по принципу background-position: 50% 0. Суть в том, что на планшете мы видим видео полностью, а на телефоне оно обрезается по краям и снизу остается только центральная часть.

Начнем с подготовки видео. Определим максимальные размеры нашей шапки и подгоним под них наше видео. Для примера возьмем размеры iPad в качестве максимальных значений шапки: 1024*768 (ну или 768 *1024, это как держать).
Приступим к разметке.
HTML
CSS
Пример на codepen
Выставляем высоту html,body в 100 процентов после чего можем растянуть наш header на высоту экрана. Помещаем в него header__video-wrapp, растянув его позиционированием на весь блок header и задав ему overflow:hidden. Дальше создадим еще один блок header__video-box и в него помещаем наш элемент video. Абсолютно позиционируем блок header__video-box left:50% top:0 и переходим к блоку video, задаем ему transform: translateX(-50%) — это переместить его на 50% относительно своей ширины влево. А поскольку он начинается относительно центра блока, то его центр будет всегда находиться в центре блока. Теперь выставим высоту в 100% и минимальную высоту 768px. Таким образом, мы сможем полностью заполнить шапку на iPade в любом положении, а на iPhone скроем нижнею часть видео.
Есть и второй вариант как поместить видео по центру.
В этом примере он позиционируется выравниванием текста по центру. HTML разметка не изменится, но изменится CSS в блоках header__video-box и header__video.
CSS
Пример на codepen
В блоке header__video-box задаем выравнивание текста по центру и отрицательными margin растягиваем блок за приделы родителя, так что бы он всегда был больше видео и располагался по центру. Блоку header__video мы выставляем display: inline-block и теперь он будет располагаться в центре. Добавим высоту, минимальную высоту и вертикальное выравнивание и теперь все готово.
Я привел пример для планшетов и телефонов, но этот подход можно без труда использовать и для разных разрешений экрана.
Не учел момент запрета autoplay… Ну что же, делаем большую красивую кнопку play для того чтобы можно было начать просмотр видео, когда захотим.

Начнем с подготовки видео. Определим максимальные размеры нашей шапки и подгоним под них наше видео. Для примера возьмем размеры iPad в качестве максимальных значений шапки: 1024*768 (ну или 768 *1024, это как держать).
Приступим к разметке.
HTML
<div class="header"> <div class="header__video-wrapp"> <div class="header__video-box"> <video class="header__video" loop autoplay> <source src="https://s3-us-west-2.amazonaws.com/coverr/mp4/Winter-Grass.mp4" type="video/mp4"> <source src="https://s3-us-west-2.amazonaws.com/coverr/mp4/Winter-Grass.mp4" type="video/webm"> </video> </div> </div> <div class='header__video-play' onclick='document.getElementById("header__video").play();'>play</div> </div>
CSS
html, body { margin: 0; padding: 0; width: 100%; height: 100%; } body { min-height: 100%; } .header { width:100%; height: 100%; max-height: 1024px; background: #000; overflow: hidden; position: relative; } .header__video-wrapp { position:absolute; top:0; left: 0; right: 0; bottom: 0; overflow: hidden; } .header__video-box { position: absolute; top:0; left: 50%; height: 100%; } .header__video { display: inline-block; height: 100%; transform: translateX(-50%); min-height: 768px; } .header__video-play{ width: 100px; position: relative; border-radius: 50%; padding: 35px 0; background: #fff; top: 10px; left: 25px; box-shadow: 0 0 12px 1px #000; font-size:22px; text-align: center; }
Пример на codepen
Выставляем высоту html,body в 100 процентов после чего можем растянуть наш header на высоту экрана. Помещаем в него header__video-wrapp, растянув его позиционированием на весь блок header и задав ему overflow:hidden. Дальше создадим еще один блок header__video-box и в него помещаем наш элемент video. Абсолютно позиционируем блок header__video-box left:50% top:0 и переходим к блоку video, задаем ему transform: translateX(-50%) — это переместить его на 50% относительно своей ширины влево. А поскольку он начинается относительно центра блока, то его центр будет всегда находиться в центре блока. Теперь выставим высоту в 100% и минимальную высоту 768px. Таким образом, мы сможем полностью заполнить шапку на iPade в любом положении, а на iPhone скроем нижнею часть видео.
Есть и второй вариант как поместить видео по центру.
В этом примере он позиционируется выравниванием текста по центру. HTML разметка не изменится, но изменится CSS в блоках header__video-box и header__video.
CSS
html, body { margin: 0; padding: 0; width: 100%; height: 100%; } body { min-height: 100%; } .header { width:100%; height: 100%; max-height: 1024px; background: #000; overflow: hidden; position: relative; } .header__video-wrapp { position:absolute; top:0; left: 0; right: 0; bottom: 0; overflow: hidden; } .header__video-box { text-align: center; margin: 0 -1000px; height: 100%; } .header__video { display: inline-block; vertical-align: top; height: 100%; min-height: 768px; }
Пример на codepen
В блоке header__video-box задаем выравнивание текста по центру и отрицательными margin растягиваем блок за приделы родителя, так что бы он всегда был больше видео и располагался по центру. Блоку header__video мы выставляем display: inline-block и теперь он будет располагаться в центре. Добавим высоту, минимальную высоту и вертикальное выравнивание и теперь все готово.
Я привел пример для планшетов и телефонов, но этот подход можно без труда использовать и для разных разрешений экрана.
Не учел момент запрета autoplay… Ну что же, делаем большую красивую кнопку play для того чтобы можно было начать просмотр видео, когда захотим.
