2011-09-08 9 views
2

どのように私はGmailのメニューのような固定メニューを構築することができます。私はCSSを試したが、divは途中にとどまり、Gmailのメニューがスクロールのように表示されない。メニューヘッダーのようにGmailを構築する方法

open in large image gmail menu scroll effect

私は次の、CSSプロパティを使用してみましたが、いくつかのサンプルコード(ない実際のコード)である:

.menu { 
    position:fixed; 
    height: 36px; 
    background-color:#fff; 
} 

答えて

1

位置固定のみではこの効果を得るには不十分です。また、position:fixedはIE7以下では動作しませんので、おそらくフォールバックが必要です。

あなたがページをどのくらいスクロールダウンしたかに基づいて要素の位置を動的に変更するには、javascript(jQueryを使用すると簡単です)を使用する必要があります。 .scrollTop()

http://api.jquery.com/scrollTop/

var scrollTop = $(window).scrollTop(); 
2

あなたはscrollTopスプライトをチェックして、位置を設定するためにJavaScriptを使用する必要がありますscrollTopがヘッダーの高さを超えている場合は、メニューを修正します。

function getScrollTop() { 
     if(typeof pageYOffset!= 'undefined') { 
      //most browsers 
      return pageYOffset; 
     } 
     else { 
      var b = document.body; //IE 'quirks' 
      var d = document.documentElement; //IE with doctype 
      d = (d.clientHeight) ? d : b; 
      return d.scrollTop; 
     } 
    } 

    function onScroll() { 
     var menu = document.getElementById('divMyMenu'); 
     var headerAndNavHeight = document.getElementById('divHeader').clientHeight 
      + document.getElementById('tsMain').clientHeight; 

     if (getScrollTop() < headerAndNavHeight) { 
      menu.style.top = headerAndNavHeight + 'px'; 
      menu.style.position = 'absolute'; 
     } 
     else { 
      menu.style.top = '0px'; 
      menu.style.position = 'fixed'; 
     } 
    } 
関連する問題