Адаптивный логотип в начальной загрузке

#javascript #html #css #twitter-bootstrap

Вопрос:

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

 // JavaScript Document
(function($) {
  "use strict";



  // Collapse Navbar 
  var navbarCollapse = function() {
    if ($("#mainNav").offset().top > 100) {
      $("#mainNav").addClass("navbar-shrink")
      $(".logo").attr("src", "https://www.orticaweb.it/wp-content/uploads/2019/09/Twitter-00-Logo-Nero.png");

    } else {
      $("#mainNav").removeClass("navbar-shrink")
      $(".logo").attr("src", "https://loghi-famosi.com/wp-content/uploads/2020/04/Twitter-Logo-650x366.png");

    }
  };
  // Collapse now if page is not at top 
  navbarCollapse();
  // Collapse the navbar when page is scrolled 
  $(window).scroll(navbarCollapse);






  // Smooth scrolling using jQuery easing 
  $('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
    if (
      location.pathname.replace(/^//, "") ==
      this.pathname.replace(/^//, "") amp;amp;
      location.hostname == this.hostname
    ) {
      var target = $(this.hash);
      target = target.length ?
        target :
        $("[name="   this.hash.slice(1)   "]");
      if (target.length) {
        $("html, body").animate({
            scrollTop: target.offset().top - 70,
          },
          1000,
          "easeInOutExpo"
        );
        return false;
      }
    }
  });

})(jQuery); 
 @charset "UTF-8";

/* CSS Document */

body {
  margin: 0;
  font-family: 'Roboto', sans-serif;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
  height: 200vh;
  text-align: center;
  background-color: black;
  letter-spacing: 0.0625em;
}

#mainNav {
  min-height: 3.5rem;
  background-color: #fff;
}

#mainNav .navbar-toggler:focus {
  outline: none;
}

#mainNav .navbar-nav .nav-item:hover {
  color: #303F9F;
  outline: none;
  background-color: transparent;
}

#mainNav .navbar-nav .nav-item:active,
#mainNav .navbar-nav .nav-item:focus {
  outline: none;
  background-color: transparent;
}

#mainNav .navbar-brand {
  color: #303F9F;
  font-weight: 500;
}

@media (min-width: 992px) {
  #mainNav {
    padding-top: 0;
    padding-bottom: 0;
    border-bottom: none;
    background-color: transparent;
    transition: background-color 0.3s ease-in-out;
  }
  #mainNav .navbar-brand {
    padding: 0.5rem 0;
    color: white;
  }
  #mainNav .nav-link {
    transition: none;
    padding: 2rem 1.5rem;
    color: white;
    font-family: 'Roboto', sans-serif;
    font-size: 1rem;
    font-weight: 400;
  }
  #mainNav .nav-link:hover {
    color: rgba(255, 255, 255, 0.75);
  }
  #mainNav .nav-link:active {
    color: #303F9F;
  }
  #mainNav.navbar-shrink {
    background-color: white;
  }
  #mainNav.navbar-shrink .navbar-brand {
    color: #303F9F;
  }
  #mainNav.navbar-shrink .nav-link {
    color: #303F9F;
    padding: 1.5rem 1.5rem 1.25rem;
    border-bottom: 0.25rem solid transparent;
  }
  #mainNav.navbar-shrink .nav-link:hover {
    color: #7286CC;
  }
  #mainNav.navbar-shrink .nav-link:active {
    color: #303F9F;
    outline: none;
    border-bottom: 0.25rem solid #303F9F;
  }
}

@media (max-width: 992px) {
  #mainNav .link-collapse {
    color: #303F9F;
    font-weight: 400;
  }
  #mainNav .link-collapse:hover {
    color: #7286CC;
    font-weight: 400;
  }
} 
 <!doctype html>
<html>

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>index</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
  <script src="https://use.fontawesome.com/releases/v5.15.1/js/all.js" crossorigin="anonymous"></script>
  <link href="style.css" rel="stylesheet" type="text/css">
</head>



<body>
  <nav id="mainNav" class="navbar navbar-expand-lg navbar-light amber lighten-4 fixed-top">
    <div class="container">
      <a class="navbar-brand js-scroll-trigger" href="#home"><img class="img-fluid logo" src="https://loghi-famosi.com/wp-content/uploads/2020/04/Twitter-Logo-650x366.png" width="50px">Logo Agency</a>


      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="toggle navigation">MENU<i class="fas fa-bars"></i></button>



      <div id="navbarResponsive" class="collapse navbar-collapse">
        <ul class="navbar-nav ml-auto">

          <li class="nav-item"><a class="nav-link js-scroll-trigger link-collapse" href="#">example</a></li>
          <li class="nav-item"><a class="nav-link js-scroll-trigger link-collapse" href="#">example1</a></li>
          <li class="nav-item"><a class="nav-link js-scroll-trigger link-collapse" href="#">example2</a></li>
          <li class="nav-item"><a class="nav-link js-scroll-trigger link-collapse" href="#">example3</a></li>


        </ul>
      </div>
    </div>
  </nav>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
  <script src="script.js"></script>

</body>

</html> 

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

1. Я не могу легко воспроизвести причину размера предоставленного окна, но я думаю, что вы ищете способ определить, находится ли навигационная панель уже в том состоянии, в котором она выскочила? Если это так, поскольку у вас запущен jQuery, вы можете проверить функцию document.ready, если на панели навигации есть класс, который делает ее отзывчивой с помощью .hasClass (), а затем принудительно удалить ее, если это так. Это то, о чем ты говоришь?

Ответ №1:

Если я не ошибаюсь, вы хотите показать черный логотип на мобильных устройствах? Это может быть достигнуто с помощью CSS.

 @media only screen and (max-width: 600px) {
  .logo {
    background: URL('blacklogopath') !important;
  }
}
 

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

1. да, и в этом я согласен, проблема в том, что, как только я начинаю реагировать, если я прокручиваю, а затем возвращаюсь, по умолчанию появляется белый логотип. Это я не могу решить, вы должны уничтожить функцию в общей сложности px