Diminuindo a altura da barra de navegação bootstrap 3.0


108

Estou tentando diminuir a altura da barra de navegação do bootstrap 3.0 que é usada com o comportamento de topo fixo. Aqui estou usando o código.

HTML

<div class="tnav">
<div class="navbar navbar-fixed-top" role="banner">
    <div class="navbar-inner-sm">
  <div class="container">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>
    <nav class="collapse navbar-collapse" role="navigation">
      <ul class="nav navbar-nav pull-right">
        <li class="active">
          <a href="../getting-started">Getting started</a>
        </li>
        <li>
          <a href="../css">Ext01</a>
        </li>
        <li>
          <a href="../components">Language</a>
        </li>
        <li>
          <a href="../javascript">My Account</a>
        </li>
        <li>
          <a href="../customize">Sign Out</a>
        </li>
      </ul>
    </nav>
  </div>
    </div>
</div>

CSS

.tnav .navbar { background:#F06; height:30px; }
.navbar-inner-sm{background-color: #282828;padding: 1px 20px;background-repeat: repeat-x;-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);background-image: linear-gradient(top, #333333, #222222);}
.navbar-inner-sm .nav {position: relative;left: 0;display: block;float: left;margin: 0 10px 0 0;}
.navbar-inner-sm .nav.pull-right {float: right;}
.navbar-inner-sm .nav > li {display: block;float: left;}
.navbar-inner-sm .nav > li > a {float: none;padding: 4px 5px;line-height: 19px;color: #999999;text-decoration: none;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);}
.navbar-inner-sm .nav > li > a:hover {background-color: transparent;color: #ffffff;text-decoration: none;}
.navbar-inner-sm .nav .active > a,.navbar .nav .active > a:hover {color: #ffffff;text-decoration: none;background-color: #003753;}
.navbar-inner-sm .divider-vertical {height: 27px;width: 1px;margin: 0 9px;overflow: hidden;background-color: #282828;border-left: 1px solid #3f3f3f; border-right: 1px solid #161616;}
.navbar-inner-sm .nav.pull-right {margin-left: 10px;margin-right: 0;}

Resultado

insira a descrição da imagem aqui

Na tela, ele mostra, a barra de navegação diminuiu na produção, mas a altura não diminuiu. altura original é mostrada na cor rosa.

O script css acima quase funciona bem no bootstrap 2. *

Existe alguma maneira de diminuir a altura corretamente.


Não há mais necessidade de <div class = "navbar-inner"> no Bootstrap 3
— Bartek S

navbar-inner é minha classe personalizada. não relacionado com bootstrap 3.0.
— irfanmcsd

A única maneira que funcionou para mim é explicada neste link: stackoverflow.com/questions/19576175/… Ele diminui a altura do navbar com apenas duas linhas de código
— giovannim

Respostas:


124

Depois de passar algumas horas, adicionar a seguinte classe de css resolveu meu problema.

Trabalhe com Bootstrap 3.0. *

.tnav .navbar .container { height: 28px; }

Trabalhar com Bootstrap 3.3.4

.navbar-nav > li > a, .navbar-brand {
    padding-top:4px !important; 
    padding-bottom:0 !important;
    height: 28px;
}
.navbar {min-height:28px !important;}

Atualize o código completo para personalizar e diminuir a altura da barra de navegação com a captura de tela.

insira a descrição da imagem aqui

CSS:

/* navbar */
.navbar-primary .navbar { background:#9f58b5; border-bottom:none; }
.navbar-primary .navbar .nav > li > a {color: #501762;}
.navbar-primary .navbar .nav > li > a:hover {color: #fff; background-color: #8e49a3;}
.navbar-primary .navbar .nav .active > a,.navbar .nav .active > a:hover {color: #fff; background-color: #501762;}
.navbar-primary .navbar .nav li > a .caret, .tnav .navbar .nav li > a:hover .caret {border-top-color: #fff;border-bottom-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover {}
.navbar-primary .navbar .nav > li.dropdown.open > a {color: #fff;background-color: #9f58b5;border-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover .caret, .tnav .navbar .nav > li.dropdown.open > a .caret {border-top-color: #fff;}
.navbar-primary .navbar .navbar-brand {color:#fff;}
.navbar-primary .navbar .nav.pull-right {margin-left: 10px; margin-right: 0;}
.navbar-xs .navbar-primary .navbar { min-height:28px; height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 28px; }
.navbar-sm .navbar-primary .navbar { min-height:40px; height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 40px; }

Código de uso:

<div class="navbar-xs">
   <div class="navbar-primary">
       <nav class="navbar navbar-static-top" role="navigation">
          <!-- Brand and toggle get grouped for better mobile display -->
          <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-8">
                 <span class="sr-only">Toggle navigation</span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#">Brand</a>
          </div>
          <!-- Collect the nav links, forms, and other content for toggling -->
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-8">
              <ul class="nav navbar-nav">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="#">Link</a></li>
                   <li><a href="#">Link</a></li>
              </ul>
          </div><!-- /.navbar-collapse -->
      </nav>
  </div>
</div>

4
isso não funciona ... verifique minha resposta nesta página ... a altura mínima para .navbar é definida como 50px por padrão, portanto, se você definir a altura para 28px, ela será substituída pela altura mínima de 50px. ..
— patrick

3
Ah, vejo que esse post foi editado (muito!) E agora mostra de fato o código certo. Também vejo a configuração de altura mínima que sugeri em meu post aqui que, por algum motivo, teve uma votação negativa. É muito frustrante ser reprovado em uma resposta correta, no tópico e clara ...
— patrick

@patrick não sabe o que você quer dizer, mas no momento meu problema foi resolvido com minha própria resposta. reputação não tenho dúvidas, se as pessoas me derem voto para cima ou para baixo.
— irfanmcsd

1
Editar a fonte teria tornado isso mais fácil
— Lucas

Engraçado, isso não funcionou para mim. Tive que substituir a altura fixa de 50px;
— Kevin

43

Solução de trabalho:

O Bootstrap 3.0 por padrão tem um preenchimento de 15px na parte superior e inferior, então só precisamos substituí-lo!

Por exemplo:

.navbar-nav > li > a {padding-top:10px !important; padding-bottom:10px !important;}
.navbar {min-height:40px !important}

O padrão é 10px em bootstrap.css? .navbar-nav> li> a {padding-top: 10px; acolchoamento inferior: 10px; altura da linha: 20px; }
— jichi

1
Verifique a linha número 3884 em bootstrap.css (v3.0.2). É .navbar-nav > li > a {padding-top: 15px; padding-bottom: 15px;}por padrão.
— Ranveer

Não tenho certeza sobre a v3.0.2. Mas na v3.0.3 linha 4541 em bootstrap.css, é: .navbar-nav> li> a {padding-top: 10px; acolchoamento inferior: 10px; altura da linha: 20px; }
— jichi

Você senhor, é meu heroi.
— orokusaki

40

Simplesmente substitua a altura mínima definida em .navbar assim:

.navbar{
  min-height:20px; //* or whatever height you require
}

Alterar a altura de um elemento para algo menor que a altura mínima não fará diferença ...


como você pode ver na navbar, eu já uso a propriedade height, mas sem nenhum efeito.
— irfanmcsd

é a propriedade min-height, não a height ... se você definir a altura para um número menor do que min-height, min-height evitará que ela se torne menor ...
— patrick

7
Por que isso recebe um voto negativo? É uma solução de trabalho para o problema definido neste post. Um moderador pode olhar para isso, por favor, parece haver um downvoter que simplesmente rejeita coisas com as quais não concorda sem verificar a resposta real. Um link postado 2,5 meses após minha postagem tem a mesma resposta, está em um link externo e obteve dois votos positivos. Eu odeio quando as pessoas diluem TÃO com downvotes aleatórios!
— patrick

Muitas vezes me perguntei como as pessoas agora têm uma votação negativa, você recebe uma notificação? Não foi possível encontrar isso no meta
— Iulian Onofrei

5
sem notificação ... parece que as pessoas votam negativamente se acham que outra resposta é melhor ou algo assim ... não sei ... Nesse caso, o cara que fez a pergunta pegou minha resposta em sua própria resposta e aceitou essa resposta. . Meio coxo se você me perguntar ... Mas, novamente, este site não é sobre ego, é sobre ajudar os outros ...
— patrick

27

se você estiver usando a fonte less, deve haver uma variável para a altura da navbar no variables.lessarquivo. Se você não estiver usando o código-fonte, poderá personalizá-lo usando o utilitário de personalização fornecido pelo site de bootstrap. E então você pode baixá-lo e incluí-lo em seu projeto. A variável que você está procurando é:@navbar-height


1
mas não quero alterar o comportamento original da barra de navegação. acabei de alterar a altura da barra de navegação superior adicional.
— irfanmcsd

2
Acho que é a melhor solução.
— Imtiaz,

1
Esta é a melhor solução se você tiver apenas um navegador no site e deve ter essa altura. Se você tiver vários navs, fica um pouco mais difícil, já que .navbar-vertical-align é usado em vários lugares e tem uma referência dura para @ navbar-height.
— Carl Bussema

boa solução. contanto que você não esteja planejando usar CDN
— eagor

1
Contanto que você use overrides em um menos parcial separado, esta é a melhor solução e deve permitir que você atualize o bootstrap sem problemas.
— Ken Prince

9

Esta é minha experiência

 .navbar { min-height:38px;   }
 .navbar .navbar-brand{ padding: 0 12px;font-size: 16px;line-height: 38px;height: 38px; }
 .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 38px; }
 .navbar .navbar-toggle {  margin-top: 3px; margin-bottom: 0px; padding: 8px 9px; }
 .navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
 .navbar .navbar-collapse {border-color: #A40303;}

alterar a altura do navabr para 38px


Adicione isto para cuidar do formato .navbar:.navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
— steph643

Outra extensão: .navbar .navbar-text {margin-top: 0px; margin-bottom: 0px; altura da linha: 38px; }
— cnmuc

3

Se vocês estão gerando suas folhas de estilo com LESS / SASS e estão importando Bootstrap para lá, descobri que substituir a variável @ navbar-height permite definir a altura da navbar, que é originalmente definida no arquivo variables.less.

insira a descrição da imagem aqui


3

Queria adicionar meus 2 centavos e um agradecimento a James Poulose por sua resposta original - foi o único que funcionou para meu projeto em particular (MVC 5 com a versão mais recente do Bootstrap 3).

Isso é voltado principalmente para iniciantes, para maior clareza e para facilitar futuras edições, sugiro que você adicione uma seção na parte inferior do seu arquivo CSS para o seu projeto, por exemplo, eu gosto de fazer isso:

/* Bootstrap overrides */

.some-class-here {
}

Pegando a resposta de James Poulose acima, fiz o seguinte:

/* Bootstrap overrides */   
.navbar-nav > li > a { padding-top: 8px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 8px; padding-bottom: 10px; padding-left: 10px; }

Mudei os valores de padding-top para empurrar o texto para baixo no meu elemento navbar. Você pode praticamente substituir qualquer elemento do Bootstrap como este e é uma boa maneira de fazer alterações sem bagunçar as classes base do Boostrap, porque a última coisa que você quer fazer é fazer uma alteração ali e perdê-la quando atualizar o Bootstrap!

Finalmente, para uma separação ainda maior, gosto de dividir meus arquivos CSS e usar declarações @import para importar seus subarquivos em um arquivo CSS principal para facilitar o gerenciamento, por exemplo:

@import url('css/mysubcssfile.css');

Observação : se você estiver puxando vários arquivos, precisa ter certeza de que eles carregam na ordem certa.

Espero que isso ajude alguém.


2

Acho que podemos escrever menos estilos, sem alterar a cor existente. O seguinte funcionou para mim (no Bootstrap 3.2.0)

.navbar-nav > li > a { padding-top: 5px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 5px; padding-bottom: 10px; padding-left: 10px; }

O último ('navbar-marca') é realmente necessário apenas se você tiver texto como o nome de sua 'marca'.


Boa resposta, esta foi a única que funcionou para mim com a versão mais recente do Bootstrap 3 (uma observação: se você quiser empurrar seu texto para baixo, aumente o valor de preenchimento superior para a classe .navbar-brand, bem como .navbar-nav> li> a classes.
— Tahir Khalid

0

Eu tive o mesmo problema, a altura da minha barra de menu fornecida pelo bootstrap era muito grande, na verdade eu baixei algum bootstrap errado, finalmente me livrei dele baixando o bootstrap original deste site. Http://getbootstrap.com/2.3 .2 / quero usar bootstrap em yii (netbeans) siga este tutorial, https://www.youtube.com/watch?v=XH_qG8gphaw ... A voz não está presente, mas as etapas são lentas, você pode facilmente entender e implementar eles. obrigado


O que você alterou no código para obter o efeito desejado? Se você apontar para um link em uma resposta, deve resumir a solução.
— Brian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.