Это возможно, с обычными предостережениями CSS и, если HTML-код может быть изменен. Если вы добавите required
атрибут к элементу, то элемент будет совпадать :invalid
или в :valid
зависимости от того, является ли значение элемента управления пустым или нет. Если элемент не имеет value
атрибута (или имеет value=""
), значение элемента управления изначально пусто и становится непустым, когда вводится какой-либо символ (даже пробел).
Пример:
<style>
#foo { background: yellow; }
#foo:valid { outline: solid blue 2px; }
#foo:invalid { outline: solid red 2px; }
</style>
<input id=foo required>
Псевдоклассифицируются :valid
и :invalid
определяются только в CSS-документах уровня рабочего проекта, но поддержка довольно широко распространена в браузерах, за исключением того, что в IE она шла с IE 10.
Если вы хотите сделать «пустыми» включаемые значения, состоящие только из пробелов, вы можете добавить атрибут pattern=.*\S.*
.
В настоящее время нет CSS-селектора для непосредственного определения, имеет ли элемент управления вводом непустое значение, поэтому нам нужно сделать это косвенно, как описано выше.
Как правило, CSS-селекторы ссылаются на разметку или, в некоторых случаях, на свойства элемента, заданные с помощью сценариев (клиентский JavaScript), а не на действия пользователя. Например, :empty
сопоставляет элемент с пустым содержимым в разметке; input
в этом смысле все элементы неизбежно пусты. Селектор [value=""]
проверяет, имеет ли элемент value
разметку и имеет ли пустую строку в качестве значения. И так :checked
и :indeterminate
есть схожие вещи. На них не влияет фактический пользовательский ввод.