Изменение фона панели навигации при прокрутке

Я хочу начать с прозрачного фона, а затем для background-color: rgba(255, 255, 255, 0.6); перейти к навигации, когда зритель начнет прокручивать страницу вниз.

Это то, что у меня есть, поэтому HTML-страница тянет код JS.

<head>
<script src="nav.js" type="text/javascript"></script>
</head>

Это то, что я имею для navbar. Я не очень хочу весь navbar изменить с прокруткой, просто inner, logo изображение должно быть прозрачным.

 <nav class="navbar" >
    <img src="images/logo.png" class="logo">
    <div id="inner" id="top">

    <ul>
      <li><a href="index.html" title="Home">HOME</a></li>
      <li><a href="about.html" title="About">ABOUT</a></li>
      <li><a href="contact.html" title="Contact">CONTACT</a></li>
    </ul>
    </div>
</nav>

Вот мой CSS (если больше нужно, я могу опубликовать).

#inner{
width:140px;
float:right;
margin-right:5px;
text-align:justify;
}
.navbar a {
font-size: 14px;
font-family:SinkinSansLight;
letter-spacing:5px;
line-height: 20px;
border:none;
padding: 2px ;
text-decoration: none;
margin-top: 10px;
}

Наконец, мой js, который был просто скопирован из других тем на SO и скорректирован с помощью идентификатора из моего css.

function checkScroll(){
var startY = $('#inner').height() * 2; //The point where the navbar changes in px

if($(window).scrollTop() > startY){
    $('#inner').addClass("scrolled");
}else{
    $('#inner').removeClass("scrolled");
}
}

if($('#inner').length > 0){
$(window).on("scroll load resize", function(){
    checkScroll();
});
}

Извините, что так много всего, я просто вижу, что многим людям нужно больше кода, чем предоставляется, и я пробовал несколько вариантов с js. Спасибо за помощь!

1 ответ

Изменить: обнаружил проблему. Вы пытаетесь использовать jQuery, но не включили его в страницу. Разместите на своем сайте jQuery.

Я не совсем уверен, что вы спрашиваете, потому что код JQuery, который вы опубликовали, работает нормально... Он добавляет класс scrolled в #inner когда пользователь прокручивает.

Вот фрагмент с вашим кодом. Я добавил переход к #inner и цвет фона для #inner.scrolled и установите высоту на теле, чтобы вы могли прокручивать и видеть, как оно работает.

function checkScroll() {
  var startY = $('#inner').height() * 2; //The point where the navbar changes in px

  if ($(window).scrollTop() > startY) {
    $('#inner').addClass("scrolled");
  } else {
    $('#inner').removeClass("scrolled");
  }
}

if ($('#inner').length > 0) {
  $(window).on("scroll load resize", function() {
    checkScroll();
  });
}
body {
  height: 1000px;
}
#inner {
  width: 140px;
  float: right;
  margin-right: 5px;
  text-align: justify;
  position: fixed;
  transition: background-color 1s;
}
#inner.scrolled {
  background-color: rgba(255, 0, 0, 0.6);
}
.navbar a {
  font-size: 14px;
  font-family: SinkinSansLight;
  letter-spacing: 5px;
  line-height: 20px;
  border: none;
  padding: 2px;
  text-decoration: none;
  margin-top: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="navbar">
  <img src="images/logo.png" class="logo">
  <div id="inner">
    <ul>
      <li><a href="index.html" title="Home">HOME</a>
      </li>
      <li><a href="about.html" title="About">ABOUT</a>
      </li>
      <li><a href="contact.html" title="Contact">CONTACT</a>
      </li>
    </ul>
  </div>
</nav>

Другие вопросы по тегам