【问题标题】:Calculate desired height of scaled down element计算按比例缩小元素的所需高度
【发布时间】:2021-04-18 06:20:14
【问题描述】:

我正在使用 CSS transform: scale(0.6) 来缩小 div。当元素按比例缩小时,它会保持其纵横比。然而,在我的例子中,这个元素需要总是有一个可以到达视口底部的高度。这意味着我需要调整元素的高度,同时保持其宽度和顶部位置相同。

如何计算我需要应用的高度,以便在应用transform: scale(x) 时元素正好到达视口底部?

document.body.addEventListener('click', () => {
  document.querySelectorAll('div')[0].style.transform = 'scale(0.44)';
});
body {
  margin: 0;
  padding: 0;
  height: 100vh;
}

div {
  width: 350px;
  height: 100%;
  position: absolute;
  top: 0px;
  background-color: red;
  position: absolute;
  transform-origin: top;
}
<div><h1>TEST</h1></div>

【问题讨论】:

  • 可以选择使用scaleX(0.44)吗?这将使高度保持在100vh
  • 谢谢,但这在我的情况下不起作用,因为 div 被“压扁”并且不成比例。
  • 您能否提供一个带有插图的示例。这可能有助于回答您的问题

标签: javascript html css transform scale


【解决方案1】:

如果您将 scale(n) 替换为 scaleX(n),则您的 sn-p 有效

document.body.addEventListener('click', () => {
  document.querySelectorAll('div')[0].style.transform = 'scaleX(0.44)';
});
body {
  margin: 0;
  padding: 0;
  height: 100vh;
}

div {
  width: 350px;
  height: 100%;
  position: absolute;
  top: 0px;
  background-color: red;
  position: absolute;
  transform-origin: top;
}
<div></div>

您是否正在寻找更一般情况的解决方案?

【讨论】:

  • 谢谢,但这在我的情况下不起作用,因为 div 被“压扁”并且不成比例
  • 啊,这意味着我没有理解你想要达到的目标。如果高度要到底部,宽度是多少,缩放从哪里来?
  • 宽度因窗口宽度而异。单击按钮时应用缩放,并且当 div 随宽度和高度一起变小时。在这种情况下,纵横比保持不变,而 div 高度不再到达视口的底部。我需要弄清楚要应用到 div 的新高度样式,以便它到达底部视口而不改变宽度或位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多