это в настоящее время не представляется возможным с насколько я знаю, чистый CSS. У вас есть несколько вариантов для обходных, хотя:
код [атрибут^= «значение»] Селектор
Это будет работать, если ваши этикетки на самом деле начать с тем же идентификатором/слово, когда связанные с флажками, аналогично на приведенный вами пример кода.
Пример:
HTML
<label for='chckbx'>Foobar</label>
<input type='checkbox' name='chckbx_1' value='1' />
CSS
label[for^='chckbx']{/* styles */}
Написание HTML определенным образом
Это будет работать, если у вас уже есть ваши <label>
s и связанные с ними <input />
s в собственном контейнере, или если вы можете изменить свой HTML таким образом. Хитрость заключается в том, чтобы выбрать контейнер элемента флажка через CSS, а затем создать его дочерний элемент <label>
.
Пример:
HTML
<div class='checkboxContainer'>
<label for='foo'>Foobar</label>
<input type='checkbox' name='foo' value='1' />
</div>
CSS
.checkboxContainer > label{/* styles */}
Использование JS
можно написать простой пример кода для сделайте это с помощью JavaScript (/ jQuery), если хотите.
В CSS4 это, вероятно, возможно изначально возможно с помощью 'label: has ([type = checkbox])'. Не могу дождаться этого. – Xufox
Ой, подождите, если они не вложены, это можно сделать с помощью '+' selector: '[type = checkbox] + label'.Но это работает только в том случае, если 'label' и' input' - это наоборот ... – Xufox
Хорошо, я сделал еще несколько исследований: [в этом вопросе] (http://stackoverflow.com/questions/1817792/is-there-a- previous-sibling-selector), комментарии предполагают следующий синтаксис, подобный 'label: has (+ [type = 'checkbox']). Но [этот JSFiddle] (http://jsfiddle.net/bbnnt7w3/) демонстрирует использование, когда они наоборот. – Xufox