【问题标题】:Padding animate latency填充动画延迟
【发布时间】:2014-09-04 19:45:45
【问题描述】:

我正在尝试创建固定顶部菜单,并在窗口向下滚动 > 300 像素时调整它们的大小(通过更改顶部和底部填充)。 如果我在距离顶部 300 像素后尝试这样做,设置像 $('nav').css('padding', '30px 0 30px 0'); 这样的 css 样式都可以正常工作,但是如果我尝试使用动画来执行此操作,我会在事件之间获得巨大的延迟。

有一个例子: 没有动画 - http://jsfiddle.net/g3xLgLeb/1/(一切正常)

使用动画 - http://jsfiddle.net/g3xLgLeb/(巨大的延迟)

【问题讨论】:

  • 每次滚动时都会调用一个动画:在开始新动画之前,您应该检查是否$nav.is(':animated');
  • 希望这篇文章能帮助你实现你的goal

标签: javascript jquery css animation jquery-animate


【解决方案1】:

我更喜欢使用 CSS 过渡而不是 jQuery 动画。

你可以这样做。

将以下 css 添加到您现有的 css 文件中:

.nav.custom{
  padding-top:5px;
  padding-bottom: 5px;
  -webkit-transition: all ease 0.5s;
  -moz-transition: all ease 0.5s;
  -ms-transition: all ease 0.5s;
  transition: all ease 0.5s;
}

使用以下内容作为您的脚本:

   $(document).ready(function() {
        var $nav = $('.nav');
        $(window).scroll(function () {
            if ($(this).scrollTop() > 350) {
                $nav.addClass('custom');
            } else {
                $nav.removeClass('custom');
            }
        });
    });

注意: css 过渡可能无法在某些较旧的浏览器中使用。这是一个显示cross browser compatibility 的列表。

希望这会有所帮助。 :)

【讨论】:

  • @Benjamin,我认为它不会那样工作。因为 toggleClass 只有在 scrollTop() > 350 时才会被调用。那么它什么时候添加类,什么时候删除呢?
  • 哇,太棒了!谢谢;)
  • @kxc 这会有所帮助,但请注意您会遇到跨浏览器兼容性问题。
  • @kxc 检查此link 了解更多详情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多