Twitter Bootstrap 3.0 como faço para “distintivo distintivo importante” agora


218

Na versão dois eu poderia usar

emblema emblema-importante

Vejo que o elemento .badge não possui mais classes contextuais (-success, -primary, etc.).

Como faço para conseguir a mesma coisa na versão 3?

Por exemplo. Quero emblemas de aviso e emblemas importantes na minha interface do usuário


1
Eles deveriam ter fornecido .danger, .successetc. definições de estilo de classe prontas para uso em casos de uso gerais como este.
Fr0zenFyr

Respostas:


256

Basta adicionar esta classe de uma linha ao seu CSS e usar o labelcomponente de autoinicialização .

.label-as-badge {
    border-radius: 1em;
}

Compare isso labele badgelado a lado:

<span class="label label-default label-as-badge">hello</span>
<span class="badge">world</span>

insira a descrição da imagem aqui

Eles parecem iguais. Mas no CSS, ele é labelusado de emforma que ele seja dimensionado bem e ainda tenha todas as classes "-color". Portanto, o rótulo será melhor dimensionado para tamanhos de fonte maiores e poderá ser colorido com sucesso, aviso de etiqueta etc. Aqui estão dois exemplos:

<span class="label label-success label-as-badge">Yay! Rah!</span>

insira a descrição da imagem aqui

Ou onde as coisas são maiores:

<div style="font-size: 36px"><!-- pretend an enclosing class has big font size -->
    <span class="label label-success label-as-badge">Yay! Rah!</span>
</div>

insira a descrição da imagem aqui


16/11/2015 : Examinando como faremos isso no Bootstrap 4

Parece que as .badgeaulas acabaram completamente. Mas há uma .label-pillclasse interna (aqui) que se parece com o que queremos.

.label-pill {
  padding-right: .6em;
  padding-left: .6em;
  border-radius: 10rem;
}

Em uso, fica assim:

<span class="label label-pill label-default">Default</span>
<span class="label label-pill label-primary">Primary</span>
<span class="label label-pill label-success">Success</span>
<span class="label label-pill label-info">Info</span>
<span class="label label-pill label-warning">Warning</span>
<span class="label label-pill label-danger">Danger</span>

insira a descrição da imagem aqui


11/04/2014 : Aqui está uma atualização sobre por que as classes de alerta de polinização cruzada .badgenão são tão boas. Penso que esta imagem resume:

insira a descrição da imagem aqui

Essas classes de alerta não foram projetadas para usar crachás. Isso os renderiza com uma "dica" das cores pretendidas, mas no final a consistência é jogada pela janela e a legibilidade é questionável. Esses emblemas hackeados por alerta não são visualmente coesos.

A .label-as-badgesolução está estendendo apenas o design da inicialização. Mantemos intactas todas as decisões tomadas pelos designers de inicialização, a saber, a consideração que eles deram à legibilidade e à coesão em todas as cores possíveis, bem como as próprias opções de cores. A .label-as-badgeturma apenas adiciona cantos arredondados e nada mais. Não há definições de cores introduzidas. Assim, uma única linha de CSS.

Sim, é mais fácil simplesmente cortar e soltar nessas .alert-xxxxxclasses - você não precisa adicionar nenhuma linha de CSS. Ou você pode se importar mais com as pequenas coisas e adicionar uma linha.


3
isso é legal, desde que você não queira usar emblemas em listas de grupos, então eles não flutuam ... eu posso ver essa frenagem ao longo do tempo à medida que a inicialização é alterada. bom corte embora.
nodrog

2
Sim, bom argumento @nodrog. O list-groupwith badgesé um bom recurso pronto para uso no bootstrap. Para aqueles que estão assistindo, aqui está o que parece: getbootstrap.com/components/#list-group-badges
broc.seib

1
Não estou convencido pelo argumento da "polinização cruzada". Reutilização e recombinação de classes / atributos CSS estão acontecendo o tempo todo. O argumento oculto por trás do seu termo pode ser que você prefere nomes semânticos de classe e subclasse css. É basicamente "flexibilidade / reutilização e correção semântica". Um nome de classe semântica deve suportar o papel do elemento. "label-as-badge" indica uma transformação de elemento. - Sidenote: A resposta é basicamente o meu comentário de 22 de setembro com uma solução para o problema "bordas não tão redondas nos rótulos" adicionando uma linha de css.
Jens A. Koch

