2014-10-29 4 views
0

Sassmeister hereЕсть ли какой-либо способ заставить элемент, используя внутреннее соотношение, заполнить его контейнер вертикально, а также горизонтально?

Если размеры Элементом в определяются с помощью intrinsic ratio:

Sass:

body, 
html, 
.Wrapper 
{ 
    width:100%; 
    height: 100%; 
} 

.VideoContainer 
{ 
    position: relative; 
    max-width: 100%; 
    height: 0; 
    overflow: hidden; 

    &.Sixteen-Nine { 
    padding-bottom: 56.25%; 
    } 

    &.Four-Three { 
    padding-bottom: 75%; 
    } 
} 

.VideoContainer iframe, 
.VideoContainer object, 
.VideoContainer embed 
{ 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
} 

HTML:

<div class="Wrapper"> 
    <div class="VideoContainer Vimeo Sixteen-Nine"> 
    <iframe src="http://player.vimeo.com/video/109777141?byline=0&amp;portrait=0&amp;badge=0&amp;color=090909" class="js-only" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe> 
    </div> 
</div> 

Есть ли способ, чтобы содержать его так, чтобы он изменяется до высоты его контейнера?

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

мне нужно поддерживать IE9 +, и я не хочу, вы можете сказать мне, если это то, что вы имели в виду использовать JavaScript

+0

Пожалуйста, покажите свой html. –

+0

@JeremyHolovacs Добавил HTML. – Undistraction

+0

жаль, что мне трудно понять поведение здесь, но попробовали добавить 'display: block;' в элементе '.VideoContainer iframe'? Я бы попробовал это и избавился от элемента 'width: 100%;'. Кроме этого, возможно, экранный снимок поможет? –

ответ

0

?

.Wrapper 
{ 
    display: block; 
    width: 100%; 
} 

.VideoContainer 
{ 
    position: absolute; 
    height: 100%; 
    display: block; 
    width: 100%; 
    &.Sixteen-Nine { 
    padding-bottom: 56.25%; 
    } 

    &.Four-Three { 
    padding-bottom: 75%; 
    } 
} 

.VideoContainer div 
{ 
    height: 100%; 
} 

.VideoContainer div iframe{ 
    height: 100%; 
    width: 100%; 
} 


<div class="Wrapper"> 
    <div class="VideoContainer Vimeo Sixteen-Nine"> 
    <div> 
     <iframe src="http://player.vimeo.com/video/109777141?byline=0&amp;portrait=0&amp;badge=0&amp;color=090909" class="js-only" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe> 
    </div> 
</div> 
</div> 
+0

Это не имеет никакого значения. Когда Wrapper изменяется по вертикали, видео перегружает контейнер. Кроме того, 'Wrapper' является' div' и, следовательно, 'block' по умолчанию. – Undistraction

+0

divs - это элементы блока, но они называются «display: block;» только по соглашению; это важное различие. Используя приведенный выше код в консоли Sassmeister, изменение размера окна изменило размер видео для меня, сохранив его в контейнере. Какой браузер вы используете? –

+0

Я использую Chrome, но результат такой же в Safari и Ffox. Вы обойдете внутреннее соотношение и установите видео для заполнения своего контейнера. Это не то же самое, что подходит в контейнере при сохранении пропорций: https://dl.dropboxusercontent.com/u/316978/aspect.jpg – Undistraction