Это возможно, с обычными предостережениями 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есть схожие вещи. На них не влияет фактический пользовательский ввод.