:empty - CSS : Feuilles de style en cascade | MDN

C’est tellement pratique ça !

Par exemple, je mets un <div id="error"></div> sur ma page, et si y a une erreur, JS/AJAX met l’erreur dedans. Si y a pas d’erreur, le nœud reste vide.

Ben suffit de faire ça :
#error { background: red }
#error:empty { display: none;}

Pas d’erreur ? Le nœud est vide, il est caché.
Une erreur ? Le nœud n’est pas vide, il s’affiche.

Pas besoin de s’emmerder à ajouter du JS pour faire des if/else, ni d’ajouter une classe, ni d’ajouter un nœud dynamiquement ou de le virer en cas d’absence d’erreur.

Si le code est conçu correctement, une erreur vide c’est une chaîne vide, et donc le :empty reste valable.

Vraiment, en plus de grid/flex (qui sont des grosses nouveautés du CSS), ce genre de petits truc est sympa aussi.

Même remarque pour le ":placeholder-shown" (sur un input/textarea). Il permet de contourner le "bug" qui fait qu’on peut pas utiliser de « input[value=""] » car la valeur détectée par CSS est celle de la source HTML, pas celle du DOM, et ajouter du texte dans un champ ne déclenche pas ce sélecteur CSS.

Et bien d’autres…