16:9宽高比,固定宽度

时间:2011-11-04 19:02:52

标签: jquery css height width aspect-ratio

如果我要嵌入YouTube视频,例如

<iframe width="560" src="http://www.youtube.com/embed/25LBTSUEU0A" class="player" frameborder="0" allowfullscreen></iframe>

使用jQuery我会设置一个高度为16:9的高度,所以如果宽度为560,则高度应为315px。
我有这个jquery设置高度,但我不知道如何应用16:9的比例

$('.player').parent().attr('width', ':9ratio');

或者可以用css整齐地完成吗?

5 个答案:

答案 0 :(得分:21)

宽高比只是宽度:高度。因此,如果您想根据已知宽度计算高度,那么非常简单。

//width=560, wanted height is 315
$('.player').parent().attr('height', 560*9/16);

答案 1 :(得分:3)

我建议使用css calc而不是jQuery:

width: 560px;
height: calc(560px * 9/16);

答案 2 :(得分:0)

$('.player').parent().attr('width', 560*9/16)

答案 3 :(得分:0)

相当古老的问题,但如果有人仍在寻求答案,那么这个问题可能是更好的方法。


    function getRelativeWidth(ratio, crntHght) {
        ratio = ratio.split(":");
        var wdthRto = ratio[0];
        var hghtRto = ratio[1];
        return ((wdthRto*crntHght) / hghtRto); 
    }

    function getRelativeHeight(ratio, crntWdth) {
        ratio = ratio.split(":");
        var wdthRto = ratio[0];
        var hghtRto = ratio[1];
        return ((crntWdth*hghtRto) / wdthRto); 
    }
    var wdth = 1600;
    var hght = 900;
    var getHeight = getRelativeHeight("16:9", wdth); 
    var getWeight = getRelativeWidth("16:9", hght); 

    console.log(getHeight);
    console.log(getWeight);

答案 4 :(得分:-1)

最好的方法是简单地使用CSS,因为您可以保留
它会在页面加载时响应并且没有可见的
iframe宽度和高度“跳跃”。

此外,您不必设置固定宽度(虽然您可以)

像这样:

iframe {width: 100%; height: calc(~'100% * 9/16');}