:valid

Псевдоклас CSS :valid (дійсне, валідне, допустиме) представляє всі елементи <input> та інші елементи форми, чий вміст успішно проходить валідацію. Це дає змогу легко змусити дійсні поля приймати зовнішній вигляд, який допомагає користувачам перевіряти, що введені ними дані мають коректний формат.

Спробуйте його в дії

Цей псевдоклас корисний для виділення коректно заповнених полів для користувачів.

Синтаксис

:valid {
  /* ... */
}

Доступність

Зелений колір заведено використовувати для позначення дійсних полів. Люди, що мають якогось роду колірну сліпоту, не зможуть з'ясувати стан поля, якщо вкупі з кольором не використовується додатковий індикатор, що не покладається на колір для донесення сповіщення. Зазвичай використовується описовий текст чи піктограма.

Приклади

Позначення дійсних і недійсних полів форми

У цьому прикладі використовуються подібні структури, що вміщають додаткові елементи <span> для генерації в них вмісту; тут вони для сповіщення про дійсні чи недійсні дані:

<div>
  <label for="fname">Особове ім'я *: </label>
  <input id="fname" name="fname" type="text" required />
  <span></span>
</div>

Щоб надати це сповіщення, використовується наступний 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;
}

Елементам <span> задається position: relative, щоб можна було розташувати відносно них згенерований вміст. Потім абсолютно розташовується різний згенерований вміст, залежний від того, чи є дані форми дійсними, чи недійсними: зелена галочка чи червоний хрест, відповідно. Щоб додати трохи терміновості до недійсних даних, іще полям додано грубу червону межу, коли вони недійсні.

[!NOTE] Щоб додати ці підписи, вжито ::before, оскільки ::after вже використовується для підписів "required".

Приклад можна спробувати нижче:

Зверніть увагу на те, що обов'язкові текстові поля є недійсними, поки порожні, але дійсними, коли в них щось уведено. Поле електронної пошти, з іншого боку, є дійсним, коли порожнє, оскільки не є обов'язковим, але недійсним, коли містить щось, що не є коректною адресою електронної пошти.

Специфікації

Сумісність із браузерами

desktop mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet
:valid
Chrome Full support 10
Edge Full support 12
Firefox Full support 4
Internet Explorer Full support 10
Opera Full support 10
Safari Full support 5
WebView Android Full support 37
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 5
Samsung Internet Full support 1.0
Applies to <form> elements
Chrome Full support 40
Edge Full support 79
Firefox Full support 13
Internet Explorer No support Ні
Opera Full support 27
Safari Full support 9
WebView Android Full support 40
Chrome Android Full support 40
Firefox for Android Full support 14
Opera Android Full support 27
Safari on iOS Full support 9
Samsung Internet Full support 4.0

Дивіться також