Удалить класс меню, когда раздел отсутствует в окне просмотра - PullRequest
0 голосов
/ 07 марта 2020

Я работаю над меню с активным классом. Проблема в том, что я хотел бы удалить активный класс, когда прокручиваю назад к самому верху страницы (так, в основном, выше .spacer).

То, что я получил до сих пор, таково:

HTML:

<div class="newMenu middle" id="newMenu">
  <ul class="">
    <li><a class="" href="#one">One</a></li> 
    <li><a class="" href="#two">Two</a></li>         
    <li><a class="" href="#three">Three</a></li>
  </ul>
</div>
<div class="spacer"</div>
<div class="content">
  <section id="one"></section>
  <section id="two"></section>
  <section id="three"></section>
</div>

CSS:

  $(window).scroll(function() {
var windscroll = $(window).scrollTop();
if (windscroll >= 100) {
  $('section').each(function(i) {
    if ($(this).position().top <= windscroll + 0) {
      $('li.active').removeClass('active');
      $('li').eq(i).addClass('active');
    }
  });

} else {

  $('nav li.active').removeClass('active');
  $('nav li:first').addClass('active');
}

}).scroll();

Ждем любых предложений!

1 Ответ

0 голосов
/ 07 марта 2020

Вы можете достичь этого условия добавления windscroll <= 0.

$(window).scroll(function() {
  var windscroll = $(window).scrollTop();
  if (windscroll >= 100) {
    $('section').each(function(i) {
      if ($(this).position().top <= windscroll + 0) {
        $('li.active').removeClass('active');
        $('li').eq(i).addClass('active');
      }
    });

  } else {
    $('nav li.active').removeClass('active');
    $('nav li:first').addClass('active');
  }

  if (windscroll <= 0) $('#newMenu li.active').removeClass('active');


}).scroll();
.box {
  width: 100vw;
  height: 500vh;
}

#newMenu {
  position: fixed;
  top: 0;
}

.active {
  background: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div class="newMenu middle" id="newMenu">
  <ul class="">
    <li><a class="" href="#one">One</a></li>
    <li><a class="" href="#two">Two</a></li>
    <li><a class="" href="#three">Three</a></li>
  </ul>
</div>
<div class="spacer"></div>
<div class="content">
  <section id="one"></section>
  <section id="two"></section>
  <section id="three"></section>
</div>

<div class="box">

</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...