Ich meine, ein Optionsfeld selbst besteht aus einer runden Form und einem Punkt in der Mitte (wenn das Optionsfeld ausgewählt ist). Was ich ändern möchte, ist die Farbe von beiden. Kann dies mit CSS erfolgen?
html
css
forms
radio-button
Katz 'und Maus
quelle
quelle
Eine schnelle Lösung wäre, den Optionsfeld-Eingabestil mit zu überlagern. Es
:after
ist jedoch wahrscheinlich besser, ein eigenes benutzerdefiniertes Toolkit zu erstellen.quelle
Wie Fred erwähnt hat, gibt es keine Möglichkeit, Optionsfelder in Bezug auf Farbe, Größe usw. usw. nativ zu formatieren. Sie können jedoch CSS-Pseudoelemente verwenden, um einen Betrüger für ein bestimmtes Optionsfeld einzurichten und zu formatieren. Wenn Sie berühren, was JamieD gesagt hat, wie wir das Element: after Pseudo verwenden können, können Sie beide verwenden: before und: after, um ein gewünschtes Aussehen zu erzielen.
Vorteile dieses Ansatzes:
Erklärung der kurzen Demo unten:
Der HTML
Das CSS
Eine kurze Demo , um es in Aktion zu sehen
Zusammenfassend ist kein JavaScript, keine Bilder oder Batterien erforderlich. Reines CSS.
quelle
Nur wenn Sie auf Webkit-basierte Browser abzielen (Chrome und Safari, vielleicht entwickeln Sie eine Chrome WebApp, wer weiß ...), können Sie Folgendes verwenden:
Und dann stylen Sie es so, als wäre es ein einfaches HTML-Element, zum Beispiel ein Hintergrundbild.
Verwenden Sie diese Option,
input[type='radio']:active
wenn die Eingabe ausgewählt ist, um die alternativen Grafiken bereitzustellenUpdate : Ab 2018 können Sie Folgendes hinzufügen, um mehrere Browser-Anbieter zu unterstützen:
quelle
:active
, sollten Sie das:checked
Styling zwischen ausgewählten Optionsfeldern unterscheiden.Sie können benutzerdefinierte Optionsfelder auf zwei reine CSS-Arten erzielen
Durch Entfernen der Standarddarstellung mithilfe von CSS
appearance
und Anwenden einer benutzerdefinierten Darstellung. Leider funktionierte dies nicht im IE für Desktop (aber im IE für Windows Phone). Demo:Durch Ausblenden des Radiobuttons und Einstellen des benutzerdefinierten Radiobutton-Erscheinungsbilds auf
label
den Pseudoselektor. Übrigens ist hier keine absolute Positionierung erforderlich (ich sehe absolute Positionierung in den meisten Demos). Demo:quelle
Sie können den Checkbox-Hack verwenden, wie in CSS-Tricks erläutert
http://css-tricks.com/the-checkbox-hack/
Arbeitsbeispiel für Optionsfeld:
http://codepen.io/Angelata/pen/Eypnq
Funktioniert in IE9 +, Firefox 3.5+, Safari 1.3+, Opera 6+, Chrome alles.
quelle
Beispiel für ein einfaches browserübergreifendes benutzerdefiniertes Optionsfeld für Sie
https://jsfiddle.net/kuzroman/ae1b34ay/
quelle
Nun, um zusätzliche Elemente zu erstellen, können wir verwenden: after ,: before (damit wir den HTML-Code nicht so stark ändern müssen). Dann können wir für Optionsfelder und Kontrollkästchen Folgendes aktivieren: aktiviert. Es gibt einige andere Pseudoelemente, die wir ebenfalls verwenden können (z. B.: Hover). Mit einer Mischung aus diesen können wir einige ziemlich coole benutzerdefinierte Formulare erstellen. Überprüfen Sie dies
quelle
Versuchen Sie dieses CSS mit Übergang:
Demo
Html:
quelle
Ich habe eine weitere Abzweigung des Codebeispiels von @ klewis erstellt , um das Spielen mit reinem CSS und Farbverläufen zu demonstrieren, indem ich : vor /: nach Pseudoelementen und einen versteckten Radioeingabeknopf verwendete.
HTML:
::
CSS:
Vorschau: https://www.codeply.com/p/y47T4ylfib
quelle
Dies ist mit nativem CSS nicht möglich. Sie müssen Hintergrundbilder und einige Javascript-Tricks verwenden.
quelle
Wie bereits erwähnt, gibt es keine Möglichkeit, dies in allen Browsern zu erreichen. Der beste Weg, dies zu tun, ist die unauffällige Verwendung von Javascript. Grundsätzlich müssen Sie Ihren Radiobutton in Links umwandeln (vollständig über CSS anpassbar). Jeder Klick auf den Link wird an die zugehörige Radiobox gebunden, wodurch sein Status und alle anderen umgeschaltet werden.
quelle
Es kann hilfreich sein, das Optionsfeld an das gestaltete Etikett zu binden. Weitere Details in dieser Antwort .
quelle
Eine clevere Möglichkeit wäre, ein separates Div mit einer Höhe und Breite von beispielsweise 50 Pixel zu erstellen und dann einen Radius von 50 Pixel über Ihre Optionsfelder zu legen ...
quelle
Sie können ein Span-Element in den Radioeingang einbetten und dann eine Farbe Ihrer Wahl auswählen, die gerendert werden soll, wenn ein Radioeingang aktiviert ist. Schauen Sie sich das folgende Beispiel an, das von w3schools stammt.
Das Ändern der Hintergrundfarbe in diesem Codesegment unten reicht aus.
Aus dem Erstellen eines benutzerdefinierten Optionsfelds
quelle
Eine einfache Lösung wäre die Verwendung der folgenden CSS-Eigenschaft.
quelle