【问题标题】:Scale div on scroll - Javascript滚动缩放 div - Javascript
【发布时间】:2014-09-10 21:51:59
【问题描述】:

使用这个现有的 codepen (http://codepen.io/anon/pen/fDqdJ)。我想添加另一个语句,即在距页面顶部一定距离处,一个已经动画的 div 然后在移动时改变比例。

在语法和增加滚动上动画 div 的比例方面真的很挣扎。我猜我需要使用 css 转换,但需要一些帮助!

js 示例见下:

var $window = $(window);
var $box = $("#box");

$window.scroll(function() {
    var scrollTop = $window.scrollTop();
    console.log(scrollTop);
    if (scrollTop >= 250 && scrollTop < 400) {
      $box.css({top: -250 + scrollTop});      
    } else if(scrollTop >= 400 && scrollTop < 460) {
      $box.css({left: (10+(scrollTop-400)/2)+"%"})
    } else if(scrollTop >= 460 && scrollTop < 580) {
      $box.css({top: (50+(scrollTop-460)/2)+"%"})
    } else if(scrollTop >= 580 && scrollTop < 620) {
      $box.css('transform', 'scale(' + whateverTheScaleShouldBe + ')');
    }
});   

这里是html结构-

<div class="wrapper">
  <div class="row" id="row1">
  </div>
  <div class="row" id="row2">
    <div id="box"></div>
  </div>
  <div class="row" id="row3">
  </div>
  <div class="row" id="row4">
  </div>
</div>

非常感谢任何帮助! :)

J

【问题讨论】:

  • 你有什么问题?你会影响transform 比例,就像你会影响javascript 中的任何属性一样。至于缩放它,transform 的值是scale,您可以像这样使用:transform:scale(.5),这将使元素大小变为原来的一半
  • 感谢回复,我想使用 transform:scale 让缩放值根据滚动高度慢慢减小
  • 那你有什么问题?
  • “正在使用这个现有的 codepen”...但是 在哪里 codepen?
  • 我正在努力解决如何根据滚动来改变变换比例图 - $box.css({transform:scale(1.1)}) - 所以我相信需要一些而不是 1.1基于滚动计算比例递减一个点的逻辑。

标签: javascript jquery html css transform


【解决方案1】:

这段代码的问题:

$box.css({transform:scale(1.1)})

...是值不正确。为 CSS 属性设置的值应该是一个字符串。目前,代码正试图在您的 JavaScript 中调用 scale 函数,该函数可能不存在。如果要使用 CSS 函数scale,请将代码替换为:

$box.css({transform: 'scale(1.1)'});

或者更简单地说:

$box.css('transform', 'scale(1.1)');

...然后您将更改 CSS 比例。您可能还想为scale CSS 函数使用动态值。这样做会使字符串动态化:

$box.css('transform', 'scale(' + whateverTheScaleShouldBe + ')');

这个whateverTheScaleShouldBe 将是您的计算结果;从您的问题 如何 中不清楚您希望比例在滚动时发生变化。例如,如果您希望规模按100px 线性增长0.1,您可以这样做:

scaleAmt = 1.0 + (scrollTop / 100);
$box.css('transform', 'scale(' + scaleAmt + ')');

【讨论】:

  • 感谢雅各布的回复。我希望该框根据距页面顶部(scrollTop)560px 的距离缩小比例。所以说当我们从顶部到 561 时,比例为 0.99。我希望这已经更清楚了
  • 目前还不清楚“基于”是什么意思,抱歉。我建议提出一个接受scrollTop 并返回比例编号的函数。
  • 您的最后一次编辑接近于我的预期。我已经在codepen.io/anon/pen/fDqdJ 更新了笔,我该如何调整它,使其每 1 像素平滑增长 0.1?
  • / 100 表示每像素0.01;只需除以10 而不是使其每像素0.1。只需使用公式即可获得您想要的。
  • 尝试以另一种类似的方式使用此示例,动画链接到 scrollTop,但是如果您更快地滚动页面,它会弄乱动画。这个雅各布周围会有吗?
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 2018-06-15
  • 2012-07-25
相关资源
最近更新 更多