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.

irfanmcsd
fonte
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>
irfanmcsd
fonte
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}
Ranveer
fonte
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 ...

patrick
fonte
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

AJ Meyghani
fonte
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

Hoàng Vũ Tgtt
fonte
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


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

Tahir Khalid
fonte
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'.

James Poulose
fonte
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

Usman I
fonte
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