代码之家  ›  专栏  ›  技术社区  ›  NateDSaint

jquery轻松动画的窗口滚动在firefox(bug还是我的坏?)

  •  5
  • NateDSaint  · 技术社区  · 16 年前

    实例
    首先,这里是我的代码和问题:
    http://www.nathanstpierre.com/MBX/showoff.html

    问题
    所以我看到的是当你点击左边的按钮时,窗口会滚动到适当的标题。除了火狐(包括…工业工程 喘息 )这很顺利。但是,如果降低窗口的高度,所有计算机上的窗口都会变得平滑。我已经在多台电脑和IE7-8、Google Chrome、Safari和Firefox 3.5上尝试过了。我已经消除了页面上的所有图形和颜色,所以这些不是问题所在。我已经摆脱了跟在你后面的侧边栏,不是这样的。

    理论
    我认为jquery宽松插件计算出你需要走的距离,然后将它需要移动的像素数除以每单位指定的持续时间(比如30毫秒内的300像素,所以是10px/ms)。其他每一个浏览器似乎都能使这一转换顺利进行,但也许窗口滚动事件提供的粒度没有被压缩到足以让Firefox看起来顺利的程度?或者我使用了错误的宽松插件,或者设置错误。

    代码

    $("#sidenav a").click(function () {
            $("#sidenav a").animate({'color':'#6d6d6d'},{"duration":400});
            $(this).animate({"color":"#fff"},{"duration":400});
            clicktarget=$(this).attr("href");
            $("html, body").animate({scrollTop: $(clicktarget).offset().top},{"duration":300,"easing":"easeout"});
            return false;
          });
    

    逻辑学

    向sidenav onclick上的每个a标记添加一个事件侦听器。这将获取文档中元素的offset().top,其ID与链接的href属性相同,然后从当前滚动顶部到该元素的offset().top进行动画制作。逻辑是健全的,除了火狐,在每一个浏览器中都能顺利工作…据我所知。

    抗辩

    我做错什么了?这是虫子吗?

    谢谢!

    更新

    好吧,我不能在良心上选择这里提出的任何答案,因为他们都没有对这个问题给出解决方案,所以如果你遵循这一点,选择你最喜欢的,赏金将投给投票最多的人。

    问题似乎是火狐a)呈现透明性和b)处理滚动事件的方式。有足够的处理器能力,这是没有问题的,但让我难过的是,IE(所有浏览器)能够在劣质的硬件上呈现出这样好的效果。我将和Mozilla讨论这个问题,看看他们是否有什么要说的。

    对于额外的启发,免费提供以下内容:

    With Transparency
    Without Transparency

    编辑:所以这个问题已经被回答了,但现在我不能选择。有人知道这是怎么回事吗?

    最终更新 时间已经过去了,他们让我取回了奖金,所以我选择了正确的答案。它看起来像是方框阴影和其他一些效果,因为它们的呈现方式,在Firefox中会导致一些滚动问题。FF 4.0+可以更好地处理这一问题,但有些计算机仍然存在问题。对于实现CSS3的人来说,这是一个很好的预兆:在所有浏览器上测试交互,看看性能成本是否合理。

    5 回复  |  直到 16 年前
        1
  •  4
  •   Richard M    16 年前

    表现不佳似乎是由于 -moz-box-shadow 属性,如果删除此属性的任何声明(或使用Firebug禁用这些声明),滚动动画将更平滑。

        2
  •  2
  •   Michiel    16 年前

    请尝试jquery 1.4。这似乎要快得多,然后是jquery 1.3.2。

    如果需要调试这些东西,请将未压缩的JS文件放入代码中,并使用Firebug的概要文件来分析函数。

        3
  •  1
  •   Gabriele Petrioli    16 年前

    你的页面有点重,有两种背景(一种是透明的.png…)。

    问题出在火狐和/或你处理动画的机器上。检查firefox的平滑滚动选项( 工具->选项->高级->常规->使用平滑滚动 )这可能是它被关闭的原因…

        4
  •  0
  •   mroggle    16 年前

    每当我尝试类似的效果时,我都会使用Scrollto。也许会有帮助

    ScrollTo Plugin

        5
  •  0
  •   Obrazy    16 年前

    我对FF 3.5也有同样的问题-看起来很像渲染问题。 如果你尝试新的3.6,它可能会好。

    我对Doherty的Coda Slider 2.0 btw有意见。

    当做

    安德烈

    推荐文章