在滚动上缩小导航菜单

创建于 2024-12-03 / 20
字体: [默认] [大] [更大]

了解如何使用 CSS 和 JavaScript 在滚动时调整导航栏的大小。


亲自试一试 »


如何缩小滚动导航栏

步骤 1) 添加 HTML:

创建导航栏:

实例

<div id="navbar">
  <a href="#default" id="logo">CompanyLogo</a>
  <div id="navbar-right">
    <a class="active" href="#home">Home</a>
    <a href="#contact">Contact</a>
    <a href="#about">About</a>
  </div>
</div>
步骤 2) 添加 CSS:

设置导航栏样式:

实例

/* 创建一个粘性/固定导航栏 */
#navbar {
  overflow: hidden;
  background-color: #f1f1f1;
  padding: 90px 10px; /* 滚动时会缩小的大填充(使用 JS)*/
  transition: 0.4s; /* 当填充减少时添加过渡效果 */
  position: fixed; /* 粘性/固定导航栏 */
  width: 100%;
  top: 0; /* 在顶部 */
  z-index: 99;
}

/* 设置导航栏链接的样式 */
#navbar a {
  float: left;
  color: black;
  text-align: center;
  padding: 12px;
  text-decoration: none;
  font-size: 18px;
  line-height: 25px;
  border-radius: 4px;
}

/* 为标志设置样式 */
#navbar #logo {
  font-size: 35px;
  font-weight: bold;
  transition: 0.4s;
}

/* 鼠标悬停链接 */
#navbar a:hover {
  background-color: #ddd;
  color: black;
}

/* 为活动/当前链接设置样式 */
#navbar a.active {
  background-color: dodgerblue;
  color: white;
}

/* Display some links to the right */
#navbar-right {
  float: right;
}

/* 添加响应能力 - 在宽度小于 580 像素的屏幕上,垂直显示导航栏而不是水平显示 */
@media screen and (max-width: 580px) {
  #navbar {
    padding: 20px 10px !important; /* 使用 !important 确保 JavaScript 不会覆盖小屏幕上的填充 */
  }
  #navbar a {
    float: none;
    display: block;
    text-align: left;
  }
  #navbar-right {
    float: none;
  }
}

步骤 3) 添加 JavaScript:

实例

// 当用户从文档顶部向下滚动 80 像素时,调整导航栏的内边距和徽标的字体大小
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";
  } else {
    document.getElementById("navbar").style.padding = "80px 10px";
    document.getElementById("logo").style.fontSize = "35px";
  }
} 亲自试一试 »

0 人点赞过