使用jQuery更改第n个子项上的导航链接颜色

时间:2018-08-18 15:22:22

标签: javascript jquery css

我在jquery / css中遇到了令人困惑的问题。我正在尝试使导航栏链接的颜色从白色变为黑色,然后在“进入”一个新的第n个孩子时再次返回。

因此,当遍历nth-child(3n + 1)和(3n + 2)时,链接需要为白色,但是(3n + 3)链接需要为黑色,并在下一个周期改变。

我试图重用脚本来添加类,但是直到我回到顶部之前,它一直在添加.white和.black。

我该如何解决?

$(window).scroll(function() {
  var scroll = $(window).scrollTop();
  var objectSelect = $(".col-4:nth-child(3n+1)");
  var objectPosition = objectSelect.offset().top;
  if (scroll > objectPosition) {
    $(".navbar a").addClass("white");
  } else {
    $(".navbar a").removeClass("white");
  }
});

$(window).scroll(function() {
  var scroll = $(window).scrollTop();
  var objectSelect = $(".col-4:nth-child(3n+2)");
  var objectPosition = objectSelect.offset().top;
  if (scroll > objectPosition) {
    $(".navbar a").addClass("white");
  } else {
    $(".navbar a").removeClass("white");
  }
});

$(window).scroll(function() {
  var scroll = $(window).scrollTop();
  var objectSelect = $(".col-4:nth-child(3n+3)");
  var objectPosition = objectSelect.offset().top;
  if (scroll > objectPosition) {
    $(".navbar a").addClass("black");
  } else {
    $(".navbar a").removeClass("black");
  }
});
html {
  height: 100%;
  font-size: 21px;
}

body {
  margin: 0px;
  font-family: 'Karla', sans-serif;
  width: 100%;
  height: 100%;
  color: white;
}

* {
  box-sizing: border-box;
}


/* DESIGN */

.row::after {
  content: "";
  clear: both;
  display: table;
}

.col-1 {
  width: 25%;
}

.col-2 {
  width: 50%;
}

.col-3 {
  width: 75%;
}

.col-4 {
  width: 100%;
  padding-right: 20vw;
  padding-left: 20vw;
}

[class*="col-"] {
  float: left;
  height: 90vh;
  padding-right: 20vw;
  padding-left: 20vw;
  padding-top: 25vh;
  padding-bottom: 15vh;
  background-attachment: scroll;
}

[class*="col-"]:nth-child(3n+1) {
  /* The image used */
  background-image: url("img/bg2.jpg");
  /* Full height */
  height: 100%;
  /* Create the parallax scrolling effect */
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

[class*="col-"]:nth-child(3n+2) {
  background-color: rgb(238, 114, 3);
}

[class*="col-"]:nth-child(3n+3) {
  background-color: white;
  color: black;
}

.black {
  color: black !important;
}

.white {
  color: white !important;
}


/* NAVIGATION */

.navbar {
  overflow: hidden;
  background-color: transparent;
  position: fixed;
  /* Set the navbar to fixed position */
  top: 5;
  /* Position the navbar at the top of the page */
  width: 100%;
  /* Full width */
  font-size: 25px;
  font-weight: bold;
  line-height: 1.5em;
}

.navbar a {
  float: right;
  display: block;
  color: #f2f2f2;
  background-color: transparent;
  text-align: center;
  margin: 20px;
  padding-left: 25px;
  padding-right: 25px;
  text-decoration: none;
}

.navbar a:hover {
  border-bottom: 1px solid;
}

@media screen and (max-width: 1180px) {
  .navbar a {
    font-size: 16px;
    padding-left: 0px;
    padding-right: 0px;
  }
}

@media screen and (max-width: 700px) {
  .navbar a {
    display: none !important;
  }
}
<html>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <div class="thumbnail">
    <a href="#"><img class="thumbnail" src="img/RF thumbnail.png"></a>
  </div>

  <div class="navbar" id="myTopnav">

    <a href="#contact">Contact</a>
    <a href="#adverts">Adverts</a>
    <a href="#about">About us</a>
    <a href="#whatisthis">What is this</a>
    <a class="signup" href="#welcome">Sign up</a>

  </div>

  <button onclick="topFunction()" id="myBtn" title="Go to top"><i class="fas fa-chevron-up"></i></button>

  <!-- CONTENT -->



  <div class="row">

    <div class="col-4" id="welcome">

    </div>



    <div class="col-4" id="whatisthis">

      <h1>What is this?</h1>


    </div>

    <div class="col-4" id="adverts">

      <h1>Adverts</h1>

    </div>

    <div class="col-4" id="about">

      <h1>About</h1>

    </div>

    <div class="col-4" id="contact">

      <h1>Contact</h1>

    </div>



  </div>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

当您向下滚动时,请勿删除课程。您只添加它。 最后一类是控制颜色的东西。

所以。您要先添加black,然后再添加white。之后,再次添加黑色将无济于事。仍然有

class="black white"

在每个部分之后删除最后一个课程应该可以解决您的问题。 jQuery也有hasClass(className)