375 votes

Twitter bootstrap navbar fixe top site qui se chevauchent

Je suis en utilisant bootstrap sur mon site et je rencontre des problèmes avec la barre de navigation supérieure fixe. Quand je suis juste à l'aide de l'ordinaire barre de navigation, tout va bien. Cependant, lorsque j'essaie de passer à barre de navigation supérieure fixe, tous les autres contenus présents sur le site de changements comme la barre de navigation n'est pas là et la barre de navigation le chevauche. voici en gros comment j'ai mis ça:

.navbar.navbar-fixed-top
  .navbar-inner
    .container
.container
  .row
    //yield content

j'ai essayé de copier amorce exemples exactement, mais encore d'avoir ce problème uniquement lors de l'utilisation de barre de navigation supérieure fixe. ce que je fais mal?

568voto

rfunduk Points 15267

Votre réponse est juste dans les docs:

Corps de rembourrage nécessaire

La barre de navigation fixe se superpose à votre autre contenu, sauf si vous les ajoutez padding vers le haut de l' <body>. Essayer vos propres valeurs ou utilisez notre extrait de code ci-dessous. Astuce: Par défaut, la barre de navigation est 50px de haut.

body { padding-top: 70px; }

Assurez-vous d'inclure cette après la base de Bootstrap CSS.

135voto

Nick Bisby Points 711

Comme d'autres l'ont déclaré en ajoutant un padding-top pour le corps fonctionne très bien. Mais quand vous faites de l'écran plus étroite (de téléphone cellulaire de largeur), il existe un fossé entre la barre de navigation et le corps. Aussi, encombré de la barre de navigation peut s'étendre sur plusieurs lignes de bar, l'écrasement d'une partie du contenu nouveau.

Cela a résolu ce genre de problème pour moi

body { padding-top: 40px; }
@media screen and (max-width: 768px) {
    body { padding-top: 0px; }
}

Ce qui fait un 40px padding par défaut et 0px lorsque, en vertu de 768px largeur (qui, selon bootstrap de docs est la cellule de téléphone de mise en page de coupure où l'écart devrait être créé)

27voto

davidrac Points 5564

Ce problème est connu et il existe une solution dans le site de twitter bootstrap :

Vous fixez la barre de navigation, n’oubliez pas de tenir compte de la surface cachée dessous. Ajouter 40px ou plus de remplissage à le `` . N’oubliez pas d’ajouter ceci après le noyau Bootstrap CSS et avant le CSS réactif en option.

Cela a fonctionné pour moi :

22voto

Dan Points 859

J’ai mis cela en avant du conteneur de rendement :

J’aime cette approche car il documente le hack pour obtenir ce travail, plus il travaille également pour la VNI mobile.

EDIT - cela fonctionne beaucoup mieux :

14voto

Ryan Points 816

Toutes les solutions précédentes du code en dur de 40 pixels spécifiquement dans le code html ou CSS d'une façon ou d'une autre. Que faire si la barre de navigation contient une autre taille de police ou une image? Que faire si j'ai une bonne raison de ne pas se salir avec le corps de rembourrage en premier lieu? J'ai été la recherche d'une solution à ce problème, et voici ce que j'ai trouvé:

$(document).ready(function(){
    $('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height()) + 1 )+'px'});
    $(window).resize(function(){
        $('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height()) + 1 )+'px'});
});

Vous pouvez déplacer vers le haut ou vers le bas par l'ajustement de la '1'. Il semble fonctionner pour moi, quelle que soit la taille du contenu dans la barre de navigation, avant et après le redimensionnement.

Je suis curieux de savoir ce que les autres pensent à ce sujet: s'il vous plaît partagez vos pensées. (Il sera reconstruit à ne pas répéter, btw.) Outre l'utilisation de jQuery, il y a d'autres raisons de ne pas aborder le problème de cette façon? J'ai même de travailler avec une barre de navigation secondaire comme ceci:

$('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height())
        + $('.admin-nav').height() + 1 )+'px'});

PS: ci-Dessus est sur Bootstrap 2.3.2 - il travaillera en 3.x aussi longtemps Que la classe générique les noms restent... en fait, il devrait travailler de manière indépendante et de bootstrap, droit?

EDIT: Voici une complète fonction jquery qui gère les deux empilés, réactive fixe navbars de la dynamique de la taille. Il nécessite 3 classes html(ou pourrait utiliser id): utilisateur, administrateur-haut, et contentwrap:

$(document).ready(function(){

    $('.admin-top').css({'margin-top':($('.user-top').height()+0)+'px'});
    $('.contentwrap') .css({'padding-top': (
        $('.user-top').height()
         + $('.admin-top').height()
         + 0 )+'px'
    });

    $(window).resize(function(){
        $('.admin-top').css({'margin-top':($('.user-top').height()+0)+'px'});
        $('.contentwrap') .css({'padding-top': (
            $('.user-top').height()
             + $('.admin-top').height()
             + 0 )+'px'
        });
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X