2013-11-21 3 views
18

У меня есть видео, и я хочу, чтобы он заполнил 100% ширины и 100% высоты. И сохраните пропорции.Видео 100% ширина и высота

Возможно ли, что он как минимум заполняет 100% для обоих? И если немного видео должно быть вне экрана, чтобы сохранить соотношение сторон, это не имеет значения.

HTML:

<video preload="auto" class="videot" id="videot" height="100%" preload> 
    <source src="BESTANDEN/video/tible.mp4" type="video/mp4" > 
    <object data="BESTANDEN/video/tible.mp4" height="1080"> 
     <param name="wmode" value="transparent"> 
     <param name="autoplay" value="false" > 
     <param name="loop" value="false" > 
    </object> 

CSS:

.videof, .videot { 
    width: 100% !important; 
    height: 100% !important; 
} 
+0

Вместо этого попробуйте использовать 'max-width' и' max-height'. Установив ширину '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 100%, вы можете растянуть видео, – Scott

+0

Вместо этого я использовал min-width и min-height, потому что максимальная высота и ширина не работали. Но теперь видео полноэкранный, но по ширине все равно макс; размер видео. И он не станет больше ... – Milan

ответ

6

Вы можете использовать Javascript динамически установить высоту до 100% от окна а затем центрировать его, используя отрицательное левое поле, основанное на соотношении видео w idth до ширины окна.

http://jsfiddle.net/RfV5C/

var $video = $('video'), 
    $window = $(window); 

$(window).resize(function(){ 
    var height = $window.height(); 
    $video.css('height', height); 

    var videoWidth = $video.width(), 
     windowWidth = $window.width(), 
    marginLeftAdjust = (windowWidth - videoWidth)/2; 

    $video.css({ 
     'height': height, 
     'marginLeft' : marginLeftAdjust 
    }); 
}).resize(); 
+0

Это не заполняет как ширину, так и высоту, если и увеличить размер окна, а затем оставить пробел. Так что на самом деле это не приемлемый ответ на его вопрос. – Chrillewoodz

+0

Если вы измените размер окна, вам нужно вызвать функцию для изменения размера видео. jQuery: '$ (window) .resize (function() {console.log (« run resize function again! »);});' – duhaime

2

для достижения этой цели я использую JavaScript и CSS. Функция JS нужно вызывать один раз при инициализации и при изменении размера окна. Просто протестирован в Chrome.

HTML:

<video width="1920" height="1080" controls> 
    <source src="./assets/video.mp4" type="video/mp4"> 
    Your browser does not support the video tag. 
</video> 

JavaScript:

function scaleVideo() { 
    var vid = document.getElementsByTagName('video')[0]; 
    var w = window.innerWidth; 
    var h = window.innerHeight; 

    if (w/16 >= h/9) { 
     vid.setAttribute('width', w); 
     vid.setAttribute('height', 'auto'); 
    } else { 
     vid.setAttribute('width', 'auto'); 
     vid.setAttribute('height', h); 
    } 
} 

CSS:

video { 
    position:absolute; 
    left:50%; 
    top:50%; 
    -webkit-transform:translate(-50%,-50%); 
    transform:translate(-50%,-50%); 
} 
26

Проверив другие ответы, я использовал объектно-FIT в CSS:

video { 
    object-fit: fill; 
} 

От MDN (https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit):

Объектно-ориентированное свойство CSS указывает, как содержимое замененного элемента должно быть установлено в поле, установленное его используемой высотой и шириной.

Значение: заполнить

Замененное содержание имеет размер, чтобы заполнить окно содержимого элемента: Конкретный размер объекта объекта используется ширина и высота элемента.

+1

Это работает лучше всего для меня – Fox

+2

Это искажает видео для меня. – silvenon

0

Я новичок во всем этом. Возможно, вы можете просто добавить/изменить этот HTML-код. Без CSS. Он работал для меня :)

width="100%" height="height" 
5

Если вы ищете эквивалентной background-size: cover для video.

video { 
    object-fit: cover; 
} 

Это заполнит контейнер без искажения видео.


PS: Я распространяющееся на Leo Yu's answer здесь.

+0

спасательный жилет. огромное спасибо. – Jbur43

+0

@Fabian Schultz life saver +1 – tonkihonks13

+0

Вы заслуживаете медаль ... спасибо mate – iceDragon

Смежные вопросы