Estou usando o bootstrap no meu site e estou tendo problemas com a parte superior fixa da barra de navegação. Quando estou apenas usando a barra de navegação normal, está tudo bem. No entanto, quando tento alterná-lo para a parte superior fixa da barra de navegação, todo o conteúdo do site muda como a barra de navegação não está lá e a barra de navegação se sobrepõe. aqui está basicamente como eu a expus:
.navbar.navbar-fixed-top
.navbar-inner
.container
.container
.row
//yield content
Eu tentei copiar exemplos de bootstraps exatamente, mas ainda tendo esse problema apenas ao usar o navbar Fixed Top. O que estou fazendo errado?
fonte
Como outros já disseram, adicionar um top de estofamento ao corpo funciona muito bem. Mas quando você torna a tela mais estreita (para as larguras do telefone celular), existe um espaço entre a barra de navegação e o corpo. Além disso, uma barra de navegação lotada pode quebrar em uma barra de várias linhas, substituindo parte do conteúdo novamente.
Isso resolveu esses tipos de problemas para mim
Isso cria um preenchimento de 40px por padrão e 0px com menos de 768px de largura (que, de acordo com os documentos do bootstrap, é o ponto de corte do layout do telefone celular onde a lacuna seria criada)
fonte
body { padding-top: 40px; }
é suficienteuma solução muito mais útil para sua referência, funciona perfeitamente em todos os meus projetos:
mude sua primeira linha de
para
fonte
Esse problema é conhecido e há uma solução alternativa no site de inicialização do twitter:
Isso funcionou para mim:
fonte
@ Ryan, você está certo, codificar a altura fará com que ela funcione mal no caso de barras de navegação personalizadas. Este é o código que estou usando para o BS 3.0.0:
fonte
parseInt
os valores css da altura, usei apenas$('#main-navbar').height()
, mas, caso contrário, isso foi muito útil e resolveu meu problema, obrigado.Coloquei isso antes do contêiner de rendimento:
Eu gosto dessa abordagem porque documenta o hack necessário para fazê-lo funcionar, além de também funcionar para a navegação móvel.
EDIT - isso funciona muito melhor:
fonte
O problema está no navbar-fixed-top, que cobrirá seu conteúdo a menos que especifique o preenchimento do corpo. Nenhuma solução fornecida aqui funciona em 100% dos casos. A solução JQuery pisca / desloca a página após o carregamento da página, o que parece estranho.
A solução real para mim não é usar navbar-fixed-top, mas navbar-static-top.
fonte
Como postei em uma pergunta semelhante, tive sucesso com a criação de uma barra de navegação não fixa simulada antes da minha barra de navegação fixa real.
O espaçamento funciona muito bem em todos os tamanhos de tela.
fonte
A solução para o Bootstrap 4, funciona perfeitamente em todos os meus projetos:
mude sua primeira linha de
para
Referência da documentação do Bootstrap
Sobre o tempo que eles fizeram isso direito: D
fonte
Todas as soluções anteriores codificam 40 pixels especificamente no html ou CSS de uma maneira ou de outra. E se a barra de navegação contiver um tamanho de fonte ou uma imagem diferente? E se eu tiver um bom motivo para não mexer com o estofamento do corpo ? Eu tenho procurado uma solução para este problema, e aqui está o que eu vim com:
Você pode movê-lo para cima ou para baixo ajustando o '1'. Parece funcionar para mim, independentemente do tamanho do conteúdo na barra de navegação, antes e depois do redimensionamento.
Estou curioso para saber o que os outros pensam disso: compartilhe seus pensamentos. (Será refatorado para não repetir, aliás.) Além de usar o jQuery, existem outros motivos para não abordar o problema dessa maneira? Eu até consegui trabalhar com uma barra de navegação secundária como esta:
PS: Acima está no Bootstrap 2.3.2 - funcionará no 3.x Enquanto os nomes genéricos de classe permanecerem ... na verdade, ele deve funcionar independentemente do bootstrap, certo?
EDIT: Aqui está uma função jquery completa que lida com duas barras de navegação fixas responsivas empilhadas, de tamanho dinâmico. Requer 3 classes html (ou poderia usar IDs): user-top, admin-top e contentwrap:
fonte
Apenas mude
fixed-top
comsticky-top
. Dessa forma, você não precisará calcular o preenchimento.E funciona !!
fonte
Para manipular linhas de quebra automática na barra de menus, aplique um ID à barra de navegação, assim:
e adicione este pequeno script na cabeça depois de incluir o jquery, assim:
Dessa forma, o preenchimento superior do corpo é ajustado automaticamente.
fonte
para o Bootstrap 3. +, eu usaria o CSS a seguir para corrigir o problema sobreposto navbar-fixed-top e o salto de âncora sobreposto com base em https://github.com/twbs/bootstrap/issues/1768
fonte
use essa classe dentro da tag nav
Para bootstrap 4
fonte
Tudo o que tem a fazer é
fonte
Seguindo a resposta de Nick Bisby, se você encontrar esse problema usando o HAML nos trilhos e tiver aplicado a correção de Roberto Barros aqui:
(Consulte https://github.com/seyhunak/twitter-bootstrap-rails/issues/91 )
... você precisa colocar o CSS do corpo antes da instrução exigir da seguinte maneira:
Se a instrução require estiver antes do CSS do corpo, ela não entrará em vigor.
fonte
Eu faria isso:
Isso deve garantir que o bloco de navegação não estique a página inferior e cubra o conteúdo da página.
fonte
Acabei de enrolar a barra de navegação em um
Nenhum hocus pocus chique, mas funcionou ..
fonte
nav-? ??
representa?