Ist es möglich, einen CSS (3) -Stil auf eine Beschriftung eines aktivierten Optionsfelds anzuwenden?
Ich habe das folgende Markup:
<input type="radio" id="rad" name="radio"/>
<label for="rad">A Label</label>
Was ich gehofft habe ist das
label:checked { font-weight: bold; }
würde etwas tun, aber leider nicht (wie ich erwartet hatte).
Gibt es einen Selektor, der diese Art von Funktionalität erreichen kann? Sie können mit divs usw. umgeben, wenn dies hilft, aber die beste Lösung wäre eine, die das Attribut label '' for '' verwendet.
Es sollte beachtet werden, dass ich Browser für meine Anwendung angeben kann, also bitte die beste Klasse CSS3 usw.
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">
~
, um Geschwisterelemente auszuwählen, die nicht unbedingt benachbart sind. css-tricks.com/child-and-sibling-selectors:checked
Selektor nicht unterstützt wird .Ich weiß, dass dies eine alte Frage ist, aber wenn Sie möchten, dass Sie
<input>
ein Kind sind,<label>
anstatt sie getrennt zu haben, finden Sie hier eine reine CSS-Methode, mit der Sie dies erreichen können:Dann wickeln Sie den Text einfach mit einem
<span>
:Sehen Sie es auf JSFiddle .
quelle
<label>@Html.RadioButtonFor(..) someText<label>
geht. Ich habe<span>
"someText" herumgeworfen und es hat wie ein Zauber funktioniert. Danke dir!label:active { font-weight: bold; }
. Siehe: jsfiddle.net/Gbq8Z/608 (wow, ich kann nicht glauben, dass die Geige 608 Mal gegabelt wurde).Ich habe vergessen, wo ich es zum ersten Mal erwähnt habe, aber Sie können Ihre Etiketten tatsächlich an anderer Stelle in einen Container einbetten, solange Sie das
for=
Attribut festgelegt haben. Schauen wir uns also ein Beispiel für SO an:Wütend. Das war viel für ein "Sample", aber ich denke, es treibt den Effekt und den Punkt wirklich nach Hause: Wir können sicherlich ein Label für ein geprüftes Eingabesteuerelement auswählen, ohne dass es ein Geschwister ist. Das Geheimnis liegt darin , die
input
Tags für ein Kind nur so zu halten, wie es sein muss (in diesem Fall nur für dasbody
Element) .Da das
label
Element den:checked
Pseudo-Selektor nicht verwendet, spielt es keine Rolle, dass die Beschriftungen im gespeichert sindheader
. Es hat den zusätzlichen Vorteil, dassheader
wir , da es sich um ein Geschwisterelement handelt, den~
generischen Geschwister-Selektor verwenden können, um vominput[type=radio]:checked
DOM-Element in denheader
Container zu wechseln, und dann Nachkommen- / Kind-Selektoren verwenden können, um auf dielabel
s selbst zuzugreifen und sie zu formatieren, wenn sie vorhanden sind entsprechende Optionsfelder / Kontrollkästchen sind aktiviert .Wir können nicht nur die Beschriftungen formatieren, sondern auch andere Inhalte, die möglicherweise Nachkommen eines Geschwistercontainers sind, relativ zu allen
input
s. Und jetzt für den Moment, auf den Sie alle gewartet haben, das JSFIDDLE ! Gehen Sie dorthin, spielen Sie damit, lassen Sie es für Sie arbeiten, finden Sie heraus, warum es funktioniert, brechen Sie es, tun Sie, was Sie tun!Hoffentlich macht das alles Sinn und beantwortet die Frage und möglicherweise alle möglichen Folgemaßnahmen vollständig.
quelle
Wenn Ihre Eingabe ein untergeordnetes Element von ist
label
und Sie mehr als eine Bezeichnung haben, können Sie den Trick von @ Mike mitFlexbox
+ kombinierenorder
.html CSS
Sehen Sie es auf JSFiddle .
Hinweis: Die Geschwisterauswahl funktioniert nur innerhalb desselben übergeordneten Elements. Um dies zu umgehen , können Sie die Eingabe mithilfe des @ Nathan Blair- Hacks auf oberster Ebene ausblenden .
quelle
Sie könnten ein bisschen jQuery verwenden:
Sie müssen sicherstellen, dass Ihre aktivierten Optionsfelder auch beim Laden der Seite die richtige Klasse haben.
quelle
$('label[for="' + $(this).attr('id') + '"]').toggleClass();
AKTUALISIEREN:
Dies funktionierte nur für mich, weil unser vorhandenes generiertes HTML verrückt war,
label
s zusammen mitradio
s generierte und beidenchecked
Attributen gab.Egal, und ein großes Lob für Brilliand, dass er es angesprochen hat!
Wenn Ihr Etikett ein Geschwister eines Kontrollkästchens ist (was normalerweise der Fall ist), können Sie den
~
Geschwister-Selektor und a verwendenlabel[for=your_checkbox_id]
, um es zu adressieren ... oder dem Etikett eine ID geben, wenn Sie mehrere Etiketten haben (wie in diesem Beispiel, in dem ich Beschriftungen für Schaltflächen verwenden)Kam hierher, um das Gleiche zu suchen - fand aber meine Antwort in den Dokumenten .
Ein
label
Element mitchecked
Attribut kann wie folgt ausgewählt werden:Ich weiß, dass es eine alte Frage ist, aber vielleicht hilft es jemandem da draußen :)
quelle