Twitter Bootstrap 3.0 làm thế nào để tôi có huy hiệu huy hiệu quan trọng bây giờ


218

Trong phiên bản hai tôi có thể sử dụng

huy hiệu quan trọng

Tôi thấy rằng phần tử .badge không còn có các lớp theo ngữ cảnh (-success, -primary, v.v.).

Làm thế nào để tôi đạt được điều tương tự trong phiên bản 3?

Ví dụ. Tôi muốn phù hiệu cảnh báo và huy hiệu quan trọng trong giao diện người dùng của tôi


1
Họ nên cung cấp .danger, .successvv các định nghĩa kiểu lớp ra khỏi hộp cho các trường hợp sử dụng chung như thế này.
Fr0zenFyr

Câu trả lời:


256

Chỉ cần thêm lớp một dòng này trong CSS của bạn và sử dụng labelthành phần bootstrap .

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

So sánh điều này labelbadgecạnh nhau:

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

nhập mô tả hình ảnh ở đây

Chúng xuất hiện giống nhau. Nhưng trong CSS, labelsử dụng emđể nó có tỷ lệ độc đáo và nó vẫn có tất cả các lớp "màu". Vì vậy, nhãn sẽ mở rộng kích thước phông chữ lớn hơn tốt hơn và có thể được tô màu bằng nhãn thành công, cảnh báo nhãn, v.v ... Dưới đây là hai ví dụ:

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

nhập mô tả hình ảnh ở đây

Hoặc nơi mọi thứ lớn hơn:

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

nhập mô tả hình ảnh ở đây


16/11/2015 : Xem cách chúng tôi sẽ làm điều này trong Bootstrap 4

Hình như .badgecác lớp học đã hoàn toàn biến mất. Nhưng có một .label-pilllớp tích hợp (ở đây) trông giống như những gì chúng ta muốn.

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

Trong sử dụng, nó trông như thế này:

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

nhập mô tả hình ảnh ở đây


11/04/2014 : Đây là bản cập nhật về lý do tại sao các lớp cảnh báo thụ phấn chéo .badgekhông quá tuyệt vời. Tôi nghĩ rằng hình ảnh này tổng hợp nó:

nhập mô tả hình ảnh ở đây

Những lớp cảnh báo không được thiết kế để đi kèm với phù hiệu. Nó ám chỉ chúng bằng một "gợi ý" về màu sắc dự định, nhưng cuối cùng tính nhất quán bị ném ra ngoài cửa sổ và khả năng đọc là nghi vấn. Những huy hiệu bị tấn công cảnh báo không gắn kết trực quan.

Các .label-as-badgegiải pháp được chỉ mở rộng thiết kế bootstrap. Chúng tôi đang giữ nguyên vẹn tất cả các quyết định được đưa ra bởi các nhà thiết kế bootstrap, cụ thể là sự cân nhắc mà họ đưa ra cho khả năng đọc và gắn kết trên tất cả các màu có thể, cũng như các lựa chọn màu sắc. Các .label-as-badgelớp chỉ thêm các góc tròn, và không có gì khác. Không có định nghĩa màu giới thiệu. Do đó, một dòng CSS duy nhất.

Đúng, việc hack và thả vào các .alert-xxxxxlớp đó sẽ dễ dàng hơn - bạn không phải thêm bất kỳ dòng CSS nào. Hoặc bạn có thể quan tâm nhiều hơn về những điều nhỏ nhặt và thêm một dòng.


3
Điều này thật tuyệt vời miễn là bạn không muốn sử dụng huy hiệu trong danh sách nhóm, sau đó chúng không nổi ... tôi có thể thấy sự hãm này theo thời gian khi bootstrap bị thay đổi. hack đẹp mặc dù.
gật đầu

2
Vâng, điểm tốt @nodrog. Các list-groupbằng badgeslà một đẹp out-of-the-box tính năng trong bootstrap. Đối với những người đang xem, đây là những gì trông giống như: getbootstrap.com/components/#list-group-badges
broc.seib

