根据底层颜色更改固定文本的颜色

时间:2016-09-05 18:29:07

标签: javascript jquery html css

我有一个固定的菜单,滚动在浅色和深色背景之上。

如果文本为白色,则在白色元素顶部时会变为不可见。我希望找到一种方法,当我在页面上滚动时,文本的颜色会动态变化。

我的菜单:

<div class="nav-wrapper footer-wrapper">
<nav>
    <div class="column">
    <a href="#" class="prev-section">Previous</a>
    </div>
    <div class="column links">
    <a href="#" class="next-section">Next</a>
    </div>
</nav>

一个有效的JSFiddle:https://jsfiddle.net/ua06Lbwk/5/

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery根据div的高度添加/删除css类。

像这样:

<强> HTML:

<nav>
    link
    </nav>

    <div id="element1">
    </div>

    <div id="element2">
    </div>

    <div id="element3">
    </div>

<强> CSS:

.wrapper {
  height: 100px;
}

nav {
  position: fixed;
  width: 100%;
  color: white;
  text-align: center;
 }

#element1 {
  height: 50vh;
  background-color: gray;
}

#element2 {
  height: 20vh;
  background-color: white;
}

#element3 {
  height: 100vh;
  background-color: black;
}

.active {
  color:black;
}

<强> jQuery的:

$(document).ready(function() {
$(window).scroll(function() {
   var element1height = $( "#element1" ).height(); 
   var element2height = $( "#element2" ).height();
   var total = element1height + element2height;
   var st = $(this).scrollTop();
   if( st > element1height ) {
   $("nav").addClass("active"); 
   } 
   else {
   $("nav").removeClass("active"); 
   }
   if( st > total ) {
   $("nav").removeClass("active"); 
   } 
  }); 
 }); 

您可以使用jQuery获取div的高度 - 如果用户滚动超过<div id="element1">的高度,它将向<nav>添加一个类,以更改其中文本的颜色。如果用户滚过<div id="element1">&amp;的总和。 <div id="element2">的高度 - 它将删除该课程。

JSFiddle Demo