Я переживаю час із цим конкретним селектором CSS, який не хоче працювати, коли я додаю :not(:empty)до нього. Здається, це чудово працює з будь-якою комбінацією інших селекторів:
input:not(:empty):not(:focus):invalid { border-color: #A22; box-shadow: none }
Якщо я видалю :not(:empty)деталь, вона працює чудово. Навіть якщо я змінив на нього селектор, input:not(:empty)він все одно не буде вибирати поля введення, в які введено текст. Це не працює або мені просто заборонено користуватися :emptyв :not()селекторі?
Єдине, що я можу придумати, - це те, що браузери все ще кажуть, що елемент порожній, тому що в ньому немає дочірніх елементів, а лише "значення" на слово. Чи :emptyне має селектор окремих функціональних можливостей для вхідного елемента порівняно зі звичайним елементом? Однак це не здається ймовірним, оскільки використання :emptyполя та введення в нього чогось призведе до того, що альтернативні ефекти зникнуть (оскільки воно більше не порожнє).
Перевірено у Firefox 8 та Chrome.