Estou tendo um inferno com este seletor CSS específico que não quer funcionar quando eu adiciono :not(:empty)a ele. Parece funcionar bem com qualquer combinação dos outros seletores:
input:not(:empty):not(:focus):invalid { border-color: #A22; box-shadow: none }
Se eu remover a :not(:empty)peça, funciona perfeitamente. Mesmo se eu mudar o seletor para input:not(:empty)ele ainda não selecionará os campos de entrada que têm texto digitado neles. Ele está quebrado ou não tenho permissão para usar :emptyem um :not()seletor?
A única outra coisa que consigo pensar é que os navegadores ainda estão dizendo que o elemento está vazio porque não tem filhos, apenas um "valor" por dizer. O :emptyseletor não tem funcionalidade separada para um elemento de entrada e um elemento regular? Isso não parece provável porque usar:empty em um campo e digitar algo nele fará com que os efeitos alternativos desapareçam (porque ele não está mais vazio).
Testado no Firefox 8 e Chrome.
:emptyseletor : "Alguns outros elementos, por outro lado, estão vazios (ou seja, não têm filhos) por definição: <input>, <img>, <br>, e <hr>, por exemplo."
:not(:empty), a borda vermelha funcionará conforme o esperado para uma entrada que não está em foco, mas é inválida.