javascript - 如何在受 javascript 滚动和高度范围限制的滚动时按比例减小元素高度?

标签 javascript animation scroll algebra

我有一个高度为 100 的元素,当窗口滚动超过 70px 时,高度应按比例降低,当滚动达到 200px 时达到 40。

scroll = 70px => height = 100
window.scrollY = 90 => y = ?
scroll = 200px => height = 400

这是我的代码:

function whileScrolling () {
   if(window.scrollY < 70) {
      newHeight = 100
   } else  if (window.scrollY > 200) {
      newHeight = 40
   } else if (window.scrollY > 70) {
      const scrollRange = {
         min: 70,
         max: 200
      };
      const heightRange = {
         min: 40,
         max: 100
      }
      let currentScroll = window.scrollY

      newHeight = ?

   }
}

滚动时触发

如何计算y?

最佳答案

简单的线性方程:

y=-6/13*currentScroll+1720/13;

数字不太漂亮的原因是 70px。如果您改为选择 50px,数字会更漂亮(但可能生成的网站不会如此。这取决于您...)

但是你也应该保持限制:

scroll <= 70px => height = 100
scroll >= 200px => height = 40

然后它被限制在那些卷轴上。

你真的不需要 scrollRange 或最后一个 else if

function whileScrolling () {
   if(window.scrollY < 70) {
      newHeight = 100;
   } else  if (window.scrollY > 200) {
      newHeight = 40;
   } else {

      let currentScroll = window.scrollY

      newHeight = -6/13*currentScroll+1720/13;

   }
}

这些数字是这样计算的:

AB(scroll: 70, height: 100),(scroll: 200, height: 40 ).
它们之间的线是卷轴和所需高度之间的关系。从那里开始计算:斜率是 (40-100)/(200-70),即 -6/13。而1720来自直线方程的代数。

enter image description here

关于javascript - 如何在受 javascript 滚动和高度范围限制的滚动时按比例减小元素高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482820/

相关文章:

javascript - Angular2 react 形式: Validate fields inside *ngIf

javascript - 在谷歌脚本中,通过名称调用函数,在字符串中给出其名称

javascript - 显示/隐藏和搜索表中的行

java - Android - 连续绘制形状到随机位置

javascript - 如何使用 jQuery onepage-scroll 插件滚动大页面?

javascript - 如何在滚动时停止 CSS 动画?

javascript - 如何在一组单选和输入字段上使用 tabindex 和箭头键

css - SVG - CSS - 在特定的 svg 路径上绘制动画

python - Matplotlib 动画 : vertical cursor line through subplots

ios - 使用 AFNetworking 加载图像的 UICollectionView 滚动性能