Ich möchte der ausgewählten Bezeichnung eines Optionsfelds einen Stil hinzufügen:
HTML:
<div class="radio-toolbar">
<label><input type="radio" value="all" checked>All</label>
<label><input type="radio" value="false">Open</label>
<label><input type="radio" value="true">Archived</label>
</div>
CSS
.radio-toolbar input[type="radio"] {display:none;}
.radio-toolbar label {
background:Red;
border:1px solid green;
padding:2px 10px;
}
.radio-toolbar label + input[type="radio"]:checked {
background:pink !important;
}
Irgendwelche Ideen, was ich falsch mache?
:checked
Selektor nicht..foo { ... }
display:none;
es zu verwenden, funktionieren die Browser mit der Tastatur einwandfrei.Wenn Sie die Kontrollkästchen wirklich in das Etikett einfügen möchten, fügen Sie ein zusätzliches Span-Tag hinzu, z.
HTML
CSS
Dadurch werden die Hintergründe für alle Geschwister des ausgewählten Optionsfelds festgelegt.
quelle
for
Sie verwenden einen benachbarten Geschwister-Selektor (
+
), wenn die Elemente keine Geschwister sind. Das Label ist das übergeordnete Element der Eingabe, nicht das Geschwister.CSS hat keine Möglichkeit, ein Element basierend auf seinen Nachkommen (oder irgendetwas, das darauf folgt) auszuwählen.
Sie müssen auf JavaScript schauen, um dies zu lösen.
Alternativ können Sie Ihr Markup neu anordnen:
quelle
Sie können Ihrem HTML- und CSS-Bereich eine Spanne hinzufügen.
Hier ist ein Beispiel aus meinem Code ...
HTML (JSX):
CSS, damit Standard-Optionsfelder auf dem Bildschirm verschwinden und benutzerdefinierte Schaltflächenbilder überlagert werden:
quelle
Da es derzeit keine CSS-Lösung zum Stylen eines übergeordneten Elements gibt, verwende ich hier eine einfache jQuery-Lösung, um einer Beschriftung mit aktivierter Eingabe eine Klasse hinzuzufügen.
Vergessen Sie nicht, dem Label der vorab überprüften Eingabe auch die Klasse
checkedlabel
zu gebenquelle
Hier ist eine zugängliche Lösung
quelle