When I click a link on my fixed navigation bar, it jumps to a specific section on the page, but the fixed nav-bar's height spills over. How can I subtract that height? Will this require javascript/jquery?
<div id="fixedNavWrapper">
<div id="navLinks">
<ul>
<li><a href="#about">ABOUT ME</a></li>
<li><a href="#portfolio">PORTFOLIO</a></li>
</ul>
</div>
</div>
<section id="about" class="section">
<h2>ABOUT ME</h2>
</section>
.CSS:
#fixedNavWrapper {
position: fixed;
z-index: 1;
width: 100%;
top: 0;
left: 0;
}
#navLinks {
text-align: center;
width: 100%;
height: 57px;
background: #000000;
}
#navLinks ul {
list-style: none;
margin: 0;
padding: 5px;
display: inline-block;
}
#navLinks ul li {
margin: 0;
padding: 0;
display: inline;
}
#navLinks ul li a {
text-decoration: none;
display: block;
float: left;
padding: 0 65px;
height: 45px;
line-height: 45px;
}
I think that you can't do it with css. However you can use jQuery to do it. Quite easy:
HTML (add classes to li elements to identify them in your jQuery code):
<div id="fixedNavWrapper">
<div id="navLinks">
<ul>
<li class="about"><a href="#about">ABOUT ME</a></li>
<li class="portfolio"><a href="#portfolio">PORTFOLIO</a></li>
</ul>
</div>
</div>
<section id="about" class="section">
<h2>ABOUT ME</h2>
</section>
JS (Use event .click to move your "body" to the correct position )
$('li.about').click(function(){
positionabout = $('#about').offset().top - $('#fixedNavWrapper').height(); // Position of #about - nav height = correct position
$("html, body").animate({scrollTop:positionabout}, '500', 'swing');
})
$('li.portfolio').click(function(){
positionport = $('#portfolio').offset().top - $('#fixedNavWrapper').height();
$("html, body").animate({scrollTop:positionport}, '500', 'swing');
})