2016-04-19 10 views
-1

ユーザーが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> 

どのようにして私が望むものを達成することができますか?そのあなた」と仮定すると、

+0

を作業を開始するだろう制限、&&||を交換してきたはずです。 –

+0

あまりにも多くの時間を費やしたくない場合は、かなり滑らかなライブラリをこの種の動作に使用できます。それは 'Waypoints'と呼ばれます - > https://github.com/imakewebthings/waypoints – TyMayn

答えて

0

http://imakewebthings.com/waypoints/ あなたは
(とにかくjqueryのを使用してyoureのため)これをachiveするjQueryのウェイポイントを使用することができますそれも、スクロール方向検出および他の多くの便利な機能
を持っている(http://imakewebthings.com/waypoints/guides/getting-started/での例を参照)
それを使用して再、コードは次のようにsomethiingになります。

JSFiddle with working code

var waypoint = new Waypoint({ 
     element: document.getElementById('aboutus'), 
     handler: function(direction) { 
     if(direction=== 'down'){ 
       $(.topnav).addClass(fixed); 
     } 
     else if(direction === 'up'){ 
       $(.topnav).removeClass(fixed); 
     } 

     } 
    }) 

EDIT

OK, i fixed itあなただけのスクリプトの最後に `)ですから、`}不必要に持っている条件は

+0

私は自分のコードを動作させるために何をする必要がありますか? – ibnhamza

+0

@ibnhamza Waypointsを使用してワーキングコードを自分の答えに追加しましたが、あなたが使いたい場合は、自分の何が問題なのかを知りたい場合は、待つ必要があります。 – IdeaMan

+0

@ibnhamza完了したので、 'or'の代わりに 'and'を使用してください。 – IdeaMan

関連する問題