Đánh dấu nhãn nếu hộp kiểm được chọn


Câu trả lời:


147

Nếu bạn có

<div>
  <input type="checkbox" class="check-with-label" id="idinput" />
  <label class="label-for-check" for="idinput">My Label</label>
</div>

bạn có thể làm

.check-with-label:checked + .label-for-check {
  font-weight: bold;
}

Xem điều này làm việc . Lưu ý rằng điều này sẽ không hoạt động trong các trình duyệt không hiện đại.


2
Điều này sẽ không hoạt động trong IE 6-8, trừ khi OP không quan tâm đến IE.
Hussein

25
Tôi biết, tôi đã lưu ý rằng nó sẽ chỉ hoạt động trong các trình duyệt hiện đại trong câu trả lời của tôi.
Andrew Marshall

4
@ inf3rno Nó nên. Cả hai anh chị em chọn liền kề:checkedchọn được liệt kê như hỗ trợ trong IE9. Tài liệu riêng của Microsoft xác nhận điều này.
Andrew Marshall,

3
giải pháp tốt, nhưng nếu ist yếu tố nhãn không phải là tổ tiên tiếp theo bạn nên thử sử dụng ~ chọn thay vì chọn + 456bereastreet.com/archive/200601/css_3_selectors_explained (cuối cùng trong bảng)
Karl Adler

@abimelex Mặc dù tùy thuộc vào HTML của bạn mà có thể kết thúc khớp với nhiều <label>hơn mong muốn.
Andrew Marshall

101

Tôi thích đề xuất của Andrew và trên thực tế, quy tắc CSS chỉ cần là:

:checked + label {
   font-weight: bold;
}

Tôi muốn dựa vào sự kết hợp tiềm ẩn của labelinputyếu tố, vì vậy tôi muốn làm một cái gì đó như thế này:

<label>
   <input type="checkbox"/>
   <span>Bah</span>
</label>

với CSS:

:checked + span {
    font-weight: bold;
}

Ví dụ: http://jsfiddle.net/wrumsby/vyP7c/


Có một mẹo để thay đổi màu nền của nhãn chính của hộp kiểm đã chọn. Tận dụng tối tràn nhãn: ẩn, sau đó cung cấp cho các hộp kiểm rất lớn DropShadow ... :checked { box-shadow: 0 0 0 500px orange; }. Bạn sẽ cần chơi với các chỉ mục z để đảm bảo bất kỳ phần tử anh em nào không bị ẩn.
Aaron Cicali,

8

Đây là một ví dụ về việc sử dụng lớp :checkedgiả để làm cho các biểu mẫu dễ tiếp cận hơn. Lớp :checkedgiả có thể được sử dụng với các đầu vào ẩn và nhãn hiển thị của chúng để xây dựng các vật dụng tương tác, chẳng hạn như phòng trưng bày hình ảnh. Tôi đã tạo đoạn trích cho những người muốn thử nghiệm.

input[type=checkbox] + label {
  color: #ccc;
  font-style: italic;
} 
input[type=checkbox]:checked + label {
  color: #f00;
  font-style: normal;
} 
<input type="checkbox" id="cb_name" name="cb_name"> 
<label for="cb_name">CSS is Awesome</label> 


-24

Bạn không thể làm điều này chỉ với CSS. Sử dụng jQuery bạn có thể làm

HTML

<label id="lab">Checkbox</label>
<input id="check" type="checkbox" />

CSS

.highlight{
    background:yellow;
}

jQuery

$('#check').click(function(){
    $('#lab').toggleClass('highlight')
})

Điều này sẽ hoạt động trên tất cả các trình duyệt

Kiểm tra ví dụ làm việc tại http://jsfiddle.net/LgADZ/


8
Câu hỏi đặt ra đã nói một cách javascript phi và câu trả lời trước khi bạn Cleary cho thấy một cách mà làm việc chỉ sử dụng css
Kevin

2
Giải pháp được chấp nhận sử dụng bộ chọn anh chị em kế cận thực sự là một tính năng của CSS 2.1 .
Walter Rumsby

JQuery là giải pháp duy nhất đảm bảo hỗ trợ nhiều trình duyệt.
Hussein

7
Xin hãy cẩn thận ở đó Hussein. Bạn có thể cung cấp hỗ trợ cho các trình duyệt như Internet Explorer 6 không hỗ trợ bộ chọn anh chị em kế cận bằng JavaScript . jQuery là một thư viện JavaScript sẽ giúp bạn làm điều này; có những thư viện khác (hoặc thậm chí là JavaScript thuần túy!) mà bạn có thể thực hiện việc này.
Simon Lieschke

Re: nhận xét trước đó của tôi, tôi không nhận ra rằng :checkedbộ chọn giả là một tính năng CSS3.
Walter Rumsby vào
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.