2016-11-11 8 views
-2

私は白いリンクを持つ固定位置のnavbarを持っていて、別の要素が白い背景の上にあるときにリンクを黒に変えようとしています。ある要素が他の要素をホバリングしているときにCSSを変更する

ナビゲーションバーのリンクのCSS:

nav ul li a {color:#ffffff;} 

ナビゲーションバーのCSS:

nav {position:fixed;} 

ホワイトのdiv CSS:

<nav><ul><li><a>Link</a></li></ul></nav> 
<!-- Imagine there's a hero image here --> 
<div id="heroimage"></div> 
<div class="white"> 

div.white {background-color:#ffffff;} 

が、これはHTMLで想像

navbarは上部に固定されているので、ウェブサイトをスクロールすると、navbarは最終的に白いdivの上に乗ってリンクが「見えなくなる」ようになります。私は彼らが白いdivの上にいるときだけ、黒になるようにする方法を見つけようとしています。

これはJQueryで可能ですか?どんな機能を探していますか?私は答えを他の場所で見つけることができませんでした...

+3

はい、それは可能です:これは、最終的な結果でした。 –

+0

ニース、Rory、ありがとう。あなたのアプローチは何ですか? –

+0

これまでに何を試しましたか? SOは、コード内の問題の診断と解決を支援するためのものです。あなたの現在のHTMLとCSSを見ることさえ始めるでしょう –

答えて

0

さて、あなたが求めていたものがもっとあるかどうかを見てください。 「NAVBAR」の色の変化を見るためにスクロールする必要があります。お役に立てれば。ご質問がある場合はお知らせください。

編集:

だから今、私はあなたが何を意味するのか理解していること。

別のフィドルがあります。 https://jsfiddle.net/u96xa39L/2/

HTML:

<div id="colorMeDifferent" class="blackbarwhitelinks">NAVBAR</div> 

<div class="hugeDiv">No color change on overlap</div> 

<div id="hoveroverme" class="hoverBar">When we over lap here, colors change</div> 

<div class="hugeDiv">No color change on overlap</div> 

のjQuery/Javascriptの

$(window).scroll(function() { 
    var hoverElement = $("#hoveroverme"); 
    var elementsToChange = $("#colorMeDifferent"); 


    if (Math.abs(hoverElement.offset().top - elementsToChange.offset().top) <= hoverElement.height()) { 
    elementsToChange[0].className = "whiteBarBlackLinks";  
    } else { 
    elementsToChange[0].className = "blackbarwhitelinks"; 
    } 
}); 

CSS

#colorMeDifferent { 
    position: fixed; 
} 

.blackbarwhitelinks { 
    background-color: black; 
    color: white; 
} 

.whiteBarBlackLinks { 
    background-color: white; 
    color:black; 
} 

.hugeDiv { 
    min-height: 650px; 
    background-color:red; 
} 
+0

こんにちは、アーモンド。これは、ユーザーが他の要素をホバリングしたときに関数がトリガされることを除いて、素晴らしいことです。ナビゲーションバーが白いdivの上にあることを「検出」し、JQuery関数を呼び出してリンクのCSSを変更する方法を見つけようとしています。 –

+0

Ah。そうですか。私のJSを編集する時間を与えてください。 – Almond

+0

アーモンド、私は 'className()'関数が実際に 'toggleClass()'であると思いますか? –

0

アーモンドの答えは、ベースとして使うのに大いに役立っていました。

HTML

<nav><ul><li><a id="link">Link</a></li></ul></nav> 
<!-- Some more HTML --> 
<div id="content"></div> 

CSS

#content {background-color:#fff;} 
.navwhite {color:#fff;} 
.navblack {color:#000;} 

jQueryの

$(document).ready(function() { 
    $('nav>ul>li>a').addClass("navwhite"); 
}); 

$(window).scroll(function() { 
    var offsetDiv = $('div#content').offset().top; 
    var offsetNav = $('#link').offset().top; 

    if (offsetDiv <= offsetNav){ 
     $('nav>ul>li>a').removeClass("navwhite").addClass("navblack"); 
    } 
    else { 
     $('nav>ul>li>a').removeClass("navblack").addClass("navwhite"); 
    } 
});