See the CSS Selector Test for tests of and information about CSS3 selectors.
An earlier version of this page has been translated into Brazilian Portuguese.
The contents of my CSS pages and browser compatibility.
Quirks and Strict mode | How to trigger them, what the differences are. Contains compatibility table. |
CSS Hacks | Be very, very careful. |
Conditional comments | A generally reliable method for separating IE from all other browsers. |
CSS 2 selectors |
||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
---|---|---|---|---|---|---|---|---|---|---|
Selects all elements | Yes | Yes | Yes | Yes | Yes | |||||
Selects an element that is a child of another element | No | Yes | Yes | Yes | Yes | Yes | ||||
Selects an element that is a next sibling of another element | No | Static | Almost | Static | Yes | Static | Yes | Yes | ||
IE 7, Firefox 2 and Safari don't correctly update styles after elements have been added dynamically. IE8b1 does, but only after you remove the focus from the test link. |
||||||||||
Selects an element with a certain attribute | No | Yes | Yes | Yes | Yes | Yes | ||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
Whether an element can support two or more class names | Buggy | Yes | Yes | Yes | Yes | Yes | ||||
An element in a hovered (mouseover) or active (mousedown) state. | Minimal | Incom |
Yes | Yes | Yes | Almost | ||||
|
||||||||||
An element that is the first child of its parent | No | Static | Almost | Static | Yes | Static | Yes | Yes | Yes | |
IE7, Firefox 2 and Safari don't update the styles when elements are added dynamically. IE8b1 does, but only after you remove the focus from the test link. |
||||||||||
Form fields that receive user focus | No | Yes | Yes | Yes | Yes | Yes | ||||
CSS 2 declarations |
||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
No | Yes | Yes | Yes | Yes | Yes | |||||
To assign counters to headings or other elements. |
||||||||||
Change cursor style | Yes | Yes | Yes | Yes | Yes | |||||
Microsoft values don't count for overall browser compatibility. |
||||||||||
Incom |
Almost | Yes | Incom |
Yes | Yes | Yes | Yes | |||
Compatibility depends only on the values block, inline, none, inline-block, and list-item. |
||||||||||
Types, image, position | Incom |
Yes | Yes | Yes | Yes | |||||
IE7- doesn't support a few types. IE8b1 supports all types, but has problems with images. The test page also contains CSS 3 values. |
||||||||||
No | Minimal | Yes | Yes | Yes | Yes | Yes | ||||
IE 6 supports |
||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
A sort of border, but different | No | Yes | Yes | Yes | Yes | Yes | ||||
Incor |
Yes | Yes | Yes | Yes | Yes | |||||
IE 5/6 doesn't implement |
||||||||||
Incom |
Yes | Yes | Yes | Yes | Yes | |||||
IE 5/6 doesn't support position: fixed |
||||||||||
Incom |
Yes | Incom |
Incom |
Incom |
||||||
See page for detailed compatibility. | ||||||||||
empty-cells ,
border-collapse ,
border-spacing ,
table-layout ,
caption-side
|
Incom |
Almost | Yes | Yes | Yes | Yes | ||||
See page for detailed compatibility. |
||||||||||
To remove text wrapping or to make an element behave like a pre | No | Incom |
Yes | Incom |
Almost | Yes | Yes | Yes | ||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
CSS 3 selectors |
||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
---|---|---|---|---|---|---|---|---|---|---|
Selects an element that is a general next sibling of another element | No | Yes | Yes | Yes | Yes | Yes | ||||
Selects an element with an attribute whose value starts with, ends with, or contains a certain string. | No | Yes | Yes | Yes | Yes | Yes | ||||
The first line or first letter of an element | Yes | No | Yes | Almost | Almost | Almost | ||||
Safari, Opera, and Konqueror have slight problems with the dynamic test. |
||||||||||
To generate content before and after an element | No | Incom |
Yes | Yes | Yes | Yes | ||||
IE8b1 doesn't accept images as content. | ||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
Negation of a selector | No | Yes | Yes | Yes | Yes | |||||
The root element, or initial containing block. | No | Yes | Yes | Yes | Yes | |||||
Element that is a target of a hash (page.html#testHash )
|
No | Yes | Yes | Yes | Yes | |||||
For enabled, disabled, or checked form fields. | No | Yes | Yes | Yes | Yes | |||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
Empty elements | No | Static | Yes | Static | Yes | Static | Static | |||
Static: The browser does not update the styles when content
is added to an initially empty |
||||||||||
Text selected by the user. | No | -moz- | Yes | No | Yes | |||||
Special Mozilla syntax. | ||||||||||
An element that is the last child of its parent | No | Static | Yes | No | Yes | Static | Yes | |||
Firefox 2 and Opera don't update the styles when elements are added dynamically. |
||||||||||
An element that is the only child of its parent | No | Static | Yes | No | Yes | Static | Yes | |||
Firefox 2 and Opera don't update the styles when elements are added dynamically. |
||||||||||
Select elements according to a formula | No | No | No | Yes | Static | Yes | ||||
Opera doesn't update the styles correctly when elements are added dynamically. |
||||||||||
Allows you to define blocks of styles that only take effect on certain monitor sizes. | No | No | Static | Yes | No | |||||
Safari assigns the styles statically on page-load and doesn't update them. |
||||||||||
CSS 3 declarations |
||||||||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
on elements other than body | Incor |
Incom |
Incom |
Incom |
Incom |
Incor |
||||
|
||||||||||
How to define more than one background image on an element | No | No | Yes | No | Yes | |||||
No | -ms- | -moz- | Yes | -webkit- | Yes | Yes | ||||
Mozilla requires IE8 requires No browser supports |
||||||||||
Divide a box into several columns. | No | -moz- | -webkit- | No | No | |||||
for :before/:after
|
No | Incom |
Almost | Incom |
Almost | Almost | ||||
on any element, without reference to the :before/:after
pseudo-elements.
|
No | No | Incom |
Yes | Yes | |||||
filter | No | Yes | Yes | Yes | No | |||||
Standard syntax and Microsoft syntax. |
||||||||||
Allow the user to resize an element. | No | No | Yes | Incom |
No | No | ||||
Safari 3.1 doesn't allow you to resize the element to less than its original width, something that Safari 3.0 does allow. |
||||||||||
Breaks off text when it goes outside the box. | No | Yes | No | No | Yes | No | Buggy | |||
This property only makes sense when a box has Konqueror doesn't show the ellipsis characters. |
||||||||||
Create a text-shadow. | No | No | Yes | Yes | Yes | |||||
Selector | IE 5.5 | IE 6 | IE 7 | IE8b1 | FF 2 | FF 3b4 | Saf 3.0 Win | Saf 3.1 Win | Opera 9.5b | Konqueror 3.5.7 |
These test pages don't quite fit in the table above, or their browser compatibility is too slight:
clear: both
.background-size
with -webkit- and -o-).