https://jsfiddle.net/xsLx9ojs/1/
我添加的ID將HTML的div:
<div id="top" class="container top">TOP</div>
<div id="bottom" class="container bottom">BOTTOM</div>
然後我添加一個條件,當底部格出現在用戶的屏幕上檢測到時,他滾動:
$(function() {
var $win = $(window);
$win.scroll(function() {
if ($win.scrollTop() == 0) {
console.log("USER SCROLLED TO TOP");
} else if ($win.height() + $win.scrollTop() >= $('#top').height() - 50
&& $win.height() + $win.scrollTop() <= $('#top').height() + 50) {
console.log("TRANSITION BETWEEN THE TWO DIVS");
} else if ($win.height() + $win.scrollTop() == $(document).height()) {
console.log("USER SCROLLED TO BOTTOM");
}
});
});
滾動檢測並非如此精確,原因是鼠標輪的小「跳躍」。所以我加了一個100px的容差。如果我是你,我會改善這種東西,可檢測如果底部DIV警報已經被賦予或不那麼函數沒有在這樣每次滾動觸發一個布爾值:
[...]
if ($win.scrollTop() == 0) {
//top reached
} else if ($win.height() + $win.scrollTop() >= $('#top').height()) {
//alert! bottom div appeared while scrolling bottom!
//deal with this with a boolean
} else if ($win.scrollTop() <= $('#top').height()) {
//alert! bottom div disappeared while scrolling top!
//deal with this with a boolean
} else if ($win.height() + $win.scrollTop() == $(document).height()) {
//bottom reached
}
[...]
我通常使用的航點。如果你打算使用庫,js for this http://imakewebthings.com/waypoints/ –
我把它作爲備份,但不應該爲這一點功能加載整個庫。 – Matt
我使用該插件創建了一個小提琴:http://jsfiddle.net/mattography/xv4z4krm/,但是如何防止當我向後滾動時觸發警報? – Matt