testerius
testerius

Reputation: 411

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:

Let me know, how can I fix it on all resolutions.

Upvotes: 25

Views: 50647

Answers (9)

princevezt
princevezt

Reputation: 77

This might be old but this one is a workaround. Adding scroll-padding-top do the trick.

https://css-tricks.com/fixed-headers-on-page-links-and-overlapping-content-oh-my/

Upvotes: 0

Himani Dadem
Himani Dadem

Reputation: 37

Try it out. It will retain the fixed property of navbar

.navbar{
  top:0;
  position:fixed;
}

Upvotes: 0

var navHeight = $("#menu").height();
$("body").css({paddingTop: (navHeight+12)+'px'});

Try this easy way.

Upvotes: 1

Max Pietrzak
Max Pietrzak

Reputation: 91

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)
        };

Upvotes: 0

DamiCode
DamiCode

Reputation: 1

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

Upvotes: 0

yay
yay

Reputation: 91

position: sticky instead of position: static did the trick for me.

Upvotes: 8

developer10
developer10

Reputation: 1500

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.

Upvotes: 0

chefjuanpi
chefjuanpi

Reputation: 1697

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>

Upvotes: 22

Antonio Jha
Antonio Jha

Reputation: 1309

Try class="navbar-static-top". It still allows navigation bar to be stay on the top but doesn't block content.

Upvotes: 11

Related Questions