iOS Safariで、絶対位置指定している要素がスクロール中に絶対位置にならない

iOS5以上でposition:fixedが使用可能になりましたが、スクロールの途中から表示領域内に収めスクロールに追従したい場合などJavaScriptでposition:fixed;を動的に変更する場合があるかと思います。

しかし、iOSのSafariではスクロール中にpositionプロパティの値をfixedに変更してもfixedとしての表現(描画)がされません。

初めからpositionプロパティがfixedになっているか、スクロールが停止しpositionプロパティの値がfixedになった後では問題ありません。

回避方法としては以下の方法があります。

  • URLバー(アドレスバー)をページ読み込み時に非表示にする方法と同じ、ページ読み込み時に1pxスクロールする方法
  • positionプロパティはabsoluteとして、JavaScriptで常に位置を計算させる方法