当用户在jQuery中滚动到某个特定div位置时,我试图操纵导航栏的css属性,但到目前为止它不工作。这是我下面做的当用户滚动到某些位置时更改元素的CSS属性
<nav class="topnav"></nav> //position:fixed
<section id="aboutus></section>
<section id="members></section>
<section id="events></section>
我所做的就是获取用户的滚动位置,并获得我的目标位置元素的位置。之后,我设置了一个事件监听器来检查滚动位置是否等于或大于目标元素的位置,然后我改变背景颜色。
<script>
var events = $("#events");
var eventsHeight = events.height();//get div height
var eventsDivOffset = events.offset().top;//get div position
var aboutUs = $("#aboutus");
var aboutUsHeight = aboutUs.height();//get div height
var aboutUsDivOffset = aboutUs.offset().top;//get div position
var members = $("#members");
var membersHeight = members.height(); //get div height
var membersDivOffset = members.offset().top; //get div position
var currentScrollPos = window.pageYOffset; //get scroll position
function yScroll(){
var currentScrollPos = window.pageYOffset;
if(currentScrollPos >= aboutUsDivOffset || currentScrollPos <= aboutUsDivOffset + aboutUsHeight){
$(".topnav").css({"background-color":"white"});
}
else if(currentScrollPos >= eventsDivOffset || currentScrollPos <= eventsDivOffset + eventsHeight){
$(".topnav").css({"background-color":"red"});
}
else if(currentScrollPos >= membersDivOffset || currentScrollPos <= membersDivOffset + membersHeight){
$(".topnav").css({"background-color":"red"});
}
else{
$(".topnav").css({"background-color":" "});
}
}
window.addEventListener("scroll", yScroll);
})
</script>
我该如何使这项工作实现我想要的?
您有不必要的'})'在脚本的末尾。 –
如果您不想花费太多时间编码,那么可以使用一个非常漂亮的库来处理这种行为。它被称为'Waypoints' - > https://github.com/imakewebthings/waypoints – TyMayn