web関連

IEで固定ヘッダーががたつく件について

IEで固定ヘッダーががたつく件について

IE11で「position:fixed;」で固定ヘッダーを使用した時に、スクロールすると固定ヘッダーが30pxくらい隠れたり、右側に妙な隙間ができたり、ガタつくという現象が発生して対応したのでその備忘録

原因

IE独自のオプション機能「スムーズスクロール」というのが悪さをしていました。
「歯車のアイコン」 → 「インターネットオプション」 → 「詳細設定」 → 「スムーズスクロールを使用する」のチェックを外すと隠れたり隙間できたりガタツキがなくなりました。

参考

▼IE11でFixedの要素がスクロール時にガタつく問題
http://kimizuka.hatenablog.com/entry/2015/02/21/000000

javascriptで無効化する方法

ユーザー側に解決を求めるのは、違うだろという事で以下のjavascriptを記述する。

if(navigator.userAgent.match(/MSIE 10/i) || navigator.userAgent.match(/Trident/7./) || navigator.userAgent.match(/Edge/12./)) {
$('body').on("mousewheel", function () {
event.preventDefault();
var wd = event.wheelDelta;
var csp = window.pageYOffset;
window.scrollTo(0, csp - wd);
});
}

上記コードで、ブラウザで行った「スムーズスクロールを使用する」のチェックを外した後と同様の結果を得ることができました。
以下のサイトを参考にしました。

参考

▼IE、Edgeでposition:fixedな要素がスクロール時にガタつく場合の対応策
http://cloud-collector.link/2016/05/08/ie-fixed-scroll-bug/

ieとの格闘を後7年も続けないといけないという絶望感…(windows10のie11のサポートは2025年10月まで)