Estilizando botões de bootstrap do twitter


96

Os botões do Twitter-Bootstrap são incrivelmente bonitos. Experimente rolando sobre eles

captura de tela do botão de inicialização

Mas eles são limitados em cores.

Existe alguma maneira de mudar a cor de base do botão e, ao mesmo tempo, manter o belo efeito de foco que o bootstrap tornou tão bonito e sem esforço?

Desconheço completamente a aparência do css / javascript que o Twitter usa para manter esses efeitos.


7
Encontre e edite menos definições dos botões. Em seguida, recompile o CSS com lessc. Não edite os arquivos CSS diretamente! Não é sustentável.
— basicamente

Respostas:


25

Basicamente, os botões no Twitter Bootstrap são controlados em CSS por ".btn {}". O que você precisa fazer é ir ao arquivo CSS e encontrar onde diz "btn" e alterar as configurações de cor. No entanto, não é tão simples quanto fazer isso, pois você também precisa alterar a cor do botão quando você o realça, etc. Para fazer ISSO, você deve procurar outras tags em CSS como ".btn: hover {} ", etc.

Mudá-lo requer a mudança do CSS. Aqui está um link rápido para esse arquivo:

https://github.com/twbs/bootstrap/blob/master/dist/css/bootstrap.css


33
Esta não é uma solução particularmente bonita. Use as outras soluções, que são baseadas em LESS. Ou personalize o bootstrap por meio do editor de variáveis ​​em seu site.
— Jesper

5
basta substituí-lo ... carregar seu css no final pode ajudá-lo a resolver o problema .. usando os mesmos calss do bootstrap
— Jaimin MosLake

1
Sim, eu definitivamente seria contra modificar o bootstrap.css. Como Jaimin disse, basta substituí-lo.
— Tim Ludwinski

176

Achei que a maneira mais simples é colocar isso em suas substituições. Desculpe pela minha escolha de cor sem imaginação

Bootstrap 4-Alpha SASS

.my-btn {
  //@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
  @include button-variant(red, white, blue);
}

Exemplo de Bootstrap 4 Alpha SASS

Bootstrap 3 MENOS

.my-btn {
  //.button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);
  .button-variant(red; white; blue);
}

Exemplo de bootstrap 3 LESS

Bootstrap 3 SASS

.my-btn {
  //@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
  @include button-variant(red, white, blue);
}

Exemplo de Bootstrap 3 SASS

Bootstrap 2.3 MENOS

.btn-primary {
  //.buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
  .buttonBackground(red, white);
}

Exemplo de bootstrap 2.3 MENOS

Bootstrap 2.3 SASS

.btn-primary {
  //@include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight); 
  @include buttonBackground(red, white); 
}

Ele cuidará do foco / ativos para você

A partir dos comentários, se você deseja clarear o botão em vez de escurecer ao usar preto (ou apenas deseja inverter), você precisa estender a classe um pouco mais, assim:

Bootstrap 3 SASS Ligthen

.my-btn {
  // @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
  $color: #fff;
  $background: #000;
  $border: #333;
  @include button-variant($color, $background, $border);
  // override the default darkening with lightening
  &:hover,
  &:focus,
  &.focus,
  &:active,
  &.active,
  .open > &.dropdown-toggle {
    color: $color;
    background-color: lighten($background, 20%); //10% default
    border-color: lighten($border, 22%); // 12% default
  }
}

Exemplo de Bootstrap 3 SASS Lighten


17
O senhor é fantástico.
— dia

7
Como você traduziria isso para o scss?
— Dreyfuzz

1
Em seguida, execute lesscpara compilar suas alterações no CSS.
— basicamente

