:valid
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die :valid
CSS Pseudoklasse repräsentiert jedes <input>
oder anderes <form>
-Element, dessen Inhalt erfolgreich validiert wird. Dies ermöglicht es, gültige Felder leicht mit einem Aussehen zu versehen, das dem Benutzer hilft zu bestätigen, dass ihre Daten korrekt formatiert sind.
Probieren Sie es aus
label {
display: block;
margin-top: 1em;
}
input:valid {
background-color: ivory;
border: none;
outline: 2px solid deepskyblue;
border-radius: 5px;
accent-color: gold;
}
<form>
<label for="email">Email Address:</label>
<input id="email" name="email" type="email" value="na@me@example.com" />
<label for="secret">Secret Code: (lower case letters)</label>
<input id="secret" name="secret" type="text" value="test" pattern="[a-z]+" />
<label for="age">Your age: (18+)</label>
<input id="age" name="age" type="number" value="5" min="18" />
<label
><input name="tos" type="checkbox" required checked /> - Do you agree to
ToS?</label
>
</form>
Diese Pseudoklasse ist nützlich, um korrekte Felder für den Benutzer hervorzuheben.
Syntax
:valid {
/* ... */
}
Barrierefreiheit
Die Farbe Grün wird häufig verwendet, um gültige Eingaben anzuzeigen. Personen mit bestimmten Arten von Farbenblindheit werden den Status der Eingabe nicht bestimmen können, es sei denn, es wird von einem zusätzlichen Indikator begleitet, der nicht von Farbe abhängt, um Bedeutung zu vermitteln. Typischerweise werden beschreibender Text und/oder ein Symbol verwendet.
Beispiele
Anzeige von gültigen und ungültigen Formularfeldern
In diesem Beispiel verwenden wir Strukturen wie diese, die zusätzliche <span>
s enthalten, um Inhalte zu generieren; wir werden diese verwenden, um Indikatoren für gültige/ungültige Daten bereitzustellen:
<div>
<label for="fname">First name *: </label>
<input id="fname" name="fname" type="text" required />
<span></span>
</div>
Um diese Indikatoren bereitzustellen, verwenden wir folgendes CSS:
input + span {
position: relative;
}
input + span::before {
position: absolute;
right: -20px;
top: 5px;
}
input:invalid {
border: 2px solid red;
}
input:invalid + span::before {
content: "✖";
color: red;
}
input:valid + span::before {
content: "✓";
color: green;
}
Wir setzen die <span>
s auf position: relative
, damit wir den generierten Inhalt relativ zu ihnen positionieren können. Wir positionieren dann absolut unterschiedliche generierte Inhalte, abhängig davon, ob die Formulardaten gültig oder ungültig sind — ein grüner Haken oder ein rotes Kreuz. Um der ungültigen Datenangabe etwas Dringlichkeit zu verleihen, haben wir den Eingaben auch einen dicken roten Rahmen gegeben, wenn sie ungültig sind.
Hinweis:
Wir haben ::before
verwendet, um diese Labels hinzuzufügen, da wir ::after
bereits für die "erforderlich"-Labels verwenden.
Sie können es unten ausprobieren:
Beachten Sie, wie die erforderlichen Texteingaben ungültig sind, wenn sie leer sind, aber gültig, wenn etwas eingegeben wurde. Das E-Mail-Eingabefeld hingegen ist gültig, wenn es leer ist, da es nicht erforderlich ist, aber ungültig, wenn es etwas enthält, das keine korrekte E-Mail-Adresse ist.
Spezifikationen
Specification |
---|
HTML # selector-valid |
Selectors Level 4 # valid-pseudo |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Andere validierungsbezogene Pseudoklassen:
:required
,:optional
,:invalid
- Formulardatenvalidierung
- Zugriff auf den Gültigkeitsstatus von JavaScript aus