pageYOffset Scrolling and Animation in IE8
我正在进行滚动页面设计,并且具有以下Javascript隐藏和显示对话框:
1 2 3 4 5 6 7 8 9 10 11 | if(window.pageYOffset >= 300){ $('#m1').fadeIn('slow'); } if(document.documentElement.scrollTop >=300){ $('#m1').fadeIn('slow'); } |
这在Chrome,FF,IE9 +中效果很好
但是,在IE8,7中,它只是一种工作方式。 它可以正确显示和隐藏元素,但是在评估滚动位置和隐藏元素之间的延迟是可怕的。 同样,没有褪色,它只是发生。
我想知道这只是我需要处理的IE8问题,还是我有办法用IE8实现反应性的,干净的淡入淡出。
IE8和更低版本不支持
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Return the current scrollbar offsets as the x and y properties of an object function getScrollOffsets() { // This works for all browsers except IE versions 8 and before if ( window.pageXOffset != null ) return { x: window.pageXOffset, y: window.pageYOffset }; // For browsers in Standards mode var doc = window.document; if ( document.compatMode ==="CSS1Compat" ) { return { x: doc.documentElement.scrollLeft, y: doc.documentElement.scrollTop }; } // For browsers in Quirks mode return { x: doc.body.scrollLeft, y: doc.body.scrollTop }; } |
您也可以使用以下方法修复它:
1 | document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset; |
所以你有
1 2 3 | if((document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset) >= 300){ $('#m1').fadeIn('slow'); } |
这样,您可以避免重复代码。