0

我会试着解释一个让我难过的大问题。

基本上,我有一个在绝对定位(靠近页面顶部时)和固定定位(向下滚动页面时到窗口顶部)之间的#menu。我正在使用 jquery 来完成此操作。

当它得到修复时,我给它一个“.fixed”类。这给了它“顶部:0px;位置:相对;”。#menu 有一个过渡,但 #menu.fixed 删除了过渡。这在开始时效果很好,向下滚动然后将其附加到窗口顶部时。切换位置是完美的,因为新类删除了转换。

但是,当我向上滚动并删除“.fixed”类时,它会将(现在)绝对定位的#menu 从 0px 设置为 615px。这意味着它会跳到页面顶部,然后向下滚动,因为它不再固定。

这是代码:

$('#menu').css({ top: '615px'}); // top was 0px before this. It is still fixed, so it should NOT animated.
$('#menu').removeClass('fixed'); // Now the transition kicks in
//As it's at 615px, it should stay where it is, not start animating to 615px from 0px as it does.

我认为这是因为在“.fixed”类被删除时元素实际上并没有被重新定位,因此它会随着它的新定位而动画化......我可以做一个间隔或类似的事情来触发这个类删除,但它看起来很傻。

我也知道我可以让它定位:绝对一直。当我滚动时,只需重新定位最高值。但这似乎是多余的...

有谁知道如何解决我的问题?

4

0 回答 0