Твиттер Bootstrap 3.0, как мне теперь пометить значок


218

Во второй версии я мог бы использовать

знак значок важный

Я вижу, что элемент .badge больше не имеет контекстных (-success, -primary и т. Д.) Классов.

Как мне добиться того же в версии 3?

Например. Я хочу предупреждающие значки и важные значки в моем интерфейсе


1
Они должны были предоставить .dangerи .successт. Д. Определения стиля класса "из коробки" для общих случаев использования, подобных этому.
— Fr0zenFyr

Ответы:


256

Просто добавьте этот однострочный класс в свой CSS и используйте labelкомпонент начальной загрузки .

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

Сравните это labelи badgeрядом:

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

введите описание изображения здесь

Они появляются одинаково. Но в CSS, labelиспользует emтак , что весы хорошо, и она до сих пор все «-Цвет» классов. Таким образом, метка будет лучше масштабироваться до больших размеров шрифта и может быть окрашена с помощью label-success, label-warning и т.д. Вот два примера:

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

введите описание изображения здесь

Или где вещи больше:

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

введите описание изображения здесь


16.11.2015 : Посмотрим, как мы это сделаем в Bootstrap 4

Похоже, .badgeклассы полностью ушли. Но есть встроенный .label-pillкласс (здесь), который выглядит так, как мы хотим.

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

В использовании это выглядит так:

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

введите описание изображения здесь


04.11.2014 : Вот обновленная информация о том, почему перекрестные опыления с классами оповещений .badgeне так хороши. Я думаю, что эта картина подводит итог:

введите описание изображения здесь

Эти классы оповещения не были предназначены для значков. Он отображает их с «намеком» на предполагаемые цвета, но в итоге последовательность выбрасывается в окно, и читаемость сомнительна. Эти бдительные значки не являются визуально связными.

.label-as-badgeРешение расширяет только конструкцию начальной загрузки. Мы не затрагиваем все решения, принимаемые дизайнерами начальной загрузки, а именно то внимание, которое они уделяли удобочитаемости и связности всех возможных цветов, а также самим цветовые решения. .label-as-badgeКласс только добавляет закругленные углы, и больше ничего. Нет введенных определений цвета. Таким образом, единственная строка CSS.

Да, проще просто взломать и .alert-xxxxxоставить эти классы - вам не нужно добавлять какие-либо строки CSS. Или вы можете больше заботиться о мелочах и добавить одну строку.


3
это круто, если вы не хотите использовать значки в групповых списках, тогда они не плавают ... я могу видеть это торможение с течением времени при изменении начальной загрузки. хороший хак хотя.
— nodrog

2
Да, хороший момент @nodrog. list-groupС badgesхорошим вне коробки особенности в загрузчике. Для тех, кто смотрит, вот как это выглядит: getbootstrap.com/components/#list-group-badges
— broc.seib

1
Я не убежден аргументом "перекрестного опыления". Повторное использование и рекомбинация CSS-классов / атрибутов происходит постоянно. Скрытый аргумент в пользу вашего термина может заключаться в том, что вы предпочитаете семантические имена классов и подклассов CSS. Это в основном «гибкость / возможность повторного использования и семантическая корректность». Семантическое имя класса должно поддерживать роль элемента. «label-as-badge» указывает на преобразование элемента. - Sidenote: ответ в основном на мой комментарий от 22 сентября с решением проблемы «не очень круглые края на этикетках» путем добавления строки CSS.
— Йенс А. Кох

3
Если вы хотите получить плавающую специальную группу списков, просто добавьте это! .list-group-item > .label-as-badge { float: right; } .list-group-item > .label-as-badge + .label-as-badge { margin-right: 5px; }
— Gausie

2
Отличный ответ. Могу также захотеть добавить туда отступы для соответствия .badge следующим образом:.label-as-badge { border-radius: 1em; padding: 3px 7px; }
— Мэтт Борха

254

Вкратце: замените badge-importantлибо на, alert-dangerлибо progress-bar-danger.

Это выглядит так: Bootply Demo .


Вы можете объединить класс CSS badgeс alert-*или progess-bar-*раскрасить их:

С участием 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

Оповещения Docu: http://getbootstrap.com/components/#alerts

