Hur man skapar: Minskande navigationsmeny vid rullning

Lär dig hur du använder CSS och JavaScript för att justera storleken på navigationsfältet vid rullning.

Prova själv

Hur man minskar navigationsfältet vid rullning

Steg 1 - Lägg till HTML:

Skapa navigationsfält:

<div id="navbar">
  <a href="#default" id="logo">Företagslogotyp</a>
  <div id="navbar-right">
    <a class="active" href="#home">Hem</a>
    <a href="#contact">Kontakt</a>
    <a href="#about">Om</a>
  </div>
</div>

Steg 2 - Lägg till CSS:

Ställ in navigationsfältets stil:

/* Skapa klistrande/fast navigationsfält */
#navbar {
  overflow: hidden;
  background-color: #f1f1f1;
  padding: 90px 10px; /* Större innermarginal, minskar vid rullning (använd JS) */
  transition: 0.4s; /* Lägg till övergångseffekt när innermarginalen minskar */
  position: fixed; /* Klistrande/fast navigationsfält */
  width: 100%;
  top: 0; /* Överst */
  z-index: 99;
}
/* Inställningar för navigationslänkarnas stil */
#navbar a {
  float: left;
  färg: svart;
  text-align: center;
  padding: 12px;
  text-decoration: none;
  font-size: 18px;
  line-height: 25px;
  border-radius: 4px;
}
/* Inställningar för logotypens stil */
#navbar #logo {
  font-size: 35px;
  font-weight: bold;
  övergång: 0.4s;
}
/* Ställ in stilen för länk när muspekaren hovrar över */
#navbar a:hover {
  bakgrundsfärg: #ddd;
  färg: svart;
}
/* Ställ in stilen för aktiv/nuvarande länk */
#navbar a.active {
  bakgrundsfärg: dodgerblå;
  färg: vit;
}
/* Visa några länkar till höger */
#navbar-right {
  flyt: höger;
}
/* Lägg till responsivitet - Visa navigationsfältet vertikalt istället för horisontellt på skärmar med en bredd mindre än 580 pixlar */
@media screen and (max-width: 580px) {
  #navbar {
    padding: 20px 10px !important; /* Använd !important för att säkerställa att JavaScript inte överskriver marginalen på små skärmar */
  }
  #navbar a {
    flyt: inget;
    display: block;
    text-align: vänster;
  }
  #navbar-right {
    flyt: inget;
  }
}

Tredje steg - Lägg till JavaScript:

// När användaren rullar 80 pixlar ned från dokumentets topp, justera navigationsfältets inre marginal och logotypens teckenstorlek
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
  if (document.body.scrollTop > 80 || document.documentElement.scrollTop > 80) {
    document.getElementById("navbar").style.padding = "30px 10px";
    document.getElementById("logo").style.fontSize = "25px";
  }
    document.getElementById("navbar").style.padding = "80px 10px";
    document.getElementById("logo").style.fontSize = "35px";
  }
}

Prova själv