解释为什么scrollTop()总是在这里返回0
见http://codepen.io/anon/pen/NGqPNz
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()); } });
scroll事件在body元素上触发。 滚动条位于body元素上,而不是html或window元素上。 那么为什么document.body.scrollTop或$(’body’)。scrollTop()返回0?
有没有什么办法可以用这个来检测滚动条的位置,或者如果我想使用高度我会卡住:100%; 溢出:隐藏在html元素上?
谢谢!
感谢Shikkediel的评论,它似乎是一个Webkit错误。 如果你将div放在body中,并将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()); } });
这是因为你有overflow-y: hidden;
。 删除它,然后scrollTop()
将工作