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

例如,如果我要嵌入 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 巧妙地完成吗?

【问题讨论】:

标签: jquery css height width aspect-ratio


【解决方案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 要更改大小,您是否希望它保持纵横比?
      猜你喜欢
      • 1970-01-01
      • 2018-04-29
      • 2011-11-04
      • 2011-09-10
      • 2012-01-23
      • 1970-01-01
      • 2014-08-28
      • 2020-06-14
      • 2012-12-30
      相关资源
      最近更新 更多