Можно ли применить стиль css (3) к метке отмеченного переключателя?
У меня есть следующая разметка:
<input type="radio" id="rad" name="radio"/>
<label for="rad">A Label</label>
Я надеялся, что
label:checked { font-weight: bold; }
будет что-то делать, но, увы, нет (как я и ожидал).
Есть ли селектор, который может достичь такой функциональности? Вы можете использовать div и т. Д., Если это поможет, но лучшим решением будет использование атрибута «for».
Следует отметить, что я могу указать браузеры для своего приложения, поэтому, пожалуйста, лучше всего из класса css3 и т. Д.
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">
~
чтобы выбрать элементы одного уровня , которые не обязательно соседствуют. css-tricks.com/child-and-sibling-selectors:checked
селектор не поддерживается .Я знаю, что это старый вопрос, но если вы хотите иметь
<input>
детей,<label>
а не разделять их, вот простой способ CSS, которым вы могли бы это сделать:Затем просто оберните текст с
<span>
:Смотрите это на JSFiddle .
источник
<label>@Html.RadioButtonFor(..) someText<label>
, я бросил<span>
вокруг «someText», и это сработало как шарм. Спасибо!label:active { font-weight: bold; }
. Смотрите: jsfiddle.net/Gbq8Z/608 (вау, я не могу поверить, что скрипка была разветвлена 608 раз).Я забыл, где я впервые увидел упомянутое, но на самом деле вы можете вставлять свои метки в контейнер в другом месте, если у вас установлен
for=
атрибут. Итак, давайте проверим пример на SO:Уф. Это было много для «образца», но я чувствую, что он действительно подчеркивает эффект и смысл: мы, безусловно, можем выбрать метку для проверенного элемента управления вводом, не имея при этом родного брата. Секрет заключается в том, чтобы
input
теги ребенка оставались только такими, какими они должны быть (в данном случае - толькоbody
элементом) .Поскольку
label
элемент фактически не использует:checked
псевдоселектор, не имеет значения, что метки хранятся вheader
. Это имеет то дополнительное преимущество, что, так какheader
это элемент-брат, мы можем использовать~
общий селектор-брат для перемещения отinput[type=radio]:checked
элемента DOM кheader
контейнеру, а затем использовать селекторы потомок / потомок для доступа кlabel
самим элементам , что позволяет им стилизовать их при соответствующие радиоблоки / флажки выбраны .Мы можем не только стилизовать метки, но и стилизовать другой контент, который может быть потомком одноуровневого контейнера по отношению ко всем элементам
input
. А теперь, пока вы все так долго ждали, JSFIDDLE ! Идите туда, поиграйте с этим, заставьте это работать на вас, выясните, почему это работает, сломайте это, сделайте то, что вы делаете!Надеюсь, что все имеет смысл и полностью отвечает на вопрос и, возможно, любые последующие действия, которые могут возникнуть.
источник
Если ваши входные данные являются дочерними элементами
label
и у вас более одного ярлыка, вы можете объединить трюк @ Mike сFlexbox
+order
.HTML CSS
Смотрите это на JSFiddle .
примечание: родственный селектор работает только в пределах одного и того же родителя. Чтобы обойти это, вы можете скрыть ввод на верхнем уровне, используя взлом @Nathan Blair .
источник
Вы можете использовать немного jQuery:
Вам также нужно убедиться, что у ваших отмеченных переключателей есть правильный класс при загрузке страницы.
источник
$('label[for="' + $(this).attr('id') + '"]').toggleClass();
ОБНОВИТЬ:
Это сработало только для меня, потому что наш существующий сгенерированный html был дурацким, генерируя
label
s вместе сradio
s и давая им обаchecked
атрибута.Не берите в голову, и большие взлеты для Brilliand для того, чтобы поднять это!
Если ваша метка является родственным элементом флажка (который обычно имеет место), вы можете использовать
~
селектор брата и alabel[for=your_checkbox_id]
для его адреса ... или присвоить метке идентификатор, если у вас есть несколько меток (как в этом примере, где я используйте ярлыки для кнопок)Пришел сюда в поисках того же самого - но в итоге нашел мой ответ в документах .
label
элемент сchecked
атрибутом может быть выбран следующим образом:Я знаю, что это старый вопрос, но, возможно, это кому-то поможет :)
источник