1
Tôi không bị thuyết phục bởi lập luận "thụ phấn chéo". Tái sử dụng và kết hợp lại các lớp / thuộc tính CSS đang diễn ra mọi lúc. Đối số ẩn đằng sau thuật ngữ của bạn có thể là, bạn thích các tên lớp css và lớp con ngữ nghĩa. Về cơ bản, đó là "tính linh hoạt / tái sử dụng và tính chính xác về ngữ nghĩa". Một tên lớp ngữ nghĩa nên hỗ trợ vai trò của phần tử. "Nhãn hiệu dưới dạng huy hiệu" biểu thị chuyển đổi thành phần. - Sidenote: Câu trả lời về cơ bản là nhận xét của tôi từ ngày 22 tháng 9 với một giải pháp cho vấn đề "không quá tròn trên nhãn" bằng cách thêm một dòng css.
Jens A. Koch

3
Nếu bạn muốn có được danh sách nhóm đặc biệt nổi, chỉ cần thêm cái này! .list-group-item > .label-as-badge { float: right; } .list-group-item > .label-as-badge + .label-as-badge { margin-right: 5px; }
Gausie

2
Câu trả lời tuyệt vời. Cũng có thể muốn ném vào đó phần đệm để khớp .badge như sau:.label-as-badge { border-radius: 1em; padding: 3px 7px; }
Matt Borja

254

Nói tóm lại: Thay thế badge-importantvới một trong hai alert-dangerhoặc progress-bar-danger.

Nó trông như thế này: Bootply Demo .


Bạn có thể kết hợp lớp CSS badgevới alert-*hoặc progess-bar-*tô màu chúng:

Với 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

Cảnh báo Docu: http://getbootstrap.com/components/#alerts

Với class="badges progress-bar-*"(như được đề xuất bởi @ 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

Tiến trình-Bar Docu: http://getbootstrap.com/components/#proTHER-alternigin


4
Tôi không thích cách cảnh báo trang trí huy hiệu, vì vậy tôi đã chọn sử dụng nhãn thay thế. getbootstrap.com/components/#labels
Mike Purcell

6
Đây là một chút của một câu trả lời hack-ish. Chắc chắn nó hoạt động, và nó đơn giản. Nhưng bạn nên sử dụng các lớp cảnh báo theo ngữ cảnh đó với các cảnh báo. Bạn có thể đăng ký cho mình các phong cách bị hỏng trong tương lai. Câu trả lời của @ JasonHuang chỉ đơn giản và cung cấp cho bạn quyền kiểm soát tốt hơn.
mikeigs

2
Điều khiến tôi phải trả lời ở trên là Visual Studio Web Essentials hiển thị cảnh báo cho mã ở trên. Cụ thể, "Khi sử dụng 'cảnh báo nguy hiểm', bạn cũng phải chỉ định lớp 'cảnh báo'."
mikeigs

3
Mọi người truy cập vào trang này, bởi vì những người bootstrap đã cân nhắc rất nhiều về thiết kế, trong đó đưa ra những cân nhắc về thiết kế mà họ đã làm trước đây :) - Tôi chỉ kết hợp lại các lớp css hiện có, để đến gần với "huy hiệu quan trọng" trước đây . Ở đây chúng tôi đi với những thứ họ sử dụng ra khỏi hộp: đó là nó. Tôi không nghĩ có một cách thực sự để tạo CSS. Trang này cung cấp rất nhiều cách để giải quyết vấn đề. Nhưng làm ơn đừng hét lên "Aaah! Không! Đây không phải là cách! Bạn đang làm gì đó sai".
Jens A. Koch

1
@ Jens-AndréKoch bạn nói đúng về "Aaah !! Không !!" của tôi. Nghe vẻ như tôi đang nói với mọi người "bạn đang làm sai" và tôi không có nơi nào để nói điều đó. Lấy làm tiếc.
broc.seib

45

Bootstrap 3 đã loại bỏ các tùy chọn màu sắc cho phù hiệu. Tuy nhiên, chúng ta có thể thêm các kiểu đó bằng tay. Đây là giải pháp của tôi và đây là Thùng rác :

.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

Các lớp ngữ cảnh badgethực sự bị xóa khỏi Bootstrap 3, vì vậy bạn phải thêm một số CSS tùy chỉnh để tạo hiệu ứng tương tự như ...

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

Bootply


20
Tại sao họ thoát khỏi chúng?
Peter

4
+! Tôi cũng tự hỏi tại sao họ thoát khỏi chúng. Bạn có thể sử dụng nhãn nhưng nó không xếp hàng đúng cách trên hộp đựng thuốc. Ít nhất nó không phải là trung tâm theo chiều dọc.
cbmeek

