当前位置: 首页 > 知识库问答 >
问题:

计算所需的高度以使按比例缩小的div到达底部视口

慕佑运
2023-03-14

我正在使用CSS transform:scale(0.6)缩放div。当元素缩放时,它保持其纵横比。但是,在我的例子中,这个元素需要始终具有一个将到达视区底部的高度。这意味着我需要调整元素的高度,同时保持其宽度和顶部位置相同。

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

下面是一个codesnippet。点击任意位置可以向下缩放div,这时我应该应用新的高度,允许div高度到达视区底部,同时保持相同的宽度和位置。

null

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

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

null

共有1个答案

劳研
2023-03-14

因为您希望div的高度一直延伸到底部,所以您可以在这里使用window.innerheight

新高度可使用以下公式计算:-

newheight=(viewporteight-offsetTop)*(1/scaleValue)

输入数值后,它将归结为以下计算:-

newheight=(window.innerheight-div.offsettop)*(1/0.44)

null

document.body.addEventListener('click', () => {
  const div = document.querySelectorAll('div')[0];
  div.style.transform = 'scale(0.44)';
  div.style.height = `${(window.innerHeight-div.offsetTop)*(1/0.44)}px`
});
body {
  margin: 0;
  padding: 0;
  height: 100vh;
}

div {
  width: 350px;
  height: calc(100% - 50px);
  position: absolute;
  top: 50px;
  background-color: red;
  position: absolute;
  transform-origin: top;
}
html prettyprint-override"><div>
  <h1>TEST</h1>
</div>
 类似资料:
  • 问题内容: 我只想有一个侧边栏,该边栏将是窗口高度的100%,但除此之外没有任何作用: 我不想拥有,因为我具有水平可滚动的内容,所以固定的部分将保持不变。 有没有办法做这样的事情,也许有或立场? 问题答案: tl; dr- 添加到您的CSS。 CSS中的百分比值是从某些已经声明了height的祖先继承而来的。在您的情况下,您需要告知边栏的所有父母都必须保持100%的高度。我假设这是的直接子级。 本

  • 问题内容: 在下面的代码中,我希望带有“ y”的div将div的高度与3个“ x”相匹配。 需要注意的是内部div是浮动的。 问题答案: 如果您不反对使用jQuery,可以使用EqualHeight,它应该做您想要的

  • 问题内容: 我正在使用Ajax请求创建聊天,并且试图使消息div滚动到底部没有太多运气。 我将所有内容包装在这个div中: 有没有一种方法可以使用JS将其默认滚动到底部? 有没有一种方法可以在ajax请求后将其滚动到底部? 问题答案: 这是我在网站上使用的内容:

  • 我处理下面提供的一个可编码性问题, 斐波那契序列使用以下递归公式定义: 一只小青蛙想去河的对岸。青蛙最初位于河的一边(位置−1),想要到达另一边(位置N)。青蛙可以跳过任何距离F(K),其中F(K)是第K个斐波那契数。幸运的是,河上有许多树叶,青蛙可以在树叶之间跳跃,但只能在N号位置的岸边方向跳跃。 河上的叶子用一个由N个整数组成的数组表示。数组A的连续元素表示从0到N的连续位置− 1在河上。阵列

  • 问题内容: 我正在使用Rails中的Ajax请求创建聊天,并且试图使div滚动到底部没有太多运气。 我将所有内容包装在这个div中: 有没有一种方法可以使用JS将其默认滚动到底部? 有没有办法在ajax请求之后将其滚动到底部? 问题答案: 这是我在网站上使用的内容:

  • 我有这样的结构,我在一个div(包装器)里面包装三个div(顶部,中部,底部): 正如您所看到的,包装器div有一个固定的高度,底部div相对于包装器div是绝对定位的。中间div有一个内容列表,我想要实现的是,使中间的div只占据顶部div和底部div之间的剩余高度,并且仍然能够滚动。我怎样才能做到这一点?