:not and :empty

Supported by Mozilla.

Safari supports not but interprets div:empty as div.

On this page I describe two Mozilla proprietary pseudo-classes.


The :not pseudo-class serves to negate part of a selector.

p.test *:not(code) {text-decoration: underline;}

This is the paragraph with class="test". I added a span for good measure. All HTML elements inside this paragraph are underlined (p.test *), but not the code elements (:not(code)).

The :not syntax is certain to be tricky. I wrote the example on this page, but I have no idea how to write more complex selectors. This pseudo-class needs more study.

I could have left out the * but included it anyway to make the code example clearer.


The :empty pseudo-class selects empty elements, elements without any content.

div:empty {background-color: #000000;
	color: #ffffff;}

Above this paragraph you see (or don't see) an empty div. I gave it a height so you can see its background color (or lack thereof).

The first div on the page gets a black background, too, and that's far more interesting. Initially it is empty, but onload, after the style assignments, I generate its content (last modified info and a link to my frameset when you're outside it).

So :empty could be used to select elements exclusively filled with generated content.