cor da barra de navegação no Twitter Bootstrap

113

Como posso alterar a cor de fundo da barra de navegação do Twitter Bootstrap 2.0.2? Como posso alterar a cor de todos os elementos da barra de navegação para refletir a cor de fundo?

Gattoo
fonte
1
Resolvido. Alterações feitas em bootstrap.css .navbar-inner {background-color: # 2c2c2c; mudou a cor de fundo, comentou tudo o mais. Obrigado.
Gattoo
12
não recomendo que você modifique a folha de estilo css principal do bootstrap simplesmente porque quando você atualiza a folha de estilo, todas as suas alterações serão perdidas, então apenas inclua qualquer modificação necessária em sua própria folha de estilo.
Andres Ilich
Obrigado Andres, Quais são as outras formas de mudar o comportamento do Bootstrap? A barra de navegação é um problema para a maioria dos sites, pois as pessoas simplesmente não conseguem acreditar que a web é tão boa para a estética quanto para a funcionalidade.
Gattoo
4
Você pode realmente sobrescrever a maioria das regras de bootstrap dentro de sua própria folha de estilo, você não precisa tocar na folha de estilo bootstrap.css de forma alguma. Desta forma, quando o bootstrap for atualizado você pode apenas atualizá-lo imediatamente e todas as suas alterações permanecerão, e também desta maneira você pode sobrescrever os estilos do boostrap para atender às suas necessidades (sejam fontes ou cores) do seu site.
Andres Ilich
Resposta muito mais simples: stackoverflow.com/questions/18529274/…
Chris Johnson

Respostas:

134

Você pode sobrescrever as cores de bootstrap, incluindo a .navbar-innerclasse, direcionando-as em sua própria folha de estilo em vez de modificar a folha de estilo bootstrap.css, assim:

.navbar-inner {
  background-color: #2c2c2c; /* fallback color, place your own */

  /* Gradients for modern browsers, replace as you see fit */
  background-image: -moz-linear-gradient(top, #333333, #222222);
  background-image: -ms-linear-gradient(top, #333333, #222222);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
  background-image: -webkit-linear-gradient(top, #333333, #222222);
  background-image: -o-linear-gradient(top, #333333, #222222);
  background-image: linear-gradient(top, #333333, #222222);
  background-repeat: repeat-x;

  /* IE8-9 gradient filter */
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
}

Você apenas tem que modificar todos esses estilos com o seu próprio e eles serão escolhidos, como algo assim por exemplo, onde eu elimino todos os efeitos de gradiente e apenas configuro uma cor de fundo preta sólida:

.navbar-inner {
  background-color: #000; /* background color will be black for all browsers */
  background-image: none;
  background-repeat: no-repeat;
  filter: none;
}

Você pode aproveitar as vantagens de ferramentas como o Editor de gradiente Colorzilla e criar suas próprias cores gradientes para todos os navegadores e substituir as cores originais pelas suas.

E como mencionei nos comentários, eu não recomendo que você modifique a folha de estilo bootstrap.css diretamente, pois todas as suas alterações serão perdidas assim que a folha de estilo for atualizada (a versão atual é v2.0.2 ), então é preferível que você inclua todos suas alterações dentro de sua própria folha de estilo, em conjunto com a folha de estilo bootstrap.css. Mas lembre-se de substituir todas as propriedades apropriadas para ter consistência entre os navegadores.

Andres Ilich
fonte
2
background-image: none;seis vezes?
Nowaker
2
@DamianNowak uau, acabei de notar isso, obrigado pela dica: D ultimate brain peid.
Andres Ilich
Obrigado. Estava me deixando louco que eu não pudesse definir a cor de fundo para qualquer coisa e fazer com que se aplicasse a toda a barra de navegação.
Automatico
30

Um excelente recurso para ver como criar um tema é: bootswatch.com . Ele tem bons exemplos e mostra o código também. Resumindo, eles usam lessc para recompilar o bootstrap.css para seu novo color-theme.css. O bom de sua abordagem é que é construída sobre o bootstrap, então quando o bootstrap é atualizado, você apenas recompila.

Links sobre como usar lessc e bootstrap:

Alexander Poslavsky
fonte
Recursos maravilhosos Alexander. Muito obrigado.
Gattoo
1
Obrigado pelo link do bootswatch :)
Akshat Jiwan Sharma
6

Se você não tem tempo para aprender "menos" ou fazer isso corretamente, aqui está um hack sujo ...

Adicione isto acima, onde você renderiza o HTML da barra de navegação bootstrap - atualize as cores conforme necessário.

<style type="text/css">   

.navbar-inner {
    background-color: red;
    background-image: linear-gradient(to bottom, blue, green);
    background-repeat: repeat-x;
    border: 1px solid yellow;
    border-radius: 4px 4px 4px 4px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.067);
    min-height: 40px;
    padding-left: 20px;
    padding-right: 20px;
}

.dropdown-menu {
    background-clip: padding-box;
    background-color: red;
    border: 1px solid rgba(0, 0, 0, 0.2);
    border-radius: 6px 6px 6px 6px;
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    display: none;
    float: left;
    left: 0;
    list-style: none outside none;
    margin: 2px 0 0;
    min-width: 160px;
    padding: 5px 0;
    position: absolute;
    top: 100%;
    z-index: 1000;
}

.btn-group.open .btn.dropdown-toggle {
  background-color: red;
}

.btn-group.open .btn.dropdown-toggle {
  background-color:lime;
}

.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
  color:white;
  background-color:Teal;
}

.navbar .nav > li > a {
    color: white;
    float: none;
    padding: 10px 15px;
    text-decoration: none;
    text-shadow: 0 0px 0 #ffffff;
}

.navbar .brand {
  display: block;
  float: left;
  padding: 10px 20px 10px;
  margin-left: -20px;
  font-size: 20px;
  font-weight: 200;
  color: white;
  text-shadow: 0 0px 0 #ffffff;
}

.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
  color: white;
  text-decoration: none;
  background-color: transparent;
}

.navbar-text {
  margin-bottom: 0;
  line-height: 40px;
  color: white;
}

.dropdown-menu li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 20px;
  color: white;
  white-space: nowrap;
}

.navbar-link {
  color: white;
}

.navbar-link:hover {
  color: white;
}

</style>
JGilmartin
fonte
4

Estou usando o Bootstrap versão 3.2.0 e parece que .navbar-inner não existe mais.

As soluções aqui que sugerem substituir .navbar-inner não funcionaram para mim - a cor permaneceu a mesma.

A cor só mudou quando eu substituí .navbar conforme mostrado abaixo:

.navbar {
    background-color: #A4C8EC;
    background-image: none;
}
paulo62
fonte
3

A melhor maneira atualmente de fazer o mesmo seria instalar o compilador de linha de comando LESS usando

$ npm install -g less jshint recess uglify-js

Depois de fazer isso, vá para a pasta less no diretório e edite as variáveis ​​do arquivo .less e você pode alterar muitas variáveis ​​de acordo com o que você precisa, incluindo a cor da barra de navegação

@navbarCollapseWidth:             979px;

@navbarHeight:                    40px;
@navbarBackgroundHighlight:       #ffffff;
@navbarBackground:                darken(@navbarBackgroundHighlight, 5%);
@navbarBorder:                    darken(@navbarBackground, 12%);

@navbarText:                      #777;
@navbarLinkColor:                 #777;
@navbarLinkColorHover:            @grayDark;
@navbarLinkColorActive:           @gray;
@navbarLinkBackgroundHover:       transparent;
@navbarLinkBackgroundActive:      darken(@navbarBackground, 5%);

Depois de fazer isso, vá para o diretório de bootstrap e execute o comando make.

Gauravmunjal
fonte
2

Se você estiver usando LESS, você pode usar Mixins para menos código. Aqui, adicionarei um gradiente, uma borda e um raio de borda:

.navbar-inner {
  #gradient > .vertical(#ffffff, #ECECEC);
  border: #E2E2E2;
  .border-radius(6px);
}

* Se você estiver usando a gem rails, twitter-bootstrap-rails, eu faço isso diretamente no arquivo bootstrap_and_overrides.css.less *

Ryan
fonte
2

isso é o que eu faço

.navbar-inverse .navbar-inner {
  background-color: #E27403; /* it's flat*/
 background-image: none;
}

.navbar-inverse .navbar-inner {
  background-image: -ms-linear-gradient(top, #E27403, #E49037);
  background-image: -webkit-linear-gradient(top, #E27403, #E49037);
  background-image: linear-gradient(to bottom, #E27403, #E49037);
}

funciona bem para todos os navegadores, você pode ver a demonstração aqui http://caverne.fr no topo

user2545728
fonte
1

Na linha bootstrap.css 4784, vemos:

.navbar-inverse .navbar-inner {
  background-color: #FFFFFFF;
  background-image: -moz-linear-gradient(top, #222222, #111111);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
  background-image: -webkit-linear-gradient(top, #222222, #111111);
  background-image: -o-linear-gradient(top, #222222, #111111);
  background-image: linear-gradient(to bottom, #222222, #111111);
  background-repeat: repeat-x;
  border-color: #252525;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
}

Você precisa remover todas as declarações de propriedade 'background-image' para obter o efeito desejado.

Roopkunwar
fonte
1

A navalha de occam não diria apenas para fazer isso até que você precise de algo mais complexo? É um pouco hack, mas pode atender às necessidades de alguém que deseja uma solução rápida.

.navbar-default .container-fluid{
    background-color:#62ADD7; // Change the color
    margin: -1px -1px 10px -1px; // Get rid of the border
}
Krishan Gupta
fonte
1

Se você estiver usando a versão LESS ou SASS do Bootstrap. A forma mais eficiente é alterar o nome da variável, no arquivo LESS ou SASS.

$navbar-default-color:              #FFFFFF !default;
$navbar-default-bg:                 #36669d !default;
$navbar-default-border:             $navbar-default-bg !default;

Esta é de longe a maneira mais fácil e eficiente de alterar o Bootstraps Navbar. Você não precisa escrever substituições e o código permanece limpo.

Ronak Jain
fonte
0

Você pode personalizar sua própria versão no site oficial do Bootstrap .

Samuel
fonte
0

Na verdade, acabo de sobrescrever qualquer coisa que desejo alterar no site.css, você deve carregar o site.css após a inicialização para que ele sobrescreva as classes. O que fiz agora é apenas criar minhas próprias aulas com meu próprio pequeno tema de bootstrap. Pequenas coisas como esta

.navbar-nav li a{
    color: #fff;
    font-size: 15px;
    margin-top: 9px;
}
.navbar-nav li a:hover{

    background-color: #18678E;
    height: 61px;
}

Eu também mudei os erros de validação da mesma maneira.

Michael
fonte