suchen
HeimWeb-FrontendCSS-TutorialBenutzerdefinierte Styling -Formulareingaben mit modernen CSS -Funktionen

Benutzerdefinierte Styling -Formulareingaben mit modernen CSS -Funktionen

Heutzutage ist das Erstellen benutzerdefinierter Kontrollkästchen, Optionsschaltflächen und Toggle -Switches durchaus machbar, während die Semantik und Barrierefreiheit beibehalten wird. Wir brauchen nicht einmal eine Zeile von JavaScript -Code oder zusätzlichen HTML -Elementen! Eigentlich ist es in letzter Zeit einfacher als in der Vergangenheit. mal sehen.

Der endgültige Effekt ist wie folgt:

Die Dinge sind viel einfacher als zuvor!

Der Grund ist, dass wir endlich können<input> ::before und ::after Pseudo-Elementen des Tags selbst sind gestylt. Dies bedeutet, dass wir aufbewahren und einstellen können<input> Stil ohne zusätzliche Elemente. Zuvor mussten wir uns auf extra verlassen<div> oder<code><span></span> Um benutzerdefiniertes Design zu implementieren.

Schauen wir uns den HTML -Code an

Hier gibt es nichts Besonderes. Wir müssen diesen HTML -Code nur verwenden, um die Eingabe zu stylen:

<input type="checkbox" id="c1">
<input type="radio" id="r1">
<input type="checkbox" id="s1">

Hier geht es um den HTML -Teil. Natürlich wird empfohlen, name und id -Attribute sowie passende Angaben hinzuzufügen<label></label> Element:

 <label for="c1">Kontrollkästchen</label>
<input type="checkbox" id="c1">

<label for="r1">Optionsknopf</label>
<input type="radio" id="r1">

<label for="s1">schalten</label>
<input type="checkbox" id="s1" class="switch">

Starten Sie Styles

Zunächst überprüfen wir die Unterstützung für appearance: none; einschließlich seiner Präfixversion. appearance ist der Schlüssel, da es so konzipiert ist, dass es den Standardstil des Browsers aus dem Element entfernen. Wenn der Browser diese Eigenschaft nicht unterstützt, gilt der Stil nicht und der Standardeingangsstil wird angezeigt. Dies ist absolut in Ordnung und auch ein gutes Beispiel für eine allmähliche Verbesserung.

 @Supports (-webkit-upearance: keine) oder (-moz-äqulearance: Keine) {
  input [type = 'checkbox'],
  input [type = 'radio'] {
    -Webkit-Appearanz: Keine;
    -moz-apparance: Keine;
  }
}

Im Moment befindet sich appearance noch in der Arbeitsabgabephase, aber hier ist die Unterstützung:

Dieser Browser unterstützt Daten von Caniuse, die weitere Details enthält. Die Zahl zeigt an, dass der Browser diese Funktion in dieser und späteren Versionen unterstützt.

Desktop

Mobile/Tablet

Wie Links müssen wir die unterschiedlichen Interaktionszustände von Formularelementen berücksichtigen. Wir betrachten diese Zustände beim Festlegen von Elementstilen:

  • :checked
  • :hover
  • :focus
  • :disabled

Hier finden Sie beispielsweise, wie Sie unsere Umschalteingabe stylen, Knöpfe erstellen und berücksichtigen können :checked Status:

 /* Container schalten*/
.schalten {
  Breite: 38px;
  Border-Radius: 11px;
}

/* Schalterknopf*//
.switch :: nach {
  links: 2px;
  Top: 2px;
  Grenzradius: 50%;
  Breite: 15px;
  Höhe: 15px;
  Hintergrund: var (-ab, var (-Grenze));
  Transformation: Translatex (var (-x, 0));
}

/* Farbe und Position ändern, wenn er ausgewählt ist*/
.switch: überprüft {
  --ab: var (-aktiviner);
  --x: 17px;
}

