Изменение лого в шапке сайта

295
04 июля 2022, 08:30

Есть фиксированная прозрачная шапка, белое лого и меню. При скроле вниз от половины высоты 1 блока, шапка становится белой, а логотип должен стать зеленым. Каким способом можно менять лого в формате png?

Answer 1

Изначально с помощью js или jquery при прокрутке добавим шапке класс sticky.

А дальше, например, вариант с css:

// Sticky Header
function navbarFixed() {
  if ($('header').length) {
    $(window).scroll(function() {
      var scroll = $(window).scrollTop();
      if (scroll > 100) {
        $('header').addClass("sticky");
      } else {
        $('header').removeClass("sticky");
      }
    });
  }
}
navbarFixed();
* {
  box-sizing: border-box;
}
main {
  background: #eee;
  height: 8000px;
}
header {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  border-bottom: 1px solid #ccc;
  height: 50px;
  padding: 10px 15px;
  transition: all .2s ease;
}
.logo {
  width: 30px;
  height: 30px;
  mask: url(#mymask);
  -webkit-mask-box-image: url(https://developer.spotify.com/assets/branding-guidelines/color2@2x.png);
  background: #fff;
  transition: all .2s ease;
}
header.sticky {
  background: #fff;
}
header.sticky .logo {
  background: green;
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

<header>
  <div class="logo"></div>
  <svg height="0" width="0">
      <mask id="mymask">
        <image id="img" xlink:href="https://developer.spotify.com/assets/branding-guidelines/color2@2x.png" x="0" y="0" height="50px" width="50px" />
      </mask>
    </svg>
</header>
<main></main>

Или вариант из комментария все тем же js или jquery меняем путь к логотипу:

// Sticky Header
function navbarFixed() {
  if ($('header').length) {
    $(window).scroll(function() {
      var scroll = $(window).scrollTop();
      if (scroll > 100) {
        $('header').addClass("sticky");
        $('.logo').attr('src', 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Ski_trail_rating_symbol-green_circle.svg/768px-Ski_trail_rating_symbol-green_circle.svg.png');
      } else {
        $('header').removeClass("sticky");
        $('.logo').attr('src', 'https://developer.spotify.com/assets/branding-guidelines/color2@2x.png');
      }
    });
  }
}
navbarFixed();
* {
  box-sizing: border-box;
}
main {
  background: #eee;
  height: 8000px;
}
header {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  border-bottom: 1px solid #ccc;
  height: 50px;
  padding: 10px 15px;
  transition: all .2s ease;
}
.logo {
  max-height: 100%;
}
header.sticky {
  background: #fff;
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

<header>
  <img src="https://developer.spotify.com/assets/branding-guidelines/color2@2x.png" alt="" class="logo">
</header>
<main></main>

READ ALSO
Вывести значении mysql колонок (столбцов), которые отличаются только цифрами в имени

Вывести значении mysql колонок (столбцов), которые отличаются только цифрами в имени

Нужно вывести значении mysql колонок (столбцов), которые отличаются только цифрами в имениПример имени колонок:

457
Что значит &quot;Connect to MySQL from the MySQL command line client&quot;?

Что значит "Connect to MySQL from the MySQL command line client"?

Объясните пожалуйста попроще (только начинаю изучать Docker), что значит "Connect to MySQL from the MySQL command line client" (Подключитесь к MySQL из клиента командной...

468
Как посчитать количество элементов COUNT(*) если есть HAVING и GROUP BY?

Как посчитать количество элементов COUNT(*) если есть HAVING и GROUP BY?

Есть 3 таблицы product, product_to_category, product_to_filter

380
Как при группировке записей ограничить вывод

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

Подскажите, пожалуйста, варианты, как можно ограничить вывод при группировке по количеству записейНапример, у меня есть таблица вида:

297