2
què. di chuyển lên từ 2 đến 3 là một nỗi đau hoàn toàn.
Kevin

Câu trả lời của Jens-André Koch là giải pháp chỉ dành cho Bootstrap 3.0. Tôi nghĩ rằng đây là cách đúng đắn?
Josh Petitt

2
@Peter: Xem github.com/twbs/bootstrap/pull/6342 . TLDR: huy hiệu được dự định sẽ được sử dụng làm bộ đếm 'chưa đọc' và không nên được sử dụng để truyền đạt các trạng thái khác.
Bobby Jack

20

Một cách khác có thể, để làm cho màu sắc mạnh hơn một chút, là cách này:

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

Xem Bootply


18

Nếu sử dụng phiên bản SASS (ví dụ: phiên bản của thomas-mcdonald ), thì bạn có thể muốn năng động hơn một chút (tôn vinh các biến hiện có) và tạo tất cả bối cảnh huy hiệu bằng cách sử dụng kỹ thuật tương tự như được sử dụng cho nhãn:

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

Tương đương LESS nên đơn giản.


5

Giống như câu trả lời ở trên nhưng ở đây đang sử dụng bootstrap 3 tên và màu sắc:

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

Khi sử dụng phiên bản LESS, bạn có thể nhập mixins.less và tạo các lớp của riêng bạn cho huy hiệu màu:

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

Tương tự cho các màu khác; chỉ cần thay thế cảnh báo bằng nguy hiểm, thành công, vv


2

Chà, đây là một câu trả lời muộn khủng khiếp nhưng tôi nghĩ tôi vẫn sẽ đưa hai xu của mình vào ... Tôi có thể đã đăng bài này dưới dạng một bình luận vì câu trả lời này về cơ bản không thêm bất kỳ giải pháp mới nào nhưng nó làm tăng giá trị cho bài đăng như một sự thay thế khác. Nhưng trong một bình luận tôi sẽ không thể đưa ra tất cả các chi tiết vì giới hạn ký tự.

LƯU Ý: Điều này cần chỉnh sửa để khởi động tệp CSS - di chuyển các định nghĩa kiểu cho .badgeở trên .label-default. Không thể tìm thấy bất kỳ tác dụng phụ thực tế nào do sự thay đổi trong thử nghiệm hạn chế của tôi.

Mặc dù giải pháp của broc.seib có lẽ là cách tốt nhất để đạt được yêu cầu của OP với việc bổ sung tối thiểu vào CSS, nhưng có thể đạt được hiệu quả tương tự mà không cần bất kỳ CSS bổ sung nào giống như giải pháp của Jens A. Koch hoặc bằng cách sử dụng .label-xxxcác lớp theo ngữ cảnh bởi vì chúng rất dễ nhớ so với progress-bar-xxxcác lớp học. Tôi không nghĩ rằng .alert-xxxcác lớp học cho hiệu quả tương tự.

Tất cả bạn phải làm chỉ là sử dụng .badge.label-xxxcác lớp với nhau (nhưng theo thứ tự này). Đừng quên thực hiện các thay đổi được đề cập trong LƯU Ý ở trên.

<a href="#">Inbox <span class="badge label-warning">42</span></a> trông như thế này:

Huy hiệu cảnh báo bg

QUAN TRỌNG: Giải pháp này có thể phá vỡ phong cách của bạn nếu bạn quyết định nâng cấp và quên thực hiện các thay đổi trong tệp CSS cục bộ mới của mình. Giải pháp của tôi cho thử thách này là sao chép tất cả các .label-xxxkiểu trong tệp CSS tùy chỉnh của tôi và tải nó sau tất cả các tệp CSS khác. Cách tiếp cận này cũng hữu ích khi tôi sử dụng CDN để tải BS3.

** PS: ** Cả hai câu trả lời được xếp hạng hàng đầu đều có ưu và nhược điểm. Đó chỉ là cách bạn thích làm CSS của mình vì không có "cách duy nhất đúng" để làm điều đó.


Tôi nghĩ rằng bạn không cần phải di chuyển .badge nếu bạn đặt nhãn-xxxxx trước huy hiệu
Khaled AbuShqear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.