/* Reduzieren Sie die Deckkraft des Kippknaufs, wenn der Eingang deaktiviert ist*/
.Switch: Deaktiviert: nicht (: überprüft) :: After {{
  Deckkraft: .6;
}

wir werden<input> Elemente werden als Behälter verwendet. Der Knopf im Eingang wird mit dem ::after Pseudoelement erstellt. Auch hier ist keine zusätzliche Markierung erforderlich!

Wenn Sie den Stil in der Demo öffnen, werden Sie feststellen, dass wir einige CSS -benutzerdefinierte Eigenschaften definieren, da dies eine großartige Möglichkeit geworden ist, wiederverwendbare Werte im Stylesheet zu verwalten:

 @Supports (-webkit-upearance: keine) oder (-moz-äqulearance: Keine) {
  input [type = 'checkbox'],
  input [type = 'radio'] {
    --aktiv: #275efe;
    --Active-Inner: #fff;
    -Fokus: 2px RGBA (39, 94, 254, .25);
    --größer: #BBC1E1;
    --Größen Sie: #275efe;
    -Background: #fff;
    -Behindert: #f6f8ff;
    -Innerhalb von Inner: #e1e6f9;
  }
}

Es gibt jedoch einen weiteren Grund, warum wir benutzerdefinierte Eigenschaften verwenden - sie sind sehr geeignet, um Werte basierend auf dem Status eines Elements zu aktualisieren! Wir werden hier nicht auf Details eingehen, aber das folgende Beispiel dafür ist ein Beispiel dafür, wie benutzerdefinierte Eigenschaften auf der Grundlage verschiedener Zustände verwendet werden.

 /* Standardwert*//
input [type = 'checkbox'],
input [type = 'radio'] {
  --aktiv: #275efe;
  --größer: #BBC1E1;
  Grenze: 1px Solid var (-BC, var (-Grenze));
}

/* Schreiben Sie den Standardwert*///
input [type = 'checkbox']: überprüft,
input [type = 'radio']: überprüft {
  --B: var (-aktiv);
  -BC: var (-aktiv);
}

/* Wenn nicht ausgewählt und nicht deaktiviert ist, wird eine andere Randfarbe angewendet, wenn sie schweben*/
input [type = 'checkbox']: nicht (: checked): nicht (: deaktiviert): schwebe,
input [type = 'radio']: nicht (: checked): nicht (: deaktiviert): hover {
  -BC: var (-Grenzhalter);
}

Für die Zugänglichkeit sollten wir benutzerdefinierte Fokusstile hinzufügen. Wir haben den Standard -Umriss entfernt, weil sie nicht wie der Rest des von uns festgelegten Stils abgerundet werden kann. box-shadow mit abgerundeten Ecken kann jedoch einen abgerundeten Eckstil erzeugen, der wie ein Umriss funktioniert.

 input [type = 'checkbox'],
input [type = 'radio'] {
  -Fokus: 2px RGBA (39, 94, 254, .25);
  Umriss: Keine;
  Übergang: Box-Shadow .2s;
}

input [type = 'CheckBox']: Fokus,
input [type = 'radio']: fokus {
  Box-Shadow: 0 0 0 var (-Fokus);
}

Sie können auch ausrichten und direkt einstellen, um in HTML zu folgen<input> Elementar<label></label> Elementstil:

 <label for="c1">Kontrollkästchen</label>
<input type="checkbox" id="c1">
input [type = 'checkbox'] label,
input [type = 'radio'] label {
  Anzeige: Inline-Block;
  vertikaler Align: Top;
  /* Andere Stile*///
}

input [type = 'checkbox']: deaktiviertes Beschriftung,
input [type = 'radio']: deaktiviertes label {
  Cursor: nicht verurteilt;
}

Zeigen Sie die Demo noch einmal:

Hoffentlich können Sie sehen, wie bequem es ist, heutzutage benutzerdefinierte Formularstile zu erstellen. Aufgrund von Pseudo-Elementen müssen weniger Aufschläge direkt in Form eines Formulareingangs erforderlich sind. Aufgrund kundenspezifischer Eigenschaften sind weniger Stilschalter erforderlich. Und dank @supports hat es ziemlich gute Browser -Unterstützung.

Alles in allem ist dies viel besser als die Entwicklungserfahrung, mit der wir uns in der Vergangenheit befassen mussten!

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Styling -Formulareingaben mit modernen CSS -Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Eine kleine Erinnerung daran, dass Pseudoelemente Kinder sind.Eine kleine Erinnerung daran, dass Pseudoelemente Kinder sind.Apr 19, 2025 am 11:39 AM

Hier ist ein Container mit einigen Kinderelementen:

Menüs mit 'dynamischen Trefferbereichen'Menüs mit 'dynamischen Trefferbereichen'Apr 19, 2025 am 11:37 AM

Flyout -Menüs! Das zweite, das Sie für ein Menü implementieren müssen, das ein Hover -Ereignis verwendet, um mehr Menüelemente anzuzeigen. Zum einen sollten sie

Verbesserung der Video -Zugänglichkeit mit WebVTTVerbesserung der Video -Zugänglichkeit mit WebVTTApr 19, 2025 am 11:27 AM

"Die Kraft des Web liegt in seiner Universalität. Zugang von allen unabhängig von Behinderung ist ein wesentlicher Aspekt."- Tim Berners-Lee

Wöchentliche Plattform News: CSS :: Marker Pseudo-Element, Vorrendern von Webkomponenten, Hinzufügen von Webmenting zu Ihrer WebsiteWöchentliche Plattform News: CSS :: Marker Pseudo-Element, Vorrendern von Webkomponenten, Hinzufügen von Webmenting zu Ihrer WebsiteApr 19, 2025 am 11:25 AM

In der Roundup:#039: DatePickers geben Tastaturbenutzer Kopfschmerzen, einen neuen Webkomponenten -Compiler, der bei der Bekämpfung von Fouc hilft.

Breite und flexible Gegenstände gut zusammen spielenBreite und flexible Gegenstände gut zusammen spielenApr 19, 2025 am 11:23 AM

Die kurze Antwort: Flex-Shrink und Flex-Basis sind wahrscheinlich das, worauf Sie suchen.

Positionieren Sie klebrige und TischkopfzeilePositionieren Sie klebrige und TischkopfzeileApr 19, 2025 am 11:21 AM

Sie können nicht positioniert werden: klebrig; A

Wöchentliche Plattformnachrichten: HTML -Inspektion in der Suchkonsole, globaler Umfang von Skripten, Babel Env fügt Standardabfrage hinzuWöchentliche Plattformnachrichten: HTML -Inspektion in der Suchkonsole, globaler Umfang von Skripten, Babel Env fügt Standardabfrage hinzuApr 19, 2025 am 11:18 AM

In der Welt der Web -Plattform -Nachrichten, in der die Google Search Console in der Welt der Web -Plattform -News -Such -Markup umgeht, lernen wir, dass benutzerdefinierte Eigenschaften einfacher werden können

IndieWeb und WebmentionsIndieWeb und WebmentionsApr 19, 2025 am 11:16 AM

Das IndieWeb ist eine Sache! Sie haben eine Konferenz und alles bekommen. Der New Yorker schreibt sogar darüber:

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung