简体   繁体   English

将Bootstrap固定导航栏的底部与div的顶部对齐

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

I have a fixed navbar on the top of my page and a scrollspy set up with animated scrolling. 我在页面顶部有一个固定的导航栏,并设置了带有动画滚动的scrollspy。 However, when I click a navigation link, the page scrolls to the point where the top of the navbar aligns with the top of the anchored div . 然而,当我点击一个导航链接,页面滚动的地步导航栏的顶部对齐与锚 div I'd like the bottom of the navbar to align with the top of the anchored div so as to not cover any content in that anchored div . 我希望导航栏的底部与锚定div顶部对齐,以便不覆盖该锚定div任何内容。 How can I do this? 我怎样才能做到这一点?

As far as my code goes, I am starting from this example from W3schools. 就我的代码而言,我是从W3schools的示例开始的。

To scroll at the top of each sections instead of the additional offset of 50px, you can just subtract 50 from these two: 要在每个部分的顶部滚动,而不是在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;
      });

Original snippet: (Scrolls to 50 offset from top) 原始代码段:(滚动到顶部偏移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> 

Revised snippet: (Scrolls to to the top of each section) 修改后的代码段:(滚动到每个部分的顶部)

 <!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