2015-09-07 134 views
5

http://codepen.io/anon/pen/NGqPNz解釋爲什麼scrollTop的()總是在這裏返回0

CSS:

html { 
    height: 100%; 
    overflow-y: hidden; 
} 
body { 
    height: 100%; 
    overflow-y: auto; 
} 

JS:

$('body').bind("scroll", function() { 
    if ($('body').scrollTop()) { 
     console.log('triggered!'); 
    } else { 
     console.log($('body').scrollTop()); 
    } 
    }); 

滾動事件body元素的射擊。滾動條位於body元素上,而不是html或window元素。那麼爲什麼document.body.scrollTop或$('body')。scrollTop()返回0?

有沒有什麼辦法可以檢測到滾動條的位置,或者我卡住了,如果我想使用高度:100%; overflow:隱藏在html元素上?

謝謝!

+0

我認爲這是一個錯誤的WebKit。適用於Firefox。 https://code.google.com/p/chromium/issues/detail?id=423935 – Shikkediel

+0

謝謝!我將body設置爲overflow -y hidden,並添加了一個高度爲100和overflow-y auto的包裝div,並且scroll事件/ scrollTop在div上工作。 – tdj

回答

3

這是因爲你有overflow-y: hidden;。刪除這個,然後scrollTop()將工作

+0

頭腦風暴,我實際上有overflow-x:隱藏.... –

6

感謝Shikkediel的評論,它似乎是一個Webkit的錯誤。如果你立即在體內放置一個div,並將scroll事件綁定到div,它就可以工作。

http://codepen.io/anon/pen/bVderq

CSS:

html { 
    height: 100%; 
    overflow-y: hidden; 
} 
body { 
    height: 100%; 
    overflow-y: hidden; 
} 
.scroll-wrapper { 
    height: 100%; 
    overflow-y: auto; 
} 

JS:

$('.scroll-wrapper').bind("scroll", function() { 
    if ($('.scroll-wrapper').scrollTop()) { 
    console.log('triggered!'); 
    console.log($('.scroll-wrapper').scrollTop()); 
    } else { 
    console.log($('.scroll-wrapper').scrollTop()); 
    } 
}); 
相關問題