如何创建:滚动时收缩导航菜单

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

جرب بنفسك

如何在滚动时缩小导航栏

第一步 - 添加 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>

第二步 - 添加 CSS:

设置导航栏样式:

/* 创建粘性/固定导航栏 */
#navbar {
  الإفراط: لا-يوجد;
  لون-الخلفية: #f1f1f1;
  ملء-النص: 90px 10px; /* 较大的内边距,在滚动时会缩小(使用 JS) */
  انتقال: 0.4s; /* 当内边距减小时添加过渡效果 */
  وضع: ثابت; /* 粘性/固定导航栏 */
  عرض: 100%;
  الاعلى: 0; /* 在顶部 */
  مستوى-الترتيب: 99;
}
/* 设置导航栏链接的样式 */
#navbar a {
  على-اليسار;
  color: black;
  توجيه-النص: الوسط;
  ملء-النص: 12px;
  تزيين-النص: لا-يوجد;
  حجم-الخط: 18px;
  ارتفاع-الخط: 25px;
  حجم-الراديوس: 4px;
}
/* 设置 logo 的样式 */
#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;
}
/* عرض بعض الروابط في الجانب الأيمن */
#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;
  }
}

الخطوة الثالثة - إضافة 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";
  }
    document.getElementById("navbar").style.padding = "80px 10px";
    document.getElementById("logo").style.fontSize = "35px";
  }
}

جرب بنفسك