最初は上部に固定されていないナビゲーションバーがあります。ここでやろうとしているのは、たとえば150ピクセルのオフセットをスクロールすると、ナビゲーションバーが固定位置で上部に固定され、それを使用することですページの別のセクションにリンクするためのページ内アンカー、および上部に固定された接辞ナビゲーションバーは、ページ内の正しいアンカー領域を強調表示します (scrollspy?)
ここでの問題は、ナビゲーション バーが上部に固定された後、コンテンツの一部がナビゲーション バーの後ろに隠されているため、固定されたナビゲーション バーによってアンカーがページ上の正しい位置に向かわなくなることです。
私はこの問題についてかなり長い間調査しており、本文に padding-top を追加するための多くの提案を見てきましたが、スクロールによって接辞がトリガーされるまで、トップナビゲーションは修正されません。本文にパディングを追加した後も、ナビゲーションが正しく強調表示されない
以下のセクションの解決策を 試しました Bootstrap で ScrollSpy のオフセットを設定するにはどうすればよいですか?
説明が下手なのでスクリーンショットだけ載せておきます。
これは、スクロールして貼り付ける前のスクリーンショットです
これは、ナビゲーション バーが上部に固定された後のスクリーンショットで、ページ コンテンツまでスクロールします。
どのように機能させたいか
以下は私のコードです。
<body data-spy="scroll">
<!--This is the nav bar getting affixed to the top-->
<div class="navbar navbar-custom navbar-inverse navbar-static-top" id="nav">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav nav-justified">
<li><a href="#section1">About</a></li>
<li><a href="#section2">Method</a></li>
<li><a href="#section3">Findings</a></li>
<li><a href="#section4">Final</a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.navbar -->
これはコンテンツ領域です
<div class="mainContent">
<div class="row">
<div class="col-lg-7 col-md-7">
<div id="section1">
<h3>About the Project</h3>
</div>
<h4>Read the <a href="./assets/Preliminary_Avvo.pdf">Preliminary Proposal</a></h4>
</div>
html の残りの部分は、section2、section3、および section4 にラップされたコンテンツです。
私のCSS
.navbar-custom {
border:none;
background-color: #FFFFFF;
font-weight:600;
text-transform:uppercase;
border-width:0;
}
.navbar-custom li{
float:none;
}
.navbar-custom .navbar-nav>li>a {
color: #ddd;
}
.navbar-custom .navbar-nav li>a:hover, .navbar-nav li .open, .navbar-custom .navbar-nav .active a {
background-color:#902c00;
color:#FFFFFF !important;
}
#nav {
width: 100%;
position:static;
top:-32px;
}
#nav.affix {
position: fixed;
top: 0;
z-index:10;
width:940px;
}
JS
/* affix the navbar after scroll below header */
$('#nav').affix({
offset: {
top: 150
}
});
/* highlight the top nav as scrolling occurs */
$('body').scrollspy({ target: '#nav' })