3
Se você deseja obter um grupo de listas especial flutuante, basta adicioná-lo! .list-group-item > .label-as-badge { float: right; } .list-group-item > .label-as-badge + .label-as-badge { margin-right: 5px; }
precisa saber é

2
Excelente resposta. Pode também quiser jogar lá o preenchimento para corresponder .badge da seguinte forma:.label-as-badge { border-radius: 1em; padding: 3px 7px; }
Matt Borja

254

Resumindo: substitua badge-importantpor alert-dangerou progress-bar-danger.

É assim: Bootply Demo .


Você pode combinar a classe CSS badgecom alert-*ou progess-bar-*para colori-los:

Com class="badges alert-*"

  <span class="badge alert-info">badge</span> Info
  <span class="badge alert-success">badge</span> Success 
  <span class="badge alert-danger">badge</span> Danger   
  <span class="badge alert-warning">badge</span> Warning

Alertas Docu: http://getbootstrap.com/components/#alerts

Com class="badges progress-bar-*"(como sugerido por @ clami219)

  <span class="badge progress-bar-info">badge</span> Info
  <span class="badge progress-bar-success">badge</span> Success
  <span class="badge progress-bar-danger">badge</span> Danger
  <span class="badge progress-bar-warning">badge</span> Warning

Documento da barra de progresso: http://getbootstrap.com/components/#progress-alternatives


4
Não gostei da maneira como o alerta decorava os crachás, então optei por usar etiquetas. getbootstrap.com/components/#labels
Mike Purcell

6
Esta é uma resposta meio hack-ish. Claro que funciona, e é simples. Mas você deve usar essas classes de alerta contextuais com alertas. Você pode se inscrever para estilos quebrados no futuro. A resposta de @ JasonHuang é igualmente simples e oferece maior controle.
Mikeigs # 21/14

2
O que me levou a dar a resposta acima foi que o Visual Studio Web Essentials mostra um aviso para o código acima. Ou seja, "Ao usar 'alerta-perigo', você também deve especificar a classe 'alerta'".
Mikeigs 26/05

3
As pessoas chegam nesta página, porque o pessoal do bootstrap fez várias considerações de design, o que descartou as considerações de design que fizeram antes :) - Acabei de recombinar as classes css existentes, a fim de me aproximar do antigo "emblema importante" . Aqui vamos nós com o material que eles usam fora da caixa: é isso. Eu não acho que exista uma maneira verdadeira de criar CSS. Esta página oferece várias maneiras de resolver o problema. Mas, por favor, pare de gritar "Aaah! Não! Não é assim! Você está fazendo algo errado".
Jens A. Koch

1
@ Jens-AndréKoch, você está certo sobre o meu "Aaah !! Não !!". Parece que estou dizendo às pessoas "você está fazendo errado", e não tenho lugar para dizer isso. Desculpe.
Broc.seib

45

O Bootstrap 3 removeu essas opções de cores para crachás. No entanto, podemos adicionar esses estilos manualmente. Aqui está a minha solução, e aqui está o JS Bin :

.badge {
  padding: 1px 9px 2px;
  font-size: 12.025px;
  font-weight: bold;
  white-space: nowrap;
  color: #ffffff;
  background-color: #999999;
  -webkit-border-radius: 9px;
  -moz-border-radius: 9px;
  border-radius: 9px;
}
.badge:hover {
  color: #ffffff;
  text-decoration: none;
  cursor: pointer;
}
.badge-error {
  background-color: #b94a48;
}
.badge-error:hover {
  background-color: #953b39;
}
.badge-warning {
  background-color: #f89406;
}
.badge-warning:hover {
  background-color: #c67605;
}
.badge-success {
  background-color: #468847;
}
.badge-success:hover {
  background-color: #356635;
}
.badge-info {
  background-color: #3a87ad;
}
.badge-info:hover {
  background-color: #2d6987;
}
.badge-inverse {
  background-color: #333333;
}
.badge-inverse:hover {
  background-color: #1a1a1a;
}

25

As classes de contexto para badgesão realmente removidas do Bootstrap 3, então você teria que adicionar algum CSS personalizado para criar o mesmo efeito como ...

