我正在进行滚动页面设计,我有以下Javascript隐藏并显示一个对话框:
if(window.pageYOffset >= 300){
$('#m1').fadeIn('slow');
}
if(document.documentElement.scrollTop >=300){
$('#m1').fadeIn('slow');
}
这适用于Chrome,FF,IE9 +
然而,在IE8,7中它只是有用的。它正确显示和隐藏元素,但是在评估滚动位置和隐藏元素之间的延迟是可怕的。此外,没有褪色,只是发生了。
我想知道它是否只是我需要处理IE8的问题,或者是否有办法让我用IE8实现被动,干净的淡入淡出。
答案 0 :(得分:26)
pageYOffset
和pageXOffset
,请尝试此功能:
// 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 :(得分:2)
您也可以使用以下方法修复它:
document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset;
所以你拥有它
if((document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset) >= 300){
$('#m1').fadeIn('slow');
}
通过这种方式,您可以避免重复代码。