ユーザーがjqueryの特定のdiv位置までスクロールしてもナビゲーションバーのcssプロパティを操作しようとしましたが、これは私が何をしたかユーザーが特定の位置にスクロールしたときに要素のCSSプロパティを変更する
<nav class="topnav"></nav> //position:fixed
<section id="aboutus></section>
<section id="members></section>
<section id="events></section>
下に何をしたかであることは、ユーザのスクロール位置を取得し、また、位置iのターゲットだ要素の位置を取得することでした。その後、スクロール位置がターゲット要素の位置よりも大きいかどうかを確認するイベントリスナを設定して、背景色を変更します。
<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