Рішення M-Pixel чудово тим, що воно вирішує проблему масштабування відповіді Тимофія (відео збільшиться вгору, але не зменшиться, тому, якщо ваше відео дійсно велике, є хороші шанси, що ви побачите лише невеликий масштаб в його частині). Однак це рішення базується на помилкових припущеннях, пов’язаних із розміром відеоконтейнера, а саме, що це обов'язково 100% ширини та висоти вікна перегляду. Я знайшов декілька випадків, коли це не спрацювало для мене, тому я вирішив вирішити проблему сам, і я вважаю, що придумав остаточне рішення .
HTML
<div class="parent-container">
<div class="video-container">
<video width="1920" height="1080" preload="auto" autoplay loop>
<source src="video.mp4" type="video/mp4">
</video>
</div>
</div>
CSS
.parent-container {
/* any width or height */
position: relative;
overflow: hidden;
}
.video-container {
width: 100%;
min-height: 100%;
position: absolute;
left: 0px;
/* center vertically */
top: 50%;
-moz-transform: translate(0%, -50%);
-ms-transform: translate(0%, -50%);
-webkit-transform: translate(0%, -50%);
transform: translate(0%, -50%);
}
.video-container::before {
content: "";
display: block;
height: 0px;
padding-bottom: 56.25%; /* 100% * 9 / 16 */
}
.video-container video {
width: auto;
height: 100%;
position: absolute;
top: 0px;
/* center horizontally */
left: 50%;
-moz-transform: translate(-50%, 0%);
-ms-transform: translate(-50%, 0%);
-webkit-transform: translate(-50%, 0%);
transform: translate(-50%, 0%);
}
Він також ґрунтується на співвідношенні відео, тому якщо ваше відео має співвідношення, відмінне від 16/9, ви хочете змінити нижню частину нижньої частини. Крім цього, він працює поза коробкою. Тестовано в IE9 +, Safari 9.0.1, Chrome 46 та Firefox 41.
EDIT (17 березня 2016 р.)
Так як я опублікував цю відповідь я написав невеличкий модуль CSS для імітації як background-size: cover
і background-size: contain
на <video>
елементах: http://codepen.io/benface/pen/NNdBMj
Він підтримує різні вирівнювання для відео (подібні до background-position
). Також зауважте, що contain
реалізація не є ідеальною. На відміну від background-size: contain
цього, відео не буде масштабувати його фактичний розмір, якщо ширина та висота контейнера будуть більшими, але я думаю, що він може бути корисним у деяких випадках. Я також додав спеціальні fill-width
та fill-height
класи, які ви можете використовувати разом, contain
щоб отримати спеціальну суміш contain
і cover
... спробуйте, і сміливо вдосконалюйте її!