【问题标题】:header gets smaller as you scroll - with the scroll滚动时标题变小 - 滚动
【发布时间】:2014-03-27 07:18:40
【问题描述】:

有很多教程可以让标题的高度在您向下滚动时变小,而在您向上滚动超过某个点时变大。我想知道如何在滚动时使标题的高度变小,但随着滚动。因此,如果您在动画完成之前停止滚动,它也会停止……然后当您继续向上或向下滚动时,它也会继续。

这是一个根本无法按我想要的方式工作的小提琴,但它是我发现的滚动动画的代码......

http://jsfiddle.net/A3XQG/

$(window).scroll(function(){ 

    var scrollPos = $(window).scrollTop();

    if( ( scrollPos === 0 ) && ( scrollState === 'top' ) ) {
        $('.header').stop().animate({height: '200px'}, 300);
        scrollState = 'scrolled';
    }       
    else if( ( scrollPos === 0 ) && ( scrollState === 'scrolled' ) ) {
        $('.header').stop().animate({height: '50px'}, 300);
        scrollState = 'top';
    }
});

【问题讨论】:

  • 到目前为止您尝试过什么?我们可以提供想法,但我希望没有人为您编写所有代码,因为您还没有表现出自己编写代码的努力。诀窍是检测窗口的滚动位置并根据它更改高度到指定的最小高度或最大滚动位置
  • 为什么不将滚动位置绑定到 .header 的 css 'top' 属性?
  • 我不知道该怎么做,但我的内容需要保留在原地,所以我真的需要为高度设置动画。我刚刚更新了小提琴以显示我需要通过向上滚动到文本点来减小高度,然后停止直到向上滚动时高度会随着滚动而变大。 jsfiddle.net/A3XQG/1

标签: jquery scroll


【解决方案1】:

你把它弄得太复杂了。试试这个:

$(window).scroll(function(){ 
    $('.header').height(200 - (200 * $(this).scrollTop() / $('body').height()));
});

演示:http://jsfiddle.net/9tgDs/

更新:(150px 的上限收缩)

$(window).scroll(function(){ 
    var _height = 200 - (200 * $(this).scrollTop() / $('body').height());

    if (_height >= 150) {
        $('.header').height(_height);
    }
});

演示:http://jsfiddle.net/9tgDs/2/

【讨论】:

  • 非常感谢。我知道我必须做一个简单的计算,但显然不知道要计算什么。我也只是在我自己的页面上尝试了这个,它有很多内容并且标题不断变小。我将如何阻止高度变得小于 250 像素?再次感谢您的帮助!
  • 我在你的函数周围添加了 if( ( $('.header').height() > 150) ){ 但是当它停止在 150 时,当你向上滚动时它不会继续变大...
  • 当然,因为一旦该条件解析为 false,将不会执行任何大小调整逻辑。
  • 我刚刚意识到我可以用 (this).scrollTop() 并且它可以工作......谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多