С class="badges progress-bar-*"(как предложено @ 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

Прогресс-бар Документ: http://getbootstrap.com/components/#progress-alternatives


4
Мне не понравилось, как предупреждение украшало значки, поэтому я решил использовать вместо них ярлыки. getbootstrap.com/components/#labels
— Майк Перселл,

6
Это немного хакерский ответ. Конечно, это работает, и это просто. Но вы должны использовать эти классы контекстных оповещений с оповещениями. Вы можете подписаться на сломанные стили в будущем. Ответ @ JasonHuang такой же простой и дает вам больший контроль.
— Майкисиг

2
Что подтолкнуло меня сделать ответ выше, так это то, что Visual Studio Web Essentials отображает предупреждение для кода выше. А именно: «При использовании« alert-danger »вы также должны указать класс« alert »».
— Майкизиг

3
Люди попадают на эту страницу, потому что пользователи начальной загрузки сделали много конструктивных соображений, которые отбрасывают конструктивные соображения, которые они делали раньше :) - Я просто рекомбинировал существующие классы CSS, чтобы приблизиться к прежнему «значению, важному для значка» , Здесь мы идем с материалом, который они используют из коробки: вот и все. Я не думаю, что есть один верный способ создать CSS. Эта страница предлагает множество способов решить проблему. Но, пожалуйста, перестаньте кричать: «Ааа! Нет! Это не так! Вы делаете что-то не так».
— Йенс А. Кох

1
@ Jens-AndréKoch ты прав насчет моего "Ааааааааа !!" Это делает звук , как я говорю людям «что вы делаете это неправильно», и у меня нет места , чтобы сказать , что. Сожалею.
— broc.seib

45

Bootstrap 3 убрал эти варианты цвета для значков. Тем не менее, мы можем добавить эти стили вручную. Вот мое решение, а вот 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

Классы контекста для badgeдействительно удаляются из Bootstrap 3, поэтому вам придется добавить несколько пользовательских CSS, чтобы создать такой же эффект, как ...

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

Bootply


20
Почему они от них избавились?
— Питер

4
+! Мне также интересно, почему они избавились от них. Вы можете использовать этикетку, но она не выстраивается должным образом на контейнере для таблеток. По крайней мере, это не по центру вертикально.
— cbmeeks

2
ламе. миграция вверх от 2 до 3 - полная боль.
— Кевин

Ответ от Йенса-Андре Коха - решение только для Bootstrap 3.0. Я думаю, что это правильный путь?
— Джош Петитт

2
@Peter: См github.com/twbs/bootstrap/pull/6342 . TLDR: значки предназначены для использования в качестве «непрочитанных» счетчиков и не должны использоваться для передачи других статусов.
— Бобби Джек,

20

Другой возможный способ сделать цвета немного более интенсивными:

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

Смотрите Bootply


18

Если вы используете версию SASS (например, thomas-mcdonald's ), вы можете захотеть быть немного более динамичными (учитывать существующие переменные) и создавать все контексты значков, используя ту же технику, что и для меток:

// 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);
}

Меньше эквивалент должен быть простым.


5

Как и ответ выше, но здесь используются имена и цвета начальной загрузки 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

При использовании версии LESS вы можете импортировать mixins.less и создавать свои собственные классы для цветных значков:

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

То же самое для других цветов; просто замените предупреждение на опасность, успех и т. д.


2

Что ж, это ужасно поздний ответ, но я думаю, что я все еще буду помещать свои два цента ... Я мог бы опубликовать это как комментарий, потому что этот ответ по существу не добавляет никакого нового решения, но он добавляет ценность к сообщению как еще одна альтернатива. Но в комментарии я не смог бы дать все детали из-за ограничения количества символов.

ПРИМЕЧАНИЕ. Для этого необходимо отредактировать файл начальной загрузки CSS - переместите определения стилей .badgeвыше .label-default. Не удалось найти никаких практических побочных эффектов из-за изменений в моем ограниченном тестировании.

Хотя решение broc.seib, вероятно, является наилучшим способом достижения требований OP с минимальным добавлением к CSS, можно достичь того же эффекта без какого-либо дополнительного CSS, как решение Jens A. Koch или используя .label-xxxконтекстные классы, потому что они легко запомнить по сравнению с progress-bar-xxxклассами. Я не думаю, что .alert-xxxзанятия дают такой же эффект.

Все, что вам нужно сделать, это просто использовать .badgeи .label-xxxклассы вместе (но в этом порядке). Не забудьте внести изменения, указанные в примечании выше.

<a href="#">Inbox <span class="badge label-warning">42</span></a> выглядит так:

Значок с предупреждением BG

ВАЖНО: Это решение может нарушить ваши стили, если вы решите обновить и забыть внести изменения в ваш новый локальный файл CSS. Моим решением этой проблемы было скопировать все .label-xxxстили в моем собственном файле CSS и загрузить его после всех других файлов CSS. Этот подход также помогает, когда я использую CDN для загрузки BS3.

** PS: ** У обоих самых рейтинговых ответов есть свои плюсы и минусы. Это просто способ, которым вы предпочитаете делать свой CSS, потому что не существует «единственно правильного» способа сделать это.


я думаю, вам не нужно перемещать .badge, если вы поместили label-xxxxx перед значком
— Khaled AbuShqear
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.