Spec-Zone.ru › CSS

:invalid

Псевдокласс :invalid CSS псевдокласса представляет любой элемент <form>, <fieldset>, <input> или другой элемент <form>, содержимое которого не проходит валидацию.

Попробуйте

Этот псевдокласс полезен для выделения ошибок ввода для пользователя.

Синтаксис

:invalid {
  /* ... */
}

Доступность

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

  • MDN Understanding WCAG, Guideline 1.4 explanations
  • Understanding Success Criterion 1.4.1 | W3C Understanding WCAG 2.0

Примеры

Окрашивание элементов для отображения валидации

HTML

<form>
  <div class="field">
    <label for="url_input">Enter a URL:</label>
    <input type="url" id="url_input" />
  </div>

  <div class="field">
    <label for="email_input">Enter an email address:</label>
    <input type="email" id="email_input" required />
  </div>
</form>

CSS

label {
  display: block;
  margin: 1px;
  padding: 1px;
}

.field {
  margin: 1px;
  padding: 1px;
}

input:invalid {
  background-color: #ffdddd;
}

form:invalid {
  border: 5px solid #ffdddd;
}

input:valid {
  background-color: #ddffdd;
}

form:valid {
  border: 5px solid #ddffdd;
}

input:required {
  border-color: #800000;
  border-width: 3px;
}

input:required:invalid {
  border-color: #c00000;
}

Результат

Отображение разделов поэтапно

В этом примере мы используем :invalid вместе с ~, комбинатор последующего сиблинга, чтобы отобразить форму поэтапно, так что форма первоначально показывает первый элемент для заполнения, а когда пользователь заполняет каждый элемент, форма отображает следующий. Когда вся форма заполнена, пользователь может её отправить.

HTML

<form>
  <fieldset>
    <label for="form-name">Name</label><br />
    <input type="text" name="name" id="form-name" required />
  </fieldset>

  <fieldset>
    <label for="form-email">Email Address</label><br />
    <input type="email" name="email" id="form-email" required />
  </fieldset>

  <fieldset>
    <label for="form-message">Message</label><br />
    <textarea name="message" id="form-message" required></textarea>
  </fieldset>

  <button type="submit" name="send">Submit</button>
</form>

CSS

/* Hide the fieldset after an invalid fieldset */
fieldset:invalid ~ fieldset {
  display: none;
}

/* Dim and disable the button while the form is invalid */
form:invalid button {
  opacity: 0.3;
  pointer-events: none;
}

input,
textarea {
  box-sizing: border-box;
  width: 100%;
  font-family: monospace;
  padding: 0.25em 0.5em;
}

button {
  width: 100%;
  border: thin solid darkgrey;
  font-size: 1.25em;
  background-color: darkgrey;
  color: white;
}

Результат

Примечания

Радиокнопки

Если любая из радиокнопок в группе required, псевдокласс :invalid применяется ко всем им, если ни одна из кнопок в группе не выбрана. (Группированные радиокнопки используют одно и то же значение для атрибута name.)

Значения по умолчанию Gecko

По умолчанию Gecko не применяет стиль к псевдоклассу :invalid. Однако он применяет стиль (красное «свечение» с использованием свойства box-shadow) к псевдоклассу :user-invalid, который применяется в подмножестве случаев для :invalid.

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

Спецификация
Стандарт HTML
# selector-invalid
CSS Selectors Level 4
# validity-pseudos

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

Рабочий стол Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android
:invalid 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, :valid
  • Связанные псевдоклассы Mozilla: :user-invalid, :-moz-submit-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/:invalid

Spec-Zone.ru

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