.badge-important{background-color:#b94a48;}

Bootply


20
Por que eles se livraram deles?
Peter Peter

4
+! Também estou me perguntando por que eles se livraram deles. Você pode usar a etiqueta, mas ela não está alinhada corretamente em um recipiente para comprimidos. Pelo menos não está centralizado verticalmente.
Cbmeeks #

2
coxo. a migração para cima de 2 para 3 é uma dor completa.
Kevin

A resposta de Jens-André Koch é uma solução única do Bootstrap 3.0. Eu acho que esse é o caminho certo?
21413 Josh Petitt # 03:

2
@ Peter: Consulte github.com/twbs/bootstrap/pull/6342 . TLDR: os emblemas devem ser usados ​​como contadores 'não lidos' e não devem ser usados ​​para transmitir outros status.
Bobby Jack

20

Outra maneira possível, para tornar as cores um pouco mais intensas, é esta:

<span class="badge progress-bar-info">10</span>
<span class="badge progress-bar-success">20</span>
<span class="badge progress-bar-warning">30</span>
<span class="badge progress-bar-danger">40</span>

Consulte Bootply


18

Se estiver usando uma versão do SASS (por exemplo, a de thomas-mcdonald ), convém ser um pouco mais dinâmico (honrar as variáveis ​​existentes) e criar todos os contextos de crachá usando a mesma técnica usada para rótulos:

// Colors
// Contextual variations of badges
// Bootstrap 3.0 removed contexts for badges, we re-introduce them, based on what is done for labels
.badge-default {
  @include label-variant($label-default-bg);
}

.badge-primary {
  @include label-variant($label-primary-bg);
}

.badge-success {
  @include label-variant($label-success-bg);
}

.badge-info {
  @include label-variant($label-info-bg);
}

.badge-warning {
  @include label-variant($label-warning-bg);
}

.badge-danger {
  @include label-variant($label-danger-bg);
}

O equivalente a MENOS deve ser direto.


5

Como a resposta acima, mas aqui está usando os nomes e cores do bootstrap 3:

/*css to add back colours for badges and make use of the colours*/
.badge-default {
  background-color: #999999;
}

.badge-primary {
  background-color: #428bca;
}

.badge-success {
  background-color: #5cb85c;
}

.badge-info {
  background-color: #5bc0de;
}

.badge-warning {
  background-color: #f0ad4e;
}

.badge-danger {
  background-color: #d9534f;
}


2

Ao usar a versão LESS, você pode importar mixins.less e criar suas próprias classes para emblemas coloridos:

.badge-warning {
    .label-variant(@label-warning-bg);
}

O mesmo para as outras cores; apenas substitua aviso por perigo, sucesso, etc.


2

Bem, esta é uma resposta terrivelmente tardia, mas acho que ainda colocarei meus dois centavos ... Eu poderia ter postado isso como um comentário, porque essa resposta não adiciona essencialmente nenhuma nova solução, mas agrega valor à postagem ainda mais uma alternativa. Mas em um comentário, eu não seria capaz de fornecer todos os detalhes por causa do limite de caracteres.

NOTA: Isso precisa de uma edição para inicializar o arquivo CSS - mova as definições de estilo .badgeacima .label-default. Não foi possível encontrar efeitos colaterais práticos devido à alteração em meus testes limitados.

Embora a solução do broc.seib seja provavelmente a melhor maneira de atingir o requisito do OP com adição mínima ao CSS, é possível obter o mesmo efeito sem nenhum CSS extra, exatamente como a solução de Jens A. Koch ou usando .label-xxxclasses contextuais porque elas são fáceis de lembrar em comparação com as progress-bar-xxxaulas. Não acho que as .alert-xxxaulas tenham o mesmo efeito.

Tudo que você tem a fazer é usar apenas .badgee .label-xxxaulas juntos (mas nesta ordem). Não se esqueça de fazer as alterações mencionadas na NOTA acima.

<a href="#">Inbox <span class="badge label-warning">42</span></a> se parece com isso:

Crachá com aviso bg

IMPORTANTE: Esta solução pode alterar seus estilos se você decidir atualizar e esquecer de fazer as alterações no seu novo arquivo CSS local. Minha solução para esse desafio foi copiar todos os .label-xxxestilos no meu arquivo CSS personalizado e carregá-lo após todos os outros arquivos CSS. Essa abordagem também ajuda quando eu uso uma CDN para carregar o BS3.

** PS: ** Ambas as respostas mais bem avaliadas têm seus prós e contras. É exatamente assim que você prefere fazer o seu CSS, porque não existe "a única maneira correta" de fazê-lo.


eu acho que você não precisa de movimento .badge se você colocou label-xxxxx antes badge
Khaled AbuShqear
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.