2016-09-06 7 views
1

現時点では、私のnavbarはWordPressサイトでjqueryを使用して次の処理を行います。 約150 pxでスクロールしたとき、上部に固定されますjqueryを使用してセクションに応じてメニュー項目を異なる色に変更する方法

var num = 150; //number of pixels before modifying styles 
    $(window).bind('scroll', function() { 
     if ($(window).scrollTop() > num) { 
      $('nav#site-navigation').addClass('fixed');    
     } else { 
      $('nav#site-navigation').removeClass('fixed'); 
    } 
}); 

その後、私は、私は製品のセクションまでスクロールして、その後、製品やサービスメニュー項目がハイライト表示されます...に関するメニュー項目がハイライト表示されます、程度にスクロールダウンして、などdehighlihts約。

$("nav ul li a").addClass("marker");  
    var navLinks = $('nav ul li a'), 
    navH = $('nav').height(), 
    section = $('section'), 
    documentEl = $(document);   
    documentEl.on('scroll', function() {    
     var currentScrollPos = documentEl.scrollTop();    
     section.each(function() { 
     var self = $(this); 
     if (self.offset().top < (currentScrollPos + navH) && (currentScrollPos + navH) < (self.offset().top + self.outerHeight())) { 
      var targetClass = '.' +self.attr('class') + 'marker'; 
      navLinks.removeClass('active'); 
      $(targetClass).addClass('active'); 
     }     
    });    
}); 

ここで、自分の好みで各メニュー項目の色をどのように異ならせることができますか? 例:
までスクロールすると、メニュー項目の色が緑色に変更されます。 enter image description here 製品とサービスについては、メニュー項目はオレンジ色でなければなりません。 enter image description here

答えて

2

あなたはこのようなあなたのスクロール機能を更新することができます:あなたは単にあなたが追加した各クラスを対象とし、それで遊ぶことができ、あなたのスタイルシートで

$(window).bind('scroll', function() { 
     if ($(window).scrollTop() > num) { 
      $('nav#site-navigation').addClass('fixed'); 
      $("a.marker.active:contains(About)").addClass('item-2');   
      $("a.marker.active:contains(Products)").addClass('item-3'); 
      $("a.marker.active:contains(Scent)").addClass('item-4'); 
      $("a.marker.active:contains(Clients)").addClass('item-5'); 
      $("a.marker.active:contains(Contact)").addClass('item-6'); 
     } else { 
      $('nav#site-navigation').removeClass('fixed');   
     } 
    }); 

。 例:

a.marker.item-2.active { 
    color: rgba(213, 221, 45, 0.6) !important; 
} 

それは

+0

あなたは私の問題を解決しました。ありがとう –

0

「ScrollSpy」をチェックしてください。それはあなたが望むものを正確に実行するBootstrap JSです。あなたの質問に答えることを願っています。 :)

+0

あなたは、あなたが実際に動作することを言及しているもののスニペットを送ることができますが動作しない場合は、私に教えてください? –

+0

このリンクを参照してください:http://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_ref_js_scrollspy_animate&stacked=h –

+0

jqueryを使用する前にこのコードをテストしました。これはWordPressで達成しようとしているものにはあまり役に立ちません。しかし、試みのおかげで –

0

私はこのjQueryのスクリプトが

$(".colors .main-navigation ul.nav >li").each(function(i) { 
$(this).addClass("colors"+(i+1)); 
}); 

にあなたがあなたのli要素は、カラー1、カラー2カラー3のような別のクラスを追加し、あなたが所有してあなたにそれをスタイル追加するには、このコードのヘルプをお手伝いをすると思います。あなたはすでにあなたは、単に各項目idを与える可能性があり、現在アクティブな項目のためのクラスactiveを切り替えるので

$(".colors .main-navigation ul.nav >li") 

変更

your ul 
+0

あなたのul liに.colorsの.main-navigation ul.nav> liを置き換える変更があります。実際には動作していません。 –

0

(または特定のclassのような:

は何を変更するには .item-1.item-2など)も使用し、CSSでスタイルを設定します。

#idOfItem1.active { 
    color: yellow; 
} 

#idOfItem2.active { 
    color: red; 
} 
// etc. 
+0

どこに追加すればいいですか? 私はこのようなcontainsメソッドを使用しようとしています:$( "a.marker.active:contains(Products)").css("color"、 "red"); 色を追加しますが、別のセクションに移動しても色は削除されません。 –

+0

これにはJavascriptを使用する必要はありませんが、単純なCSSを使用します。 – Simon

+0

説明したとおりにやっただけですが、2回目のスクロールを開始すると、色が正しく変化しています。 初めてaboutセクションにスクロールすると、aboutメニュー項目はcolor.It変更されませんほとんどのセクションの最後に変更されます。製品とサービスのためには、ほとんどの場合、香りのマーケティングセクションに達しているときにのみ変更されます。 –

関連する問題