这是一款非常实用的jQueryCSS3可自动隐藏的导航菜单设计。该设计中,导航菜单在页面向下滚动时会自动进行隐藏,在页面向上滚动时,菜单又会自动出现。

使用方法

HTML结构

该导航菜单设计的HTML结构包含几个部分:header.cd-auto-hide-header是主导航菜单。main.cd-main-content是页面的主体内容。如果页面中包含二级子菜单,那么在<header>中还有一个nav.cd-secondary-nav元素。在二级子菜单上面还可以放置一个.cd-hero元素,用来制作网站的banner。

<header class="cd-auto-hide-header">
  <div class="logo"><a href="#0"><img src="img/cd-logo.svg" alt="Logo"></a></div>
 
  <nav class="cd-primary-nav">
    <a href="#cd-navigation" class="nav-trigger">
      <span>
        <em aria-hidden="true"></em>
        Menu
      </span>
    </a> <!-- .nav-trigger -->
 
    <ul id="cd-navigation">
      <!-- links here -->
    </ul>
  </nav> <!-- .cd-primary-nav -->

  <section class="cd-hero">
    <!-- content here -->
  </section> <!-- .cd-hero -->

  <nav class="cd-secondary-nav">
    <ul>
      <li><a href="#0">Intro</a></li>
      <!-- additional links here -->
    </ul>
  </nav> <!-- .cd-secondary-nav -->
</header> <!-- .cd-auto-hide-header -->
 
<main class="cd-main-content sub-nav">
  <!-- content here -->
</main> <!-- .cd-main-content -->
                
CSS样式

在css代码中,通过.cd-auto-hide-header class类来定义自动隐藏菜单的样式。默认情况下,菜单的定位方式为固定定位,top为0,。当用户开始向下滚动页面的时候,导航条会被添加一个.is-hidden class类,它用于将导航条向上移动到视口之外,将其隐藏。

.cd-auto-hide-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 60px;
  transition: transform .5s;
}
.cd-auto-hide-header.is-hidden {
  transform: translateY(-100%);
}
                

在样式文件style.css中分别为3种布局设置了各种的隐藏代码,你可以在样式文件中找到它们。

JavaScript

特效中使用jQuery来监听window对象的滚动事件。

var scrolling = false;
$(window).on('scroll', function(){
  if( !scrolling ) {
    scrolling = true;
    (!window.requestAnimationFrame)
      ? setTimeout(autoHideHeader, 250)
      : requestAnimationFrame(autoHideHeader);
  }
});                 
                

autoHideHeader()方法用于根据用户是向上还是向下滚动页面来显示或隐藏滚动条。