CSS过渡 – 在固定和绝对定位之间切换

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

基本上,我有一个#menu介于绝对位置(靠近页面顶部)和固定位置(到窗口顶部,向下滚动页面)之间。 我正在使用jquery来实现这一目标。

当它被修复后,我给它一个“.fixed”类。 这给了它“top:0px; position:relative;”。 #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”类被删除时,元素实际上没有被重新定位,因此它以新的定位动画下来…我可以做一个间隔或类似的东西来触发类是删除了,但它似乎很愚蠢。

我也知道我可以把它定位:绝对是所有的时间。 滚动时只需重新定位顶值。 但这似乎是多余的……

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