Название навигационной панели не скрывается при прокрутке вверх и вниз

#javascript #html #css #twitter-bootstrap

#javascript #HTML #css #twitter-bootstrap

Вопрос:

Я использую bootstrap для своей навигационной панели, а бренд навигационной панели — это изображение. Я использую немного javascript, чтобы панель навигации автоматически скрывалась и отображалась на основе прокрутки. Но проблема в том, что мой бренд навигационной панели (изображение) по-прежнему отображается в верхней части веб-сайта, не исчезая при прокрутке, в отличие от других ссылок навигационной панели. Я пока не смог найти решение.

HTML

 <nav id="navbar" class="navbar navbar-expand-lg">
            <a  class="navbar-brand" href="#"><img class="lg" src="css/images/logo.png" alt=""></a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
            </button>
        
            <div class="collapse navbar-collapse nav-links" id="navbarSupportedContent">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item active">
                    <a class="nav-link" href="#">Home</a>
                    </li>
                    <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                    </li>
                    <li class="nav-item">
                    <a class="nav-link" href="#">Projects</a>
                    </li>
                    <li class="nav-item">
                    <a class="nav-link" href="#">Contact</a>
                    </li>
                </ul>
            </div>
        </nav>
  

css

 .lg {
  width: 70px;
  height: 70px;
}

.nav-item {
  padding-left: 1rem;
  padding-right: 1rem;
}

.nav-link {
  font-size: 18px;
  font-weight: 500;
}


#navbar {
  background-color: #0a192f;
  position: fixed;
  top: 0;
  width: 100%;
  height: 90px;
  display: block;
  transition: top 0.3s;
}

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 15px;
  text-decoration: none;
  font-size: 17px;
}

#navbar a:hover {
  background-color: #ddd;
  color: black;
}
  

javascript

 var prevScrollpos = window.pageYOffset;
window.onscroll = function() {
  var currentScrollPos = window.pageYOffset;
  if (prevScrollpos > currentScrollPos) {
    document.getElementById("navbar").style.top = "0";
  } else {
    document.getElementById("navbar").style.top = "-50px";
  }
  prevScrollpos = currentScrollPos;
}
  

Пожалуйста, помогите мне с этой проблемой. Большое спасибо!

Комментарии:

1. было бы лучше, если бы вы сделали jsfiddle . Вы пробовали переключать свойство отображения или jquey slideToggle?

2. Пожалуйста, уточните с помощью изображения или jsfiddle

Ответ №1:

Вы выполняете свой код javascript в событии document.onLoad? Я думаю, что ваша проблема в

Если вы используете jQuery, убедитесь, что вы запускаете этот фрагмент кода в

 $(function() { ... });
  

блок. Если вы используете ванильный JS, вы должны сделать это в событии onLoad:

 window.addEventListener('load', function(event) {
   // your code here 
});
  

Я делал это некоторое время назад с помощью jQuery, но я делаю это с классами. Если он превышает заданный порог (60 пикселей — высота моего заголовка), добавьте данный класс, иначе удалите его.

 $(function () {

      $(window).on('scroll', function () {
        checkForVerticalScrolling.call(this);
      });

      function checkForVerticalScrolling() {
        if ($(this).scrollTop() > 60) {
          $(".header-component").addClass('header-component-bg');
          $(".header-menu").addClass('header-menu-bg');
        } else {
          $(".header-component").removeClass('header-component-bg');
          $(".header-menu").removeClass('header-menu-bg');
        }
      }

      checkForVerticalScrolling.call(this);
    });
  

Надеюсь, это полезно.

Комментарии:

1. Спасибо, что нашли время ответить. Это лучший способ его реализации, чем мой JS-код.

Ответ №2:

Я нашел проблему.

 } else {
    document.getElementById("navbar").style.top = "-50px";
}

  

Это произошло из-за этой строки кода. Моя навигационная панель не исчезает полностью, половина ее по-прежнему остается вверху, но я не мог этого видеть, потому что цвет фона навигационной панели был установлен на прозрачный. итак, я изменил "-50px" на "-90px" , теперь навигационная панель полностью скрывается. Спасибо, что нашли время ответить на мой вопрос.