gpt4 book ai didi

javascript - 仅使用 CSS 保持基于宽度和高度的纵横比

转载 作者:行者123 更新时间:2023-11-28 10:50:24 24 4
gpt4 key购买 nike

目标是为 DIV 及其所有具有样式 WIDTH:100% 和 HEIGHT:100% 的子项定义纵横比 (f.E. 4:3)。

这工作正常,只要我设置父级

WIDTH:100%

然后给第一个 child 添加一个

PADDING-BOTTOM: 75%; // (3/4)*100

但是如果我在 1080p 显示器上将窗口大小调整为全屏,内框将(遗憾地)正确 宽度增长到 100%,高度增长到宽度的 75%。因此,一个 1920 像素宽的 div 将增长到 1920x1440。在 1080p 屏幕上,这意味着我将有滚动条来查看 div 的完整内容。

我希望内框只有 (window.innerHeight/3) * 4 宽,并且在左侧(和/或)右侧有一个黑条。

所以我假设在父级上设置高度然后在子级上定义 padding-right 会产生相同的效果,但会给我屏幕右侧而不是底部的黑条。

但是,如果您设置父级,这会起作用

HEIGHT:100%

然后添加一个

PADDING-RIGHT: 33% // ((4/3)-1)*100

给 children ,因为填充是基于包含元素的宽度

现在在一个完美的世界里,无论父级的高度和宽度是多少,我都希望我的 div 正好是 4:3,如果需要的话,它周围有黑条,而不会变大比父级任何维度,从而创建滚动条。

纯 CSS 有可能吗?或者我必须使用 JavaScript 吗?

编辑:

<div style="width:133vmin;height:100vmin;margin-left:-66vmin;left:50%;background: #f00; overflow:hidden;">

我可以定义一个宽高比为 4:3 的 div,并且在左侧和右侧都有黑条,但是如果高度不够,它不会变大。现在我需要以某种方式结合这两种解决方案......

最佳答案

我写了一个解决方案,但遗憾的是它不适用于最新的稳定版 Chrome,已提交错误:https://bugs.webkit.org/show_bug.cgi?id=94158

但它确实适用于 Firefox 25.0 和 Chrome Canary 36.0.1922.0

<html>
<style>

body {
margin:0;
background: #000;
}

#block1 {
display: inline-block;
position: relative;
width: 100vw;
max-width: calc(100vh * 1.33333); // (4 / 3)
}
#block1:after {
content: '';
display: block;
margin-top: 75%; // (3 / 4) * 100
}
#block2 {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: red;
}

</style>
<body>
<div id="block1"><div id="block2"></div></div>
</body>
</html>

关于javascript - 仅使用 CSS 保持基于宽度和高度的纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com