16:9 宽高比,固定宽度

Posted

技术标签:

【中文标题】16:9 宽高比,固定宽度【英文标题】:16:9 aspect ratio with fixed width 【发布时间】:2011-12-22 07:17:26 【问题描述】:

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

<iframe  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 巧妙地完成吗?

【问题讨论】:

Get YouTube Video dimensions (width/height) 的可能重复项 【参考方案1】:

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

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

像这样:

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

【讨论】:

【参考方案2】:

相当老的问题,但如果有人仍在寻找答案,这可能是一种更好的方法。

函数getRelativeWidth(比率,crntHght) ratio = ratio.split(":"); var wdthRto = 比率[0]; var hghtRto = 比率[1]; 返回 ((wdthRto*crntHght) / hghtRto); 函数getRelativeHeight(比率,crntWdth) ratio = ratio.split(":"); var wdthRto = 比率[0]; var hghtRto = 比率[1]; 返回 ((crntWdth*hghtRto) / wdthRto); var wdth = 1600; 变量 hght = 900; var getHeight = getRelativeHeight("16:9", wdth); var getWeight = getRelativeWidth("16:9", hght); 控制台.log(getHeight); 控制台.log(getWeight);

【讨论】:

【参考方案3】:

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

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

【讨论】:

对于奖励积分,相反的是什么?例如,当您有高度但想要宽度时? 翻转除数,例如 315 * 16/9 = 560【参考方案4】:

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

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

【讨论】:

这实际上是一个非常好的解决方案。我在 2011 年问过这个问题,我一直在想为什么我们不能通过 css 做到这一点。现在是绝妙的解决方案。【参考方案5】:
$('.player').parent().attr('width', 560*9/16)

【讨论】:

是否保持纵横比? 如果 iframe 要更改大小,您是否希望它保持纵横比?

以上是关于16:9 宽高比,固定宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何在保持宽高比的同时将图像调整为固定的宽度和高度?

全宽(固定高度)响应youtube嵌入横幅

css体验优化之图片容器设置宽高比

确保img的宽高比固定

屏幕适配

16:9 宽高比应用程序和背景(考虑导航占用的空间)