Mi sto divertendo moltissimo con questo particolare selettore CSS che non vuole funzionare quando aggiungo :not(:empty)ad esso. Sembra funzionare bene con qualsiasi combinazione degli altri selettori:
input:not(:empty):not(:focus):invalid { border-color: #A22; box-shadow: none }
Se rimuovo la :not(:empty)parte, funziona perfettamente. Anche se cambio il selettore in input:not(:empty)esso, non selezionerò ancora i campi di input in cui è stato digitato del testo. È rotto o non sono autorizzato a usarlo :emptyall'interno di un :not()selettore?
L'unica altra cosa a cui riesco a pensare è che i browser continuano a dire che l'elemento è vuoto perché non ha figli, solo un "valore" per dire. Il :emptyselettore non ha funzionalità separate per un elemento di input rispetto a un elemento normale? Questo non sembra probabile però perché usare :emptysu un campo e digitare qualcosa al suo interno farà scomparire gli effetti alternativi (perché non è più vuoto).
Testato in Firefox 8 e Chrome.
:emptyselettore di : "Alcuni altri elementi, d'altra parte, sono vuoto (cioè non hanno figli) per definizione: <input>, <img>, <br>, e <hr>, per esempio."
:not(:empty), il bordo rosso funziona come previsto per un input che non è a fuoco ma non è valido.