有幾件事情在這裏:
1)開始使用一個.nav-logo-在課前,但是當標識變黑時,您將刪除該類,然後嘗試使用不存在的類選擇器來獲取相同的元素
2)removeClass('.nav-logo-before')
不同於removeClass('nev-logo-before)
,請注意」。在「第一選擇。
3)你得到的每一個滾動事件中使用$('.selector')
元素,這可能是一個性能問題,最好對其進行緩存的頁面加載,然後使用存儲在內存中的元素
4)聽取滾動事件不是一個好習慣,因爲這可能會對性能要求太高,通常使用會更好,然後檢查滾動位置是否已更改。使用滾動事件可能會導致您向上滾動快速滾動事件沒有發生0,因此您的標誌不會改變。隨着這是不可能發生
$(function() {
var navlogo = $('.nav-logo');
var $window = $(window);
var oldScroll = 0;
function loop() {
var scroll = $window.scrollTop();
if (oldScroll != scroll) {
oldScroll = scroll;
if (scroll >= 1) {
navlogo.removeClass('nav-logo-before').addClass('nav-logo-after');
} else {
navlogo.removeClass('nav-logo-after').addClass('nav-logo-before');
}
}
requestAnimationFrame(loop);
}
requestAnimationFrame(loop);
});
body {
\t background-color: rgba(0,0,0,.2);
}
.space {
\t padding: 300px;
}
.nav-logo-before {
content: url(https://image.ibb.co/kYANyv/logo_test_before.png)
}
.nav-logo-after {
content: url(https://image.ibb.co/jYzFJv/logo_test_after.png)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
\t <img class="nav-logo nav-logo-before">
</div>
<div class="space">
</div>
謝謝!這工作完美! (我upvoted您的評論,但它不會因爲我是新的stackoverflow) – Brad
不客氣。如果您認爲這個解決方案是正確的,那麼您應該將其標記爲「接受的答案」。該按鈕位於downvote圖標下方。 – modu