:in-range, :out-of-range

Время чтения: меньше 5 мин

Кратко

Секция статьи "Кратко"

Эти псевдоклассы используются для стилизации полей ввода, поддерживающих атрибуты min и max:

  • :in-range для полей, в которых введённое значение попадает в диапазон от min до max;
  • :out-of-range для полей, в которых введённое значение не попадает в диапазон от min до max.

Пример

Секция статьи "Пример"
        
          
          <input class="with-range" type="number" min="10" max="20" step="1">
          <input class="with-range" type="number" min="10" max="20" step="1">

        
        
          
        
      
        
          
          .with-range {  border: 1px solid black;}.with-range:in-range {  border-color: green;  background-color: rgb(0 255 0 / 20%);}.with-range:out-of-range {  border-color: red;  background-color: rgb(255 0 0 / 20%);}
          .with-range {
  border: 1px solid black;
}

.with-range:in-range {
  border-color: green;
  background-color: rgb(0 255 0 / 20%);
}

.with-range:out-of-range {
  border-color: red;
  background-color: rgb(255 0 0 / 20%);
}

        
        
          
        
      
Открыть демо в новой вкладке

Как это понять

Секция статьи "Как это понять"

Поля ввода с типами date, month, week, time, datetime-local, number и range могут иметь атрибуты min и max. Эти атрибуты задают диапазон допустимых значений, которые пользователь может вводить в поле. В зависимости от того, попадает ли введённое значение в диапазон, будут применяться стили для псевдоклассов :in-range и :out-of-range.

Как пишется

Секция статьи "Как пишется"
        
          
          input:in-range + span {  color: rgb(0 255 0 / 20%);}input:out-of-range + span {  color: rgb(255 0 0 / 20%);}
          input:in-range + span {
  color: rgb(0 255 0 / 20%);
}

input:out-of-range + span {
  color: rgb(255 0 0 / 20%);
}

        
        
          
        
      

Подсказки

Секция статьи "Подсказки"

💡 Если в поле не введено никакого значения, то срабатывает псевдокласс :in-range.

💡 Если атрибуты min и max не заданы, то при пустом поле сработает :in-range, а при введённом значении ни один из псевдоклассов не сработает.

💡 Если нужно, чтобы при пустом поле не срабатывал :in-range, можно расширить селектор псевдоклассом :placeholder-shown и задать подсказку полю ввода:

Открыть демо в новой вкладке

На практике

Секция статьи "На практике"