Кратко
СкопированоЭти псевдоклассы используются для стилизации полей ввода, поддерживающих атрибуты min и max:
:inдля полей, в которых введённое значение попадает в диапазон от- range minдоmax;:outдля полей, в которых введённое значение не попадает в диапазон от- of - range minдоmax.
Пример
Скопировано
<input class="with-range" type="number" min="0" max="23" step="1">
<input class="with-range" type="number" min="0" max="23" step="1">
.with-range { border: 1px solid #FFFFFF;}.with-range:in-range { border-color: #41E847; background-color: rgb(65 232 71 / 20%);}.with-range:out-of-range { border-color: #FF8630; background-color: rgb(255 134 48 / 20%);}
.with-range {
border: 1px solid #FFFFFF;
}
.with-range:in-range {
border-color: #41E847;
background-color: rgb(65 232 71 / 20%);
}
.with-range:out-of-range {
border-color: #FF8630;
background-color: rgb(255 134 48 / 20%);
}
Как понять
СкопированоПоля ввода с типами date, month, week, time, datetime, number и range могут иметь атрибуты min и max. Эти атрибуты задают диапазон допустимых значений, которые пользователь может вводить в поле. В зависимости от того, попадает ли введённое значение в диапазон, будут применяться стили для псевдоклассов :in и :out.
Как пишется
Скопировано
input:in-range { color: rgb(0 255 0 / 20%);}input:out-of-range { color: rgb(255 0 0 / 20%);}
input:in-range {
color: rgb(0 255 0 / 20%);
}
input:out-of-range {
color: rgb(255 0 0 / 20%);
}
Подсказки
Скопировано💡 Если в поле не введено никакого значения, то срабатывает псевдокласс :in.
💡 Если атрибуты min и max не заданы, то при пустом поле сработает :in, а при введённом значении ни один из псевдоклассов не сработает.
💡 Если нужно, чтобы при пустом поле не срабатывал :in, можно расширить селектор псевдоклассом :placeholder:
На практике
Скопированосоветует
Скопировано🛠 Псевдоклассы :in и :out можно использовать в более сложных селекторах, чтобы, например, показать ошибку ввода.
.with-range:out-of-range + .validation-error { opacity: 1; visibility: visible;}
.with-range:out-of-range + .validation-error {
opacity: 1;
visibility: visible;
}