Полностью адаптируемый видео бэкграунд. Включая примеры с JS и CSS (Full Background)
Видео бекграунд – полностью адаптивный
Видео бекграунд основной пример (полностью адаптируется и ведет себя как свойство background-position:cover в CSS):
16: 9 источник видео в квадратном <video> элементе
Использование подгонки объекта
Проблемы при масштабировании – Серый фон для видео и красные черточки для окна просмотра
Центрирующий трюк
Видео бекграунд – полностью адаптивный
Если Вы хотите реализовать “человеческий” видео бекграунд, видео в котором будет всегда располагаться по центру и не иметь черных полос при масштабировании по вертикали (сверху и с низу) и по горизонтали (слова или справа). Видео бекграунд который находится в элементе.
И так начнем! Когда мне потребовалось реализовать видео бекграунд чтобы полностью покрыть фоновую область просмотра видео роликом, я решил, что мне придется использовать JavaScript, измерить область просмотра, а затем изменить размер и расположение видео соответственно полученным вычислениям.
Но после долгих мучений оказалось что в CSS, есть решение позволяющее полностью обойтись без JS. То что мы получим в итоге я сразу предоставляю ниже.
Видео бекграунд основной пример (полностью адаптируется и ведет себя как свойство background-position:cover в CSS):
Блок для видео по умолчанию
Взять <video> элемент и сделать его перекрывающим область просмотра так же просто, как с любым элементом HTML, например, с фиксированной позицией:
Это заставляет наш элемент видео принимать ширину и высоту области просмотра. Но если наш видео
источник имеет формат, отличный от разрешения пропорций экрана «(и это почти наверняка будет в случае , если мы используем только ширину и высоту! Окна просмотра), мы в конечном итоге получим черные полосы :
16: 9 источник видео в квадратном <video> элементе
Если вы привыкли к background-size свойству в CSS, вы знаете, что оно имеет значение «cover», которое дает именно тот эффект, которого мы пытаемся достичь здесь. Если бы мы могли использовать то же самое для изображений и видео контента при реализации задачи!
Ну, мы можем это сделать при помощи, object-fit! Увы, есть подвох.
Использование подгонки объекта
В браузерах, которые поддерживают object-fit свойство CSS, мы могли бы легко это исправить:
#myvid {
/* Тот же код, что и раньше, выше ... */
object-fit: cover;
}
Эта object-fit функция была разработана для всех визуальных элементов мультимедиа, включая изображения и видео. Это позволяет сообщать браузерам, как они должны помещать один прямоугольник (источник мультимедиа) в другой прямоугольник (элемент мультимедиа). В частности, он имеет cover и contain значения, которые работают так же, как аналогичные значения background-size. Также есть object-position свойство, похожее на background-position другое, за исключением того, что по умолчанию все центрировано ( object-position: 50% 50%).
Итак, object-fit делает все , что мы хотим, но … он поддерживается только в последних версиях Chrome (см.
Таблицу поддержки «Могу ли я использовать» ). Небольшая заметка о поддержке прошлого и будущего:
Впервые реализовано в Opera (прежде чем они отказались от собственного движка рендеринга)
Недавно добавлено в Chrome (с Chrome 32)
В Рекомендации кандидата 2012 года и Черновик редактора 2013 года эта функция помечена как «подверженная риску», хотя поддержка в Chrome может убедить W3C сохранить ее.
В любом случае, сейчас это не будет работать для наших нужд, поэтому давайте найдем работоспособное решение CSS.
Как работает видеоцентрирование? Возможны две ситуации: видео может быть переполнено по вертикали, или переполнено по горизонтали (и поиск решения на то и другое, это просто пустая трата).
Картинка может помочь:
Проблемы при масштабировании – Серый фон для видео и красные черточки для окна просмотра
Если соотношение сторон окна просмотра больше, чем соотношение сторон видео, видео будет переполнено сверху и снизу (первый пример).
Если соотношение сторон окна просмотра меньше, видео будет переполнено слева и справа.
Если мы уже знаем соотношение сторон видео, мы можем кодировать это в CSS. Обратите внимание, что нам нужно жестко закодировать соотношение сторон видео в медиазапросах:
Благодаря этому у нас есть правильные, полностью реагирующие размеры для нашего видео, независимо от размеров области просмотра. Но и от этого наш видео бекграунд все еще не располагается по центру.
Центрирующий трюк
Мы могли бы попытаться отцентрировать видео, используя отрицательные top (или margin-top) или left (или margin-left) значения, но получить правильное количество пикселей для смещения видео не так просто.
Я на самом деле пытался использовать calc() и единицы просмотра, это работало в Firefox и терпело неудачу в Chrome и Safari, и в целом это выглядело действительно загадочно. Короче не хорошее решение!
Итак, как мы можем центрировать блок с видео, который шире или выше, чем область просмотра, если мы не знаем его точных размеров? Легко! Мы делаем контейнер с большим размером, который больше, чем видео, и больше, чем область просмотра.
Вот грубая идея на картинке:
Пунктирный контур по-прежнему является нашим окном просмотра, светлый прямоугольник – нашим видео, а темная область – нашим контейнером с большим размером. Затем мы можем использовать любую технику центрирования CSS по нашему выбору (скажем, Flexbox) для центрирования видео внутри контейнера.
Но угадайте, что работает как контейнер, который автоматически центрирует видео? Поэтому мы можем пропустить создание блока и использование техник центрирования CSS! Теперь нам просто нужно сделать наш элемент видео слишком высоким или слишком широким и позволить браузеру обрабатывать центрирование автоматически и по умолчанию (по сути блок
по отображению получается похож на background-size:contain фонового изображения в CSS)
Но я бы также порекомендовал использовать контейнер
для переноса видео, и дать этому контейнеру размеры области просмотра (пунктирный контур). Почему? Потому что, если вы хотите добавить скриптовые кнопки вместе с вашим видео или любыми другими метаданными или контентом, которые вы хотите отображать поверх видео во время воспроизведения, это окажется полезным. Итак, давайте используем немного более подробную конфигурацию:
И … Вот и все! Возможно, вы захотите посмотреть страницу примера и изменить размер окна вашего браузера во время воспроизведения видео.
Пример который будет предоставлен в конце данного пункта, это сырой пример с применением всего что я описал Выше, на основе которого создан видео бекгрунд (видео фон) моего основного сайта http://sdstudio.top/. С той разницей что идентификатор #SDStudio_VIDEO_BACKGROUND был применен к секции созданной при помощи конструктора страниц ELEMENTOR. Но для того что бы описать каким именно образом осуществить применение видео бэкграунда в ELEMENTOR’E я считаю правильным написать отдельный пост,и уже не сегодня…. Как не как третий час ночи :).
На этом все, надеюсь я разъяснил максимально доступно каким образом можно создать полностью адаптируемый и правильный видео фон для Вашего сайта или очередного проекта.
ПС. Отдельное спасибо автору данного поста: https://fvsch.com/video-background/
Источник записи:
Адаптивные изображения и видео на сайте — учебник CSS
После того, как вы разобрались с гибкой сеткой, настало время обратить внимание на другое содержимое веб-страниц, которое требует определенных манипуляций, чтобы стать адаптивным. Речь идет об изображениях и видео. Если вы просто добавите изображение на веб-страницу и уменьшите окно браузера, то увидите, что картинка не адаптируется под ширину окна, а сохраняет свои исходные размеры. Это может привести к появлению горизонтальной прокрутки, а также к тому, что изображение будет выходить за пределы адаптивной колонки:
Адаптивные изображения с помощью CSS
Как сделать изображение адаптивным с помощью CSS? Для начала вам понадобится убрать атрибуты ширины и высоты в теге изображения (если таковые имеются). Ваш HTML-код не должен их содержать:
<img src="https://goo.gl/PAuNsb" alt="baobab" />
<!-- атрибуты width и height необходимо убрать -->
<img src="https://goo.gl/PAuNsb" alt="baobab" />
В таблицу стилей добавьте следующую запись:
img {
max-width: 100%;
}
Это означает, что максимальная ширина тега <img> будет равна ширине блока-контейнера, в котором он содержится. Изображение не сможет выйти за пределы своего родителя, а при изменении ширины родителя оно будет автоматически подстраиваться под нее.
Точно так же можно сделать ширину изображения равной, например, половине ширины родительского контейнера:
img {
max-width: 50%;
}
Адаптивные видео
Чтобы сделать адаптивными теги <video>, а также <embed> и <object>, добавьте для них такой же CSS-код, как и для изображений. Желательно перечислить сразу все селекторы:
img, video, embed, object {
max-width: 100%;
}
Адаптивные iframe
Дела обстоят сложнее, если вы встраиваете видео через тег <iframe>. Тогда вышеописанный метод здесь не работает. Придется прибегнуть либо к помощи JavaScript, либо использовать более хитрый CSS-код.
Если вы выбрали второй вариант, вам понадобится поместить тег <iframe> в дополнительный контейнер <div>. Например:
Как вы заметили, в коде присутствует свойство padding-bottom со странным значением 56.25%. Что это означает? Значение padding-bottom, указанное в процентах, считается относительно ширины блока. Число 56.25 мы получили, определив соотношение сторон встраиваемого видео (16:9) и разделив число короткой стороны на число длинной стороны, после чего умножив результат на 100:
(9/16) * 100 = 56.25%
Если вы собираетесь встраивать видео с другим соотношением сторон, скажем, 4:3, то для определения подходящего значения padding-bottom проделайте ту же процедуру:
(3/4) * 100 = 75%
Данный метод используется и в фреймворке Bootstrap.
Далее в учебнике: знакомство с Flexbox.
Tailwind CSS Video — Flowbite
Начните работу с компонентом видео, чтобы встроить внутренний источник видео в встроенный видеопроигрыватель HTML 5 и настроить пользовательские параметры, такие как автовоспроизведение или отключение звука, для улучшения взаимодействия с пользователем.
Видеоплеер
#
Используйте этот пример, чтобы создать собственный видеоплеер для браузера и применить служебный класс w-full из Tailwind CSS, чтобы охватить всю ширину родительского контейнера.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление видео>
Ваш браузер не поддерживает видео тег.
Автозапуск
#
Используйте атрибут autoplay в компоненте видео для автоматического запуска видео при загрузке страницы.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление автозапуском видео>
Ваш браузер не поддерживает видео тег.
Без звука
#
Используйте атрибут muted вместе с опцией autoplay для запуска видео при отключенном звуке.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<элементы управления автозапуском видео>
Ваш браузер не поддерживает видео тег.
Размеры
#
Установите ширину и высоту видеокомпонента с помощью служебных классов w-{size} и h-{size} из Tailwind CSS.
Ширина
#
Используйте класс w-{size} , чтобы установить ширину видеокомпонента.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление видео>
Ваш браузер не поддерживает видео тег.
Высота
#
Используйте класс h-{size} , чтобы установить высоту видеоплеера.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление видео>
Ваш браузер не поддерживает видео тег.
Адаптивный
#
Используйте следующий пример, чтобы сделать видео адаптивным для всех устройств и областей просмотра.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление видео>
Ваш браузер не поддерживает видео тег.
Пользовательские стили
#
Настройте внешний вид видеоплеера с помощью служебных классов из Tailwind CSS, таких как rounded-{size} или border , чтобы установить закругленные углы и границу.
Изменить на GitHub
Включить полноэкранный режим
Переключить вид планшета
Переключить мобильное представление
Переключить темный режим
Загрузка. ..
HTML
Скопировать в буфер обмена
Ваш браузер не поддерживает видео тег.
<управление видео>
Ваш браузер не поддерживает видео тег.
← Хронология
КБД (Клавиатура)→
Получить больше обновлений…
Хотите получать уведомления, когда в Flowbite добавляется новый компонент? Подпишитесь на нашу рассылку, и вы будете в числе первых, кто узнает о новых функциях, компонентах, версиях и инструментах.
Адрес электронной почты
Адаптивный видеохак · GitHub
CSS: адаптивный видео хак
Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode.
Узнайте больше о двунаправленных символах Unicode