'Bootstrap - navbar-fixed-top covers content
I have a question about navbar-fixed-top. Well, I have a simple problem with it. My fixed navbar covers content, for example in "About us" page, it covers row with "About us" title.
I have no idea how can I fix it, because when I resize website (mobile devices size) the header is visible.
Of course I have this kind of problem with headers in other pages (Full Width and 404).
Also, in Index page, it covers some of carousel slider.
Information:
bootstrap 2.3.2
Let me know, how can I fix it on all resolutions.
Solution 1:[1]
the response is in the page:
Twitter Bootstrap - top nav bar blocking top content of the page
Add to your CSS:
body {
padding-top: 65px;
}
or a more complex solution but responsive, if your navbar change the height( ex in tablets appears in more to 60px; or is different ) use a mixed solution with css and javascript
CSS:
#godown{
height: 60px;
}
HTML (resumen)
<body>
<nav class="navbar navbar-fixed-top " role="navigation" id="navMenu">
...
</nav>
<!-- This div make the magic :) -->
<div class="godown-60" id="godown"></div>
<!-- the rest of your site -->
...
JAVASCRIPT:
<script>
//insert this in your jquery
//control the resizing of menu and go down the content in the correct position
$("#navMenu").resize(function () {
$('#godown').height($("#navMenu").height() + 10);
});
if ($("#navMenu").height() > $('#godown').height()) $('#godown').height($("#navMenu").height() + 10);
</script>
Solution 2:[2]
Try class="navbar-static-top". It still allows navigation bar to be stay on the top but doesn't block content.
Solution 3:[3]
position: sticky instead of position: static did the trick for me.
Solution 4:[4]
I would do this:
// add appropriate media query if required to target mobile nav only
.nav { overflow-y: hidden !important }
This should make sure the nav block doesn't stretch downpage and covers the page content.
Solution 5:[5]
Just add an id or class to the content, and then give it a margin top enough to make the content show without the static navbar hindering it and add the "!important" attribute to make it work.....
Solution 6:[6]
It's possible setting a variable for the paddingTop of the body to the height of the navbar could also work and is subsequently a bit more responsive than a fixed 60/65px value.
let padding = $("nav").height() + "px";
A practical example is the Bootstrap .navbar-toogler button and adding a click event to it and setTimeout function which allows the height to change then apply the new value as paddingTop to the body.
jQuery:
$(".navbar-toggler").click(function(){
setTimeout(function(){
let padding = $("nav").height() + "px";
$("body").css("paddingTop", padding)
}, 500)
})
vanillaJS:
document.querySelector(".navbar-toggler").onclick = function(){
setTimeout(function(){
let padding = document.querySelector("nav").offsetHeight + "px";
document.body.style.paddingTop=padding;
}, 500)
};
Solution 7:[7]
var navHeight = $("#menu").height();
$("body").css({paddingTop: (navHeight+12)+'px'});
Try this easy way.
Solution 8:[8]
Try it out. It will retain the fixed property of navbar
.navbar{
top:0;
position:fixed;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Community |
| Solution 2 | Antonio Jha |
| Solution 3 | Zoe stands with Ukraine |
| Solution 4 | developer10 |
| Solution 5 | DamiCode |
| Solution 6 | |
| Solution 7 | Peter Csala |
| Solution 8 | Himani |
