CSS contents and browser compatibility

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.

Table of Contents

How to trigger them, what the differences are. Contains compatibility table.
Be very, very careful.
A generally reliable method for separating IE from all other browsers.

CSS 2.1

Specification.

CSS 2 selectors

Selector IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.51 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. IE8b2 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
 
Whether an element can support two or more class names Buggy Yes Yes Yes Yes Yes
 
Selector IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.51 Konqueror 3.5.7
To generate content before and after an element No Yes Yes Yes Yes Yes
An element in a hovered (mouseover) or active (mousedown) state. Minimal Incomplete Yes Yes Incomplete Yes Almost
  • IE 5/6 supports both only on links. IE 7/8 supports :hover, but not :active, on all elements.
  • Konqueror removes the :active styles almost immediately.
  • These pseudo-classes are hard to test on the iPhone. Clicking on the test link gives it the hover styles; until you click on another link. (This is consistent with the mouseover/out implementation of the iPhone.) The active styles aren’t supported.
An element that is the first child of its parent No Static Almost Static Yes Static Yes Static 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 Buggy Yes Yes
  • Safari iPhone doesn’t allow you to type in text in the last form field. The other two work fine.

CSS 2 declarations

Selector IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.51 Konqueror 3.5.7
for :before/:after No Almost Incomplete Almost Incomplete Almost Almost
 
No Yes Yes Yes Yes Yes

To assign counters to headings or other elements.

Change cursor style Yes Yes Yes Untestable Yes Yes

Microsoft values don’t count for overall browser compatibility.

  • An iPhone does not have a cursor.
Incomplete Almost Yes Incomplete Yes Yes Yes Yes

Compatibility depends only on the values block, inline, none, inline-block, and list-item.

Types, image, position Incomplete Yes Yes Yes Yes Yes

IE7- doesn’t support a few types.

The test page also contains CSS 3 values.

No Minimal Yes Yes Yes Yes Yes

IE 6 supports min-height on TD’s only.

Selector IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.51 Konqueror 3.5.7
A sort of border, but different No Yes Yes Yes Yes Yes
Incorrect Yes Yes Yes Yes Yes
  • IE 5/6 doesn’t implement overflow: visible correctly.
Incomplete Yes Buggy Yes Yes Incomplete Yes Yes

IE 5/6 and Safari iPhone don’t support position: fixed

  • IE8b2 hides the green layer when you select absolute or fixed.
Incomplete Yes Yes Incomplete Incomplete Incomplete
See page for detailed compatibility.
empty-cells, border-collapse, border-spacing, table-layout, caption-side Incomplete Yes Yes Yes Yes Yes

See page for detailed compatibility.

To remove text wrapping or to make an element behave like a pre No Incomplete Yes Incomplete Almost Yes Yes Yes
Selector IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.51 Konqueror 3.5.7

CSS 3

Specifications.

Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G 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 Yes Almost Yes Almost

Safari and Konqueror have slight problems with the dynamic test.

Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G 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 Incomplete Yes
  • Opera doesn’t react to the Back and Forward buttons: the element doesn’t apply or remove the pseudo-class at all.
For enabled, disabled, or checked form fields. No Yes Yes Yes Yes
Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.5b Konqueror 3.5.7
Empty elements No Static Yes Static Yes Incomplete Yes Static

Static: The browser does not update the styles when content is added to an initially empty <div>.

  • Safari iPhone correctly removes the :empty styles when content is added but does not re-apply them when the content is removed.
An element that is the last child of its parent No Static Yes No Yes Static Yes Yes

Firefox 2 doesn’t update the styles when elements are added dynamically.

An element that is the only child of its parent No Static Yes No Yes Yes Yes

Firefox 2 doesn’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.

Text selected by the user. No -moz- Yes Untestable Yes Yes
Special Mozilla syntax.
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

Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.5b Konqueror 3.5.7
on elements other than body Incorrect Incomplete Incomplete Incomplete No Incomplete Incorrect

scroll and fixed are CSS 2 values, but local is a CSS 3 value. It’s vital, so I’m testing CSS 3 compatibility here.

  • Safari iPhone supports only scroll.
How to define more than one background image on an element No No Yes No Yes
 
No Yes -moz- Yes -webkit- Yes Yes

Mozilla requires -moz-box-sizing and supports an additional value. Safari 3.1+ -webkit-box-sizing.

No browser supports box-sizing in combination with min- or max- width or height.

  • Safari iPhone gives the border-box a smaller font size. This is a bug.
Divide a box into several columns. No -moz- -webkit- No No
 
Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.5b Konqueror 3.5.7
on any element, without reference to the :before/:after pseudo-elements. No No Incomplete Yes Yes
 
filter No Yes Yes Yes No

Standard syntax and Microsoft syntax.

Allow the user to resize an element. No No Yes Incomplete No 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 white-space: nowrap and an overflow other than visible.

Konqueror doesn’t show the ellipsis characters.

Create a text-shadow. No No Yes Yes Yes
 
Value IE 5.5 IE 6 IE 7 IE8b2 FF 2 FF 3b4 Saf 3.0 Win Saf 3.1 Win iPhone 3G Opera 9.5b Konqueror 3.5.7

Other test pages

These test pages don’t quite fit in the table above, or their browser compatibility is too slight:

  1. Clearing floats without clear: both.
  2. Scrollbar colours (MS extension).
  3. Backgrounds; a complete test of the CSS3 spec (nothing’s supported yet, except background-size with -webkit- and -o-).
  4. Grids (CSS3 advanced layout); not supported yet.