javascript - 在 JavaScript 中保持矩形的纵横比
问题描述
我有以下Codepen:
window.addEventListener('resize', function updateBox() {
const maxWidth = window.innerWidth * 0.8
const maxHeight = window.innerHeight * 0.8
const width = 1024
const height = 600
const ratio = Math.min(maxWidth / width, maxHeight / height)
const box = document.getElementById("box")
console.log(`resize: ${width*ratio}*${height*ratio}`)
box.style = `width: ${width * ratio}px;`
box.style = `height: ${height * ratio}px;`
});
#box {
width: 1024px;
height: 600px;
background-color: red;
}
<div id="box"></div>
这是一个流行的问题如何按比例调整图像大小/保持纵横比?. 这是一个非常受欢迎的答案,但它没有给出完美的纵横比。
如您所见,如果您调整浏览器窗口的大小,它看起来很奇怪。它不保持纵横比。这是一些随机计算使矩形在宽度和高度上跳跃。
我想要像https://codepen.io/chriscoyier/pen/BZNoev这样的效果。尝试调整浏览器的大小以查看实际效果。矩形保持其纵横比并保持在中心。
不幸的是,我不能使用它,因为它使用 CSS padding-top
,所以我不能使用它。我需要使用 JS 来实现这一点,因为我将使用一个名为 Konva 的 Canvas 库。
我该怎么做?
解决方案
推荐阅读
- ubuntu-18.04 - OpenSSH 从 7.6 升级到 8.3
- flutter - Flutter GestureDetector onTap 不工作
- reactjs - React Hook useState 显示错误
- r - 如何使用 for 循环打开 .ncdf 文件并对所有文件中具有不同值的矩阵变量进行平均?(使用 R 编程)
- javascript - 如何使用事件委托增加输入的价值
- python - Spark:无法运行程序“jupyter”
- firebase - 如何区分 Firebase Auth 中的初始化状态和非用户状态?
- ios - 如何以编程方式使用自动布局调整多个 iOS 屏幕尺寸的视图大小
- javascript - 如果 this.setState 不起作用,为什么 this.state = wrong?
- javascript - 如何为反应路由器组件设置独特的背景图像?