7
Dreyfuzz Eu não uso scss, mas olhando para os bootstraps sass de terceiros , parece que você faria .btn-primary {@include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight); }`alterando suas variáveis ​​apropriadamente (desculpe pela formatação terrível)
— chrisan

Eu .buttonBackground is undefined in main.lesspreciso incluir algo no meu menos?
— Himalaia Majumdar

32

Você pode substituir as cores em seu css, por exemplo, para o botão Perigo:

.btn-danger { border-color: #[insert color here]; background-color: #[insert color here];

.btn-danger:hover { border-color: #[insert color here]; background-color: #[insert color here]; }

7
Eu acho que você precisa estilizar :focuse :activetambém, ou às vezes você obtém cores estranhas em cliques / arrastos ...
— Simon East

Simples, eu gosto.
— Nino Škopac

1
Para aqueles que encontraram isso por meio de pesquisa, e você está obtendo uma cor padrão quando clica e arrasta um botão, é necessário .btn-primary:active:focus {selecionar e substituir essa caixa
— Shane Reustle

27

Este é um bom recurso: http://charliepark.org/bootstrap_buttons/

Você pode mudar a cor e ver o efeito em ação.


2
Este é um configurador. É fácil se você está com pressa de criar um protótipo para o cliente. No entanto, não é sustentável a longo prazo. E se o configurador desaparecer? Portanto, para a coisa real, lesscé uma solução melhor.
— basicamente

Amei essa solução, embora eu desejasse que houvesse uma maneira de inserir rgb / rgba para obter as cores exatas.
— Sedrick

@nalply less é ótimo se você já deu esse passo, mas este "configurador" faz tudo o que é necessário para gerar css. Solte e vá embora. Você não precisará mais do configurador depois disso.
— moodboom

21

Se você já estiver carregando seu próprio arquivo CSS personalizado após carregar o bootstrap.css (versão 3), você pode adicionar esses 2 estilos CSS ao seu custom.css e eles substituirão os padrões de bootstrap para o estilo de botão padrão.

.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {

  background-color: #A6A8C1;
  border-color: #31347B;
 }

.btn
{
  background-color: #9F418F;
  border-color: #9F418F;
}

12

Em vez de alterar os valores CSS um por um, sugiro usar LESS. Bootstrap tem versão MENOS no Github: https://github.com/twbs/bootstrap

LESS permite definir variáveis ​​para alterar as cores, o que o torna muito mais conveniente. Defina a cor uma vez e LESS compila o arquivo CSS que altera os valores globalmente. Economiza tempo e esforço.


11

Para substituir completamente os estilos de botão de bootstrap, você precisa substituir uma lista de propriedades. Veja o exemplo abaixo.

    .btn-primary, .btn-primary:hover, .btn-primary:focus, .btn-primary.focus, 
    .btn-primary:active, .btn-primary.active, .btn-primary:visited,
    .btn-primary:active:hover, .btn-primary.active:hover{
        background-color: #F19425;
        color:#fff;
        border: none;
        outline: none;
    }

Se você não usar todos os estilos listados, verá os estilos padrão ao executar ações no botão. Por exemplo, depois de clicar no botão e remover o ponteiro do mouse do botão, você verá a cor padrão visível. Ou mantenha o botão pressionado para ver as cores padrão. Portanto, listei todos os pseudo-estilos que devem ser substituídos.


este método é ótimo. só
— perde


5

Ou tente http://twitterbootstrapbuttons.w3masters.nl/ . Ele cria css para botões com base na entrada de cores html. Adicione o css após o css de bootstrap. Ele oferece três estilos de botões (claro, escuro e giratório).


1
Este é um configurador (mais ou menos). É muito fácil se você está com pressa de criar um protótipo para o cliente. No entanto, não é sustentável a longo prazo. E se o configurador desaparecer? Portanto, para a coisa real, lesscé uma solução melhor.
— basicamente

5

Esta é uma maneira muito fácil e eficiente: adicione em seu CSS sua classe com as cores que deseja aplicar ao seu botão:

.my-btn{
    background: #0099cc;
    color: #ffffff;
}
.my-btn:hover { 
  border-color: #C0C0C0; 
  background-color: #C0C0C0; 
}

e adicione o estilo ao botão ou link de bootstrap:

<a href="xxx" class="btn btn-info my-btn">aaa</a>

3

No Twitter Bootstrap bootstrap 3.0.0, o botão do Twitter é plano. Você pode personalizá-lo em http://getbootstrap.com/customize . Cor do botão, borda radiosa etc.

Além disso, você pode encontrar o código HTML e outras funcionalidades http://twitterbootstrap.org/bootstrap-css-buttons .

O botão Bootstrap 2.3.2 é gradiente, mas 3.0.0 (nova versão) é plano e parece mais legal.

e também você pode encontrar para personalizar toda a aparência e estilo do bootstrap destes recursos: http://twitterbootstrap.org/top-5-customizing-bootstrap-resources/


1

Eu sei que este é um tópico mais antigo, mas apenas para adicionar outra perspectiva. Eu diria que usar substituições é realmente um cheiro de código e rapidamente sairá do controle em projetos maiores. Hoje você está substituindo botões, amanhã modais, no dia seguinte dropdowns, etc., etc.

Eu aconselho a tentar possivelmente comentar a inclusão de buttons.lesse definir a minha própria ou, encontrar outra biblioteca de botões que seja mais adequada para o meu projeto. Plugue sem vergonha: aqui está um exemplo de como é fácil misturar nossa biblioteca de botões com TB: Usando botões com Twitter Bootstrap . Na prática, novamente, você provavelmente desejaria remover a buttons.lessinclusão completamente para melhorar o desempenho, mas isso mostra como você pode fazer as coisas parecerem um pouco menos "genéricas". Ainda não fiz este exercício, mas imagino que você possa começar simplesmente comentando linhas como:

https://github.com/twbs/bootstrap/blob/master/less/bootstrap.less#L17

E então recompilar usando `lessc usando um de seus próprios módulos de botões. Dessa forma, você obtém o núcleo do TB testado em batalha, mas ainda pode personalizar as coisas sem recorrer a modificações importantes. Não há absolutamente nenhuma razão para não usar apenas partes de uma biblioteca como o Bootstrap. Claro que o mesmo se aplica à versão Sass do TB


0

Para Bootstrap (pelo menos para a versão 3.1.1) e LESS, você pode usar isto:

.btn-my-custom {
    .button-variant(@color; @background; @border)
}

Isso é definido em bootstrap/less/buttons.less.


0

Você pode alterar a cor de fundo e usar! Important;

.btn-primary {
  background-color: #003c79 !important;
  border-color: #15548b !important;
  color: #fff;
}

.btn-primary:hover {
  background-color: #4289c6 !important;
  border-color: #3877ae !important;
  color: #fff;
}

.btn-primary.focus, .btn-primary:focus {
   background-color: #4289c6 !important;
   border-color: #3877ae !important;
   color: #fff;
}

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.