스크롤시 글로벌 메뉴 고정

포트폴리오에 글로벌 메뉴를 도입했습니다.

이미지





HTML



JS에서 #global-nav를 얻는 부분이 <nav id="global-nav">입니다.
  <nav id="global-nav">
    <ul class="menu">
      <li class="menu-profile ">
        <a href="#profile-box" class="menu-list">PROFILE</a>
      </li>
      <li class="menu-skill">
        <a href="#skill-box" class="menu-list">SKILL</a>
      </li>
      <li class="menu-works">
        <a href="#works-box" class="menu-list">WORKS</a>
      </li>
      <li class="menu-contact">
        <a href="#contact-box" class="menu-list">CONTACT</a>
      </li>
    </ul>
  </nav>

CSS



글로벌 메뉴가 화면에 도달하면 .m_fixed가 부여됩니다..m_fixed 가 부여되었을 때, position: fixed; 로 고정한다.


/* ---------------------------------------------

グローバルメニュー

------------------------------------------------ */
#global-nav {
  background: #fff;
  width: 100%;
}
#global-nav.m_fixed {
  left: 0;
  position: fixed;
  top: 0;
}


자바스크립트


#global-nav 를 취득해, if문으로 글로벌 메뉴가 화면 상부에 도달했을 때, m_fixed 클래스의 추가.
도달하지 않을 때 삭제 처리를 거친다.

jQuery 메서드
var navPos = jQuery( '#global-nav' ).offset().top;  // グローバルメニューの位置
var navHeight = jQuery( '#global-nav' ).outerHeight();  // グローバルメニューの高さ
jQuery( window ).on( 'scroll', function() {
  if ( jQuery( this ).scrollTop() > navPos ) {  // もしscrollTopの位置がnavPosより大きければ
    jQuery( 'body' ).css( 'padding-top', navHeight );
    jQuery( '#global-nav' ).addClass( 'm_fixed' );  // m_fixed追加
  } else {
    jQuery( 'body' ).css( 'padding-top', 0 );
    jQuery( '#global-nav' ).removeClass( 'm_fixed' );  // m_fixed削除
  }
});

좋은 웹페이지 즐겨찾기