Полностью адаптируемый видео бэкграунд. Включая примеры с JS и CSS (Full Background)
Видео бекграунд – полностью адаптивный
Видео бекграунд основной пример (полностью адаптируется и ведет себя как свойство background-position:cover в CSS):16: 9 источник видео в квадратном <video> элементе
Использование подгонки объектаПроблемы при масштабировании – Серый фон для видео и красные черточки для окна просмотра
Центрирующий трюк
Видео бекграунд – полностью адаптивный
Если Вы хотите реализовать “человеческий” видео бекграунд, видео в котором будет всегда располагаться по центру и не иметь черных полос при масштабировании по вертикали (сверху и с низу) и по горизонтали (слова или справа). Видео бекграунд который находится в элементе.
И так начнем! Когда мне потребовалось реализовать видео бекграунд чтобы полностью покрыть фоновую область просмотра видео роликом, я решил, что мне придется использовать JavaScript, измерить область просмотра, а затем изменить размер и расположение видео соответственно полученным вычислениям.
Но после долгих мучений оказалось что в CSS, есть решение позволяющее полностью обойтись без JS. То что мы получим в итоге я сразу предоставляю ниже.
Видео бекграунд основной пример (полностью адаптируется и ведет себя как свойство background-position:cover в CSS):
Блок для видео по умолчанию
Взять <video> элемент и сделать его перекрывающим область просмотра так же просто, как с любым элементом HTML, например, с фиксированной позицией:
#myvid { position: fixed; top: 0; right: 0; bottom: 0; left: 0; }
Это заставляет наш элемент видео принимать ширину и высоту области просмотра. Но если наш видео источник имеет формат, отличный от разрешения пропорций экрана «(и это почти наверняка будет в случае , если мы используем только ширину и высоту! Окна просмотра), мы в конечном итоге получим черные полосы :
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. Обратите внимание, что нам нужно жестко закодировать соотношение сторон видео в медиазапросах:
#myvid { position: fixed; top: 0; left: 0; } @media (min-aspect-ratio: 16/9) { #myvid { width: 100%; height: auto; /* actually taller than viewport */ } } @media (max-aspect-ratio: 16/9) { #myvid { width: auto; /* actually wider than viewport */ height: 100%; } }
Благодаря этому у нас есть правильные, полностью реагирующие размеры для нашего видео, независимо от размеров области просмотра. Но и от этого наш видео бекграунд все еще не располагается по центру.
Центрирующий трюк
Мы могли бы попытаться отцентрировать видео, используя отрицательные top (или margin-top) или left (или margin-left) значения, но получить правильное количество пикселей для смещения видео не так просто. Я на самом деле пытался использовать calc() и единицы просмотра, это работало в Firefox и терпело неудачу в Chrome и Safari, и в целом это выглядело действительно загадочно. Короче не хорошее решение!
Итак, как мы можем центрировать блок с видео, который шире или выше, чем область просмотра, если мы не знаем его точных размеров? Легко!
Мы делаем контейнер с большим размером, который больше, чем видео, и больше, чем область просмотра.Вот грубая идея на картинке:
Пунктирный контур по-прежнему является нашим окном просмотра, светлый прямоугольник – нашим видео, а темная область – нашим контейнером с большим размером. Затем мы можем использовать любую технику центрирования CSS по нашему выбору (скажем, Flexbox) для центрирования видео внутри контейнера.
Но угадайте, что работает как контейнер, который автоматически центрирует видео? Поэтому мы можем пропустить создание блока и использование техник центрирования CSS! Теперь нам просто нужно сделать наш элемент видео слишком высоким или слишком широким и позволить браузеру обрабатывать центрирование автоматически и по умолчанию (по сути блок
по отображению получается похож на background-size:contain фонового изображения в CSS)#myvid { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } @media (min-aspect-ratio: 16/9) { #myvid { height: 300%; top: -100%; /* or height: 200%; top: -50%; or height: 400%; top: -150%; */ } } @media (max-aspect-ratio: 16/9) { #myvid { width: 300%; left: -100%; /* or width: 200%; left: -50%; or width: 400%; left: -150%; */ } }
Это будет хорошо работать. Но я бы также порекомендовал использовать контейнер
для переноса видео, и дать этому контейнеру размеры области просмотра (пунктирный контур). Почему? Потому что, если вы хотите добавить скриптовые кнопки вместе с вашим видео или любыми другими метаданными или контентом, которые вы хотите отображать поверх видео во время воспроизведения, это окажется полезным. Итак, давайте используем немного более подробную конфигурацию:
#SDStudio_VIDEO_BACKGROUND { position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow: hidden; } #SDStudio_VIDEO_BACKGROUND > video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* 1. Если не поддерживает support: */ @media (min-aspect-ratio: 16/9) { #SDStudio_VIDEO_BACKGROUND > video { height: 300%; top: -100%; } } @media (max-aspect-ratio: 16/9) { #SDStudio_VIDEO_BACKGROUND > video { width: 300%; left: -100%; } } /* 2. Если поддерживает object-fit, overriding (1): */ @supports (object-fit: cover) { #SDStudio_VIDEO_BACKGROUND > video { top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } }
И … Вот и все! Возможно, вы захотите посмотреть страницу примера и изменить размер окна вашего браузера во время воспроизведения видео.
Пример который будет предоставлен в конце данного пункта, это сырой пример с применением всего что я описал Выше, на основе которого создан видео бекгрунд (видео фон) моего основного сайта http://sdstudio.top/. С той разницей что идентификатор #SDStudio_VIDEO_BACKGROUND был применен к секции созданной при помощи конструктора страниц ELEMENTOR. Но для того что бы описать каким именно образом осуществить применение видео бэкграунда в ELEMENTOR’E я считаю правильным написать отдельный пост,и уже не сегодня…. Как не как третий час ночи :).
На этом все, надеюсь я разъяснил максимально доступно каким образом можно создать полностью адаптируемый и правильный видео фон для Вашего сайта или очередного проекта.
ПС. Отдельное спасибо автору данного поста: https://fvsch.com/video-background/
Источник записи:
html and css video|TikTok Search
TikTok
Uploadcodingworld786
Html and Css Projects.
Html and Css Projects. (@codingworld786)’s videos with Dark Light — VOLB3X & Beatshoundz | TikTok
5.1K Likes, 34 Comments. TikTok video from Html and Css Projects. (@codingworld786). Dark Light — VOLB3X & Beatshoundz.
64K views|
Dark Light — VOLB3X & Beatshoundz
hellocodelab
hellocode
hellocode (@hellocodelab)’s videos with Dj Terompet Pemersatu Bangsa — PAMOKHOL ID | TikTok
14.8K Likes, 58 Comments. TikTok video from hellocode (@hellocodelab). Dj Terompet Pemersatu Bangsa — PAMOKHOL ID.
174.2K views|
Dj Terompet Pemersatu Bangsa — PAMOKHOL ID
hellocodelab
hellocode
hellocode (@hellocodelab)’s videos with Serenade — Diverseddie | TikTok
35.7K Likes, 77 Comments. TikTok video from hellocode (@hellocodelab). Serenade — Diverseddie.
318.9K views|
Serenade — Diverseddie
hellocodelab
hellocode
hellocode (@hellocodelab)’s videos with Ghibli-style nostalgic waltz — MaSssuguMusic | TikTok
63K Likes, 187 Comments. TikTok video from hellocode (@hellocodelab). Ghibli-style nostalgic waltz — MaSssuguMusic.
562.5K views|
Ghibli-style nostalgic waltz — MaSssuguMusic
hellocodelab
hellocode
hellocode (@hellocodelab)’s videos with Ready — Official Sound Studio | TikTok
582 Likes, TikTok video from hellocode (@hellocodelab). Ready — Official Sound Studio.
14.7K views|
Ready — Official Sound Studio
khalid.
jsxkh0.9
How to make a Neumorphic Card UsingHTML & CSS only.🪄
Dont forget to Follow, Like & share for more Videos 🪄
#programming #coding #codingtricks
#programmer #programmingtricks #html #htmlcss #htmlcoding #codingtips #codingtipsforbeginners #tipsandtricks #codinglife #programmerlife
#devcommunity #codinglove #learnprogramming #webdevelopment #programminglife
#frontenddevelopment # design #effects
#typ #fypシviral #Hover #fypシ #save
648 Likes, 40 Comments. TikTok video from kh0.9 (@khalid.jsx): «How to make a Neumorphic Card Using HTML & CSS only.🪄 Dont forget to Follow, Like & share for more Videos 🪄 #programming #coding #codingtricks #programmer #programmingtricks #html #htmlcss #htmlcoding #codingtips #codingtipsforbeginners #tipsandtricks #codinglife #programmerlife #devcommunity #codinglove #learnprogramming #webdevelopment #programminglife #frontenddevelopment # design #effects #typ #fypシviral #Hover #fypシ#save». Dark Neumorphic Card, HTML & CSS ONLYDark Neumorphic Card original sound — kh0.9.
11.2K views|
original sound — kh0.9
hellocodelab
hellocode
hellocode (@hellocodelab)’s videos with yaay — cipaa | TikTok
15.5K Likes, 47 Comments. TikTok video from hellocode (@hellocodelab). yaay — cipaa.
173.1K views|
yaay — cipaa
marcelous7_
Marcelous
@primevideo LOGIN SCREEN IN HTML AND CSS #programacaoweb #programador #hmtl #stylecss #javascript #programming #java #script #primevideo #amazon
288 Likes, TikTok video from Marcelous (@marcelous7_): «@primevideo LOGIN SCREEN IN HTML AND CSS #programacaoweb #programador #hmtl #stylecss #javascript #programming #java #script #primevideo #amazon». Roxanne — Instrumental — Califa Azul.
54.9K views|
Roxanne — Instrumental — Califa Azul
0smart_page1
smart_page
Simple Card Hover Effect On Html/Css #frontend #lifehack #video #viral #elbruso #hover #htmlcss
92.7K Likes, 246 Comments. TikTok video from smart_page (@0smart_page1): «Simple Card Hover Effect On Html/Css #frontend #lifehack #video #viral #elbruso #hover #htmlcss». оригінальний аудіозапис – smart_page — smart_page.
846.2K views|
оригінальний аудіозапис – smart_page — smart_page
khalid.jsx
kh0.9
🪄How to make a Futuristic Animated Card UsingHTML & CSS only.🪄Dont forget to Follow & Like for more Videos.
#programming #coding #codingtricks #programmer #programmingtricks #html #htmlcss
#htmlcoding #codingtips #codingtipsforbeginners #tipsandtricks #codinglife #programmerlife #devcommunity #codinglove #learnprogramming #webdevelopment #programminglife #frontenddevelopment #design #effects1. 7K Likes, 30 Comments. TikTok video from kh0.9 (@khalid.jsx): «🪄How to make a Futuristic Animated Card UsingHTML & CSS only.🪄 Dont forget to Follow & Like for more Videos. #programming #coding #codingtricks #programmer #programmingtricks #html #htmlcss #htmlcoding #codingtips #codingtipsforbeginners #tipsandtricks#codinglife #programmerlife #devcommunity #codinglove #learnprogramming #webdevelopment #programminglife #frontenddevelopment #design #effects». Card Hover Effect, HTML & CSS ONLY original sound — kh0.9.
27.8K views|
original sound — kh0.9
Tailwind CSS Video — Flowbite
Начните работу с компонентом видео, чтобы встроить внутренний источник видео в собственный видеопроигрыватель HTML 5 и установить пользовательские параметры, такие как автовоспроизведение или отключение звука, для улучшения взаимодействия с пользователем.
Видеоплеер #
Используйте этот пример, чтобы создать собственный видеоплеер для браузера и применить служебный класс w-full
из Tailwind CSS, чтобы охватить всю ширину родительского контейнера.
- HTML
Ваш браузер не поддерживает видео тег.
<управление видео>
Автозапуск #
Используйте атрибут autoplay
в компоненте видео для автоматического запуска видео при загрузке страницы.
- HTML
Ваш браузер не поддерживает видео тег.
<управление автозапуском видео>
Без звука #
Используйте атрибут muted
вместе с опцией autoplay
для запуска видео при отключенном звуке.
- HTML
Ваш браузер не поддерживает видео тег.
<элементы управления автозапуском видео>
Размеры #
Установите ширину и высоту видеокомпонента с помощью служебных классов w-{size}
и h-{size}
из Tailwind CSS.
Ширина #
Используйте класс w-{size}
, чтобы установить ширину видеокомпонента.
- HTML
Ваш браузер не поддерживает видео тег.
<управление видео> mp4" type="video/mp4"> Ваш браузер не поддерживает видео тег. видео>
Высота #
Используйте класс h-{size}
, чтобы установить высоту видеоплеера.
- HTML
Ваш браузер не поддерживает видео тег.
<управление видео>
Адаптивный #
Используйте следующий пример, чтобы сделать видео адаптивным для всех устройств и областей просмотра.
Изменить на GitHub Включить полноэкранный режим Переключить вид планшета Переключить мобильное представление Переключить темный режим Загрузка…- HTML
Ваш браузер не поддерживает видео тег.
<управление видео>
Пользовательские стили #
Настройте внешний вид видеоплеера с помощью служебных классов из Tailwind CSS, таких как rounded-{size}
или border
, чтобы установить закругленные углы и границу.
- HTML
Ваш браузер не поддерживает видео тег.
<управление видео>← Типографика Поле ввода→
Получить больше обновлений…
Хотите получать уведомления, когда в Flowbite добавляется новый компонент? Подпишитесь на нашу рассылку, и вы будете в числе первых, кто узнает о новых функциях, компонентах, версиях и инструментах.
Подписываясь, вы соглашаетесь с Условиями обслуживания и Политикой конфиденциальности ConvertKit.
html — видео CSS не растягивается до 100% ширины родительского контейнера
* { маржа: 0; заполнение: 0; box-sizing: граница-коробка; } . top-рейтинг-контейнер-1 { ширина: 100%; поле: 0 авто; } .видео-контейнер { ширина: 100%; граница: 1px сплошной черный; } .video-контейнер видео { ширина: 100%; высота: 250 пикселей; }
<раздел> <дел>
У меня есть элемент видео в HTML-коде, и я указал его ширину равной 100% в CSS. Однако видео не занимает всю ширину своего контейнера, и я не могу понять, почему. Я попытался переопределить конфликтующие стили и проверить ширину родительского контейнера, но проблема не устранена. Я ищу решение, чтобы видеоэлемент занимал 100% ширины своего контейнера.
Я попытался задать в CSS ширину видеоэлемента равной 100%, а также установить абсолютное значение ширины в пикселях. Я ожидал, что видео займет всю ширину контейнера, но этого не произошло. Элемент видео не растягивается, чтобы заполнить ширину контейнера, и я не уверен, что вызывает проблему.
Я также пытался установить высоту видеоэлемента на auto
, но высота все равно занимала весь экран. Мне нравится иметь определенный рост, но растянутый на 100%, как на фото ниже.
Вывод должен выглядеть следующим образом.
- HTML
- CSS
Вам нужно добавить объект-подгонка: заполнить
в <видео>
:
* { маржа: 0; заполнение: 0; box-sizing: граница-коробка; } .top-рейтинг-контейнер-1 { ширина: 100%; поле: 0 авто; } .видео-контейнер { ширина: 100%; граница: 1px сплошной черный; } . video-контейнер видео { ширина: 100%; высота: 250 пикселей; объект-подгонка: заполнить; }
<раздел> <дел>