0

ページの上部から75px程度下に最初に存在するナビゲーションバーのあるWebページがあります。ナビゲーションバーがブラウザウィンドウの上部に当たったときに、ナビゲーションバーをブラウザウィンドウの上部に固定するスクリプトを作成しました。これはサファリ/クロームでは正常に機能しますが、他のブラウザでは効果がトリガーされません。バーが固定モードに切り替わることはありません。私はhtml/css / javascriptを初めて使用するので、問題は単純かもしれません。コードは次のとおりです。

<head>
<link rel="stylesheet" href="foo_css.css" />
<script type="text/javascript">
function window_onload() {
    window.addEventListener("scroll",navbar_reset_top,false);
}

var navbar_top=75;

function navbar_reset_top() {
    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
    if(scrollTop>navbar_top&&nav.className==="navbar_absolute") {
        document.getElementById("nav").className="navbar_fixed";
    } 
    else if(scrollTop<navbar_top&&nav.className==="navbar_fixed") {
        document.getElementById("nav").className="navbar_absolute";
    }
 }
 </script>

 </head>
 <body onload="javascript:window_onload();">
 <div id="nav" class="navbar_absolute">
 <ul>

そして、これは私が思うすべての関連するCSSです:

#nav.navbar_fixed {
     position:fixed;
     top:0px;
}

#nav.navbar_absolute {
     position:absolute;
     top:74px;
}
4

1 に答える 1

0

これは、Firefox で動作するはずのわずかに変更されたバージョンです。

  var nav, navbar_top = 75;
  function window_onload() {
      nav = document.getElementById("nav");
      window.addEventListener("scroll", navbar_reset_top, false);
  }

  function navbar_reset_top() {

      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

      // you won't need the && nav.className==="navbar_absolute" part
      if(scrollTop > navbar_top && nav.className==="navbar_absolute") {
          nav.className="navbar_fixed";
      }
      // you don't need the check for nav.className==="navbar_fixed" part either
      else if(scrollTop < navbar_top && nav.className==="navbar_fixed") {
          nav.className="navbar_absolute";
      }
   }
于 2012-07-21T01:35:19.547 に答える