Spec-Zone.ru › CSS

:valid

Псевдокласс :valid CSS псевдокласс представляет любое поле <input> или другое поле <form>, содержимое которого успешно проходит валидацию. Это позволяет легко настроить вид валидных полей, помогая пользователю убедиться, что введённые данные отформатированы правильно.

Попробуйте

Этот псевдокласс полезен для выделения корректных полей для пользователя.

Синтаксис

:valid {
  /* ... */
}

Доступность

Зелёный цвет обычно используется для обозначения корректного ввода. Люди с определёнными типами дальтонизма не смогут определить состояние ввода, если оно не сопровождается дополнительным индикатором, не полагающимся на цвет для передачи смысла. Обычно используются описательный текст и/или значок.

  • MDN Понимание WCAG, объяснения к пункту 1.4
  • Понимание Критерия успеха 1.4.1 | W3C Понимание WCAG 2.0

Примеры

Отображение валидных и невалидных полей формы

В этом примере мы используем такие структуры, которые содержат дополнительные <span> для генерации контента; мы будем использовать их для предоставления индикаторов валидных/невалидных данных:

<div>
  <label for="fname">First name *: </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, чтобы иметь возможность позиционировать сгенерированный контент относительно них. Затем мы абсолютно позиционируем разный сгенерированный контент в зависимости от того, являются ли данные формы валидными или невалидными — зелёная галочка или красный крестик соответственно. Для добавления некоторой дополнительной наглядности к невалидным данным, мы также задали полям толстую красную границу при невалидности.

Примечание: Мы использовали ::before для добавления этих меток, так как уже использовали ::after для меток «обязательно».

Вы можете попробовать ниже:

Обратите внимание, как обязательные текстовые поля невалидны, когда пусты, но валидны, когда в них что-то введено. Поле для электронной почты, с другой стороны, валидно, когда пустое, так как оно необязательное, но невалидно, когда содержит что-то, что не является корректным адресом электронной почты.

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

Спецификация
Стандарт HTML
# selector-valid
Селекторы Level 4
# validity-pseudos

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
:valid 10 12 4 10 5 18 4 10.1 5 1.0 37
form 40 79 13 27 9 40 14 27 9 4.0 40

См. также

  • Другие псевдоклассы, связанные с валидацией: :required, :optional, :invalid
  • Валидация данных форм
  • Доступ к состоянию валидности из JavaScript

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/:valid

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API