2014-10-29 61 views
0

Sassmeister here有沒有辦法強制使用內在比率來填充元素,以垂直填充其容器?

如果一個元素的尺寸使用intrinsic ratio定義:

薩斯:

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。 – 2014-10-29 11:28:14

+0

@JeremyHolovacs添加了HTML。 – Undistraction 2014-10-29 11:31:12

+0

抱歉,我很難理解這裏的行爲,但是您是否曾嘗試在'.VideoContainer iframe'元素中添加'display:block;'?我會嘗試,並擺脫'width:100%;'元素。除此之外,也許屏幕截圖會有所幫助? – 2014-10-29 12:33:28

回答

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'默認是'div',因此'block'。 – Undistraction 2014-10-29 14:02:10

+0

divs是塊元素,但只按照慣例被設置爲'display:block;';這是一個重要的區別。使用Sassmeister控制檯中的上述代碼,更改窗口大小爲我縮放視頻大小,並將其保存在容器中。你使用的是什麼瀏覽器? – 2014-10-29 14:49:31

+0

我使用Chrome,但Safari和Ffox的結果相同。您已繞過固有比率並設置視頻以填充其容器。這與保持高寬比時裝入容器的方式不同:https://dl.dropboxusercontent.com/u/316978/aspect.jpg – Undistraction 2014-10-29 16:47:18