Czy można zastosować styl css (3) do etykiety zaznaczonego przycisku opcji?
Mam następujące znaczniki:
<input type="radio" id="rad" name="radio"/>
<label for="rad">A Label</label>
Miałem nadzieję, że to
label:checked { font-weight: bold; }
zrobiłbym coś, ale niestety nie (tak jak się spodziewałem).
Czy istnieje selektor, który może osiągnąć taką funkcjonalność? Jeśli to pomoże, możesz otoczyć div, itp., Ale najlepszym rozwiązaniem byłoby użycie atrybutu label „for”.
Należy zauważyć, że jestem w stanie określić przeglądarki dla mojej aplikacji, więc proszę o najlepszą klasę css3 itp.
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">
~
aby wybrać elementy rodzeństwa, które niekoniecznie sąsiadują. css-tricks.com/child-and-sibling-selectors:checked
selektor nie jest obsługiwany .Wiem, że to stare pytanie, ale jeśli chcesz mieć
<input>
dziecko,<label>
zamiast je rozdzielić, oto czysty sposób CSS, w jaki możesz to zrobić:Następnie po prostu zawiń tekst
<span>
:Zobacz na JSFiddle .
źródło
<label>@Html.RadioButtonFor(..) someText<label>
, rzuciłem<span>
wokół „someText” i działało to jak urok. Dziękuję Ci!label:active { font-weight: bold; }
. Zobacz: jsfiddle.net/Gbq8Z/608 (wow, nie wierzę, że skrzypce rozwidlono 608 razy).Zapomniałem, gdzie pierwszy raz o tym wspomniałem, ale tak naprawdę możesz osadzić swoje etykiety w pojemniku w innym miejscu, o ile masz
for=
ustawiony atrybut. Sprawdźmy więc przykład SO:Uff To było dużo jak na „próbkę”, ale wydaje mi się, że to naprawdę wpływa na efekt i punkt: możemy z pewnością wybrać etykietę dla sprawdzonej kontroli wejściowej, bez bycia rodzeństwem. Sekret polega na utrzymywaniu
input
tagów dziecka tylko do tego, czym muszą być (w tym przypadku - tylkobody
element) .Ponieważ
label
element nie używa:checked
pseudo selektora, nie ma znaczenia, że etykiety są przechowywane wheader
. Ma tę dodatkową zaletę, że ponieważheader
jest rodzeństwem, możemy użyć~
ogólnego selektora rodzeństwa, aby przejść zinput[type=radio]:checked
elementu DOM doheader
kontenera, a następnie użyć selektora potomka / potomka, aby uzyskać dostęp dolabel
samych siebie, umożliwiając ich stylizację, gdy ich odpowiednie pola wyboru / pola wyboru są zaznaczone .Nie tylko możemy stylizować etykiety, ale także stylizować inne treści, które mogą być potomkami kontenera rodzeństwa w stosunku do wszystkich
input
liter. A teraz, na chwilę, na którą wszyscy czekali, JSFIDDLE ! Idź tam, baw się nim, spraw, by działał dla Ciebie, dowiedz się, dlaczego to działa, zepsuć go, rób to, co robisz!Mam nadzieję, że wszystko to ma sens i w pełni odpowiada na pytanie oraz możliwe dalsze działania, które mogą się pojawić.
źródło
Jeśli Twój wkład jest elementem potomnym
label
i masz więcej niż jedną etykietę, możesz połączyć sztuczkę @ Mike'a zFlexbox
+order
.HTML css
Zobacz na JSFiddle .
Uwaga: Selektor rodzeństwa działa tylko w obrębie tego samego rodzica. Aby obejść ten problem, możesz ukryć dane wejściowe na najwyższym poziomie za pomocą hakowania @Nathan Blair .
źródło
Możesz użyć trochę jQuery:
Musisz również upewnić się, że zaznaczone przyciski opcji mają również odpowiednią klasę przy ładowaniu strony.
źródło
$('label[for="' + $(this).attr('id') + '"]').toggleClass();
AKTUALIZACJA:
Działa to tylko dla mnie, ponieważ nasz istniejący wygenerowany HTML był zwariowany, generując
label
s wraz zradio
si nadając im obachecked
atrybuty.Nieważne, i wielkie plusy dla Brilliand za podniesienie go!
Jeśli twoja etykieta jest rodzeństwem pola wyboru (co zwykle ma miejsce), możesz użyć
~
selektora rodzeństwa i a,label[for=your_checkbox_id]
aby go rozwiązać ... lub nadać etykiecie identyfikator, jeśli masz wiele etykiet (tak jak w tym przykładzie, w którym I użyj etykiet dla przycisków)Przybyłem tutaj, szukając tego samego - ale ostatecznie znalazłem moją odpowiedź w dokumentacji .
label
element ochecked
atrybut może być wybrany w taki sposób:Wiem, że to stare pytanie, ale może pomaga komuś tam :)
źródło