簡體   English   中英

將Bootstrap固定導航欄的底部與div的頂部對齊

[英]Align bottom of Bootstrap fixed navbar to top of div

我在頁面頂部有一個固定的導航欄,並設置了帶有動畫滾動的scrollspy。 然而,當我點擊一個導航鏈接,頁面滾動的地步導航欄的頂部對齊與錨 div 我希望導航欄的底部與錨定div頂部對齊,以便不覆蓋該錨定div任何內容。 我怎樣才能做到這一點?

就我的代碼而言,我是從W3schools的示例開始的。

要在每個部分的頂部滾動,而不是在50px的附加偏移量上滾動,您可以從這兩個部分中減去50:

$('html, body').animate({
        scrollTop: $(hash).offset().top-50
      }, 800, function(){

        // Add hash (#) to URL when done scrolling (default click behavior)
        window.location.hash = hash-50;
      });

原始代碼段:(滾動到頂部偏移50)

 <!DOCTYPE html> <html> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <style> body { position: relative; } #section1 { padding-top: 50px; height: 500px; color: #fff; background-color: #1E88E5; } #section2 { padding-top: 50px; height: 500px; color: #fff; background-color: #673ab7; } #section3 { padding-top: 50px; height: 500px; color: #fff; background-color: #ff9800; } #section41 { padding-top: 50px; height: 500px; color: #fff; background-color: #00bcd4; } #section42 { padding-top: 50px; height: 500px; color: #fff; background-color: #009688; } </style> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">WebSiteName</a> </div> <div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#section1">Section 1</a></li> <li><a href="#section2">Section 2</a></li> <li><a href="#section3">Section 3</a></li> <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Section 4 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#section41">Section 4-1</a></li> <li><a href="#section42">Section 4-2</a></li> </ul> </li> </ul> </div> </div> </div> </nav> <div id="section1" class="container-fluid"> <h1>Section 1</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section2" class="container-fluid"> <h1>Section 2</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section3" class="container-fluid"> <h1>Section 3</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section41" class="container-fluid"> <h1>Section 4 Submenu 1</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section42" class="container-fluid"> <h1>Section 4 Submenu 2</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <script> $(document).ready(function() { // Add scrollspy to <body> $('body').scrollspy({ target: ".navbar", offset: 50 }); // Add smooth scrolling on all links inside the navbar $("#myNavbar a").on('click', function(event) { // Make sure this.hash has a value before overriding default behavior if (this.hash !== "") { // Prevent default anchor click behavior event.preventDefault(); // Store hash var hash = this.hash; // Using jQuery's animate() method to add smooth page scroll // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area $('html, body').animate({ scrollTop: $(hash).offset().top }, 800, function() { // Add hash (#) to URL when done scrolling (default click behavior) window.location.hash = hash; }); } // End if }); }); </script> </body> </html> 

修改后的代碼段:(滾動到每個部分的頂部)

 <!DOCTYPE html> <html> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <style> body { position: relative; } #section1 { padding-top: 50px; height: 500px; color: #fff; background-color: #1E88E5; } #section2 { padding-top: 50px; height: 500px; color: #fff; background-color: #673ab7; } #section3 { padding-top: 50px; height: 500px; color: #fff; background-color: #ff9800; } #section41 { padding-top: 50px; height: 500px; color: #fff; background-color: #00bcd4; } #section42 { padding-top: 50px; height: 500px; color: #fff; background-color: #009688; } </style> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">WebSiteName</a> </div> <div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#section1">Section 1</a></li> <li><a href="#section2">Section 2</a></li> <li><a href="#section3">Section 3</a></li> <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Section 4 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#section41">Section 4-1</a></li> <li><a href="#section42">Section 4-2</a></li> </ul> </li> </ul> </div> </div> </div> </nav> <div id="section1" class="container-fluid"> <h1>Section 1</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section2" class="container-fluid"> <h1>Section 2</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section3" class="container-fluid"> <h1>Section 3</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section41" class="container-fluid"> <h1>Section 4 Submenu 1</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <div id="section42" class="container-fluid"> <h1>Section 4 Submenu 2</h1> <p>Click on the different Section links in the navbar to see the smooth scrolling effect.</p> </div> <script> $(document).ready(function() { // Add scrollspy to <body> $('body').scrollspy({ target: ".navbar", offset: 50 }); // Add smooth scrolling on all links inside the navbar $("#myNavbar a").on('click', function(event) { // Make sure this.hash has a value before overriding default behavior if (this.hash !== "") { // Prevent default anchor click behavior event.preventDefault(); // Store hash var hash = this.hash; // Using jQuery's animate() method to add smooth page scroll // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area $('html, body').animate({ scrollTop: $(hash).offset().top - 50 }, 800, function() { // Add hash (#) to URL when done scrolling (default click behavior) window.location.hash = hash - 50; }); } // End if }); }); </script> </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM