IEのscrollTopの動作について

scrollTopの値はその要素または親要素が非表示であると値は0になります。 再度その要素を表示させたときに、IEでは他のブラウザと動作が異なります。

display:none を使って非表示にすると、再度表示させたとき、chromeとFirefoxでは非表示になる前のscrollTopの値と同じ値をになるため、スクロール位置が表示非表示を繰り返しても変わりません。 しかしIEの場合display:none を使って非表示にして、再度表示するとscrollTopの値が元にもとらず、0になってしまうため、スクロール位置が初期の状態に戻ってしまうため、注意が必要です。

IEでもスクロール位置が表示非表示を繰り返しても変わらないようにするにはdisplay:none ではなくvisibility:hiddenを使う必要があるようです。