16:9 宽高比,固定宽度

发布于 2024-12-13 12:23:44 字数 396 浏览 3 评论 0原文

例如,如果我要使用 jQuery 嵌入 YouTube 视频,

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

我会设置纵横比为 16:9 的高度,因此如果宽度为 560,则高度应为 315px。
我有这个 jquery 来设置高度,但我不知道如何应用 16:9 比例

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

,或者可以使用 css 巧妙地完成此操作吗?

If I were to embed a YouTube video for example

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

Using jQuery would I set a height with an aspect ration of 16:9 so if the width is 560 the height should be 315px.
I have this jquery to set a height but I dont know how to apply the 16:9 ratio

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

or can this be done neatly using css?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

妞丶爷亲个 2024-12-20 12:23:44

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

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

Aspect ratio is just width:height. So if you wanted to calculate the height based on a known width it is pretty straightforward.

//width=560, wanted height is 315
$('.player').parent().attr('height', 560*9/16);
一指流沙 2024-12-20 12:23:44

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

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

I would recommend using css calc instead of jQuery for this:

width: 560px;
height: calc(560px * 9/16);
苍白女子 2024-12-20 12:23:44

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

    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);

Pretty old question but if somebody still seeking for the answer, this one could be a better approach.

    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);

旧人哭 2024-12-20 12:23:44
$('.player').parent().attr('width', 560*9/16)
$('.player').parent().attr('width', 560*9/16)
望笑 2024-12-20 12:23:44

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

另外,您不必设置固定宽度(尽管您可以)

像这样:

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

The best way is to simply use CSS because u can keep
it responsive as the page loads and not have a visible
'jump' in the iframe width and height.

Also, you don't have to set a fixed width (although u can)

like this:

iframe {width: 100%; height: calc(~'100% * 9/16');}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文