The following tables compare CSS compatibility and support for a number of layout engines. Please see the individual products' articles for further information. This article is not all-inclusive or necessarily up-to-date. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.
Values indicate the level of support in the most recent version of the layout engine, or (if a version number is given) in the specified version. Version numbers without any other value indicate the version at which the layout engine first fully supported the feature.
Value
Meaning
Yes
Indicates that the layout engine fully supports this property/element when valid values are used.
No
Indicates that the property/element is completely ignored.
Partial
Indicates that the property/element is understood, but that not all values are supported. Supported values are implemented correctly.
Incorrect
Indicates that the property/element is understood, but that it is not implemented correctly in all cases.
Experimental
Indicates that the property/element is understood, but supported under an alternate name. May be incomplete or buggy.
Dropped
Indicates that the property/element is no longer supported.
This article is incomplete and may require expansion or cleanup. Please help to improve the article, or discuss the issue on the talk page.
See the article Cascading Style Sheets for more information on the different versions of CSS. This table doesn't reference CSS2.0, as CSS2.1 was intended to replace it by correcting or removing a few errors and features rejected by the CSS community. Most of the removed CSS2 features will be made obsolete by CSS3.
!important — In 8.0, rules with !important are ignored inside :first-line and :first-letter declarations. See Bug 478138 on Connect.
!important — Prior to 7.0, !important doesn't override rules defined later in the same declaration block.
@import — Limited to 35 imported stylesheets, after that, rules stops applying.
@import — Prior to 8.0, media type support is broken. For @import <URL> <MEDIA>, IE requests as the URL "<URL> <MEDIA>" and will include url() and/or quotes in the URL, too, if present.
@font-face — Only supports Embedded OpenType (.eot) font format, does not understand the format() identifier.
Tasman grammar and rule notes
@font-face — Versions 5.16 and 5.17 will download fonts specified but not use them. 5.23 no longer downloads the font.
Presto grammar and rule notes
@import — Whilst Gecko, WebKit and iCab download all media stylesheets immediately, Opera only downloads handheld, print, projection and screen media, as well as speech if "voice" feature is enabled and tv, on tv devices. Text browser emulation mode is only a user stylesheet, so it does not switch to tty media type. This is consistent with older text browsers, which do not respect any CSS.
:read-only and :read-write — Both Presto and KHTML handles the case of the contenteditable attribute incorrectly.
Trident selector notes
:active — In 8.0, the behaviour will not work if a child element is active and the actual element isn't.
:active — Prior to 8.0, :active is only supported on anchor elements.
:hover — Prior to 7.0, :hover is only supported on anchor elements.
.one.two — Prior to 7.0, only .two class selector was taken into consideration.
* — Prior to 7.0 this was treated as a single or no element.
[attr] — Matches every td and th in a table when the attribute is colspan (regardless of whether any actually have a colspan attribute). This may not actually be a bug, as ambiguity exists in the specification.
:first-letter — In 6.0, combining :first-letter rules with others may be problematic.
Tasman selector notes
:hover — For anchor element only prior to 0.9.
.one.two — only .two class selector is taken into consideration.
Gecko selector notes
(:):before, (:):after — CSS2.0 behavior : some properties are unimplemented prior to 1.9.1. See Bug 237119 on Bugzilla.
WebKit selector notes
:lang() — Only detected when explicitly present on element being tested, attribute not inherited.
(:):first-line — text-transform doesn't apply with this pseudo-element. See Bug 3409 on Bugzilla.
Presto selector notes
:target — Style doesn't get applied when navigating using back and forward buttons.
z-index — Negatives values are badly supported prior to 1.9.
quotes — Does not support nested quotes prior to 1.8.
content — none value is unsupported prior to 1.9.
background-position — Versions prior to 1.7 implement the CSS2 syntax, not the proposed CSS2.1 expanded syntax.
font-size-adjust — Prior to 1.9, supported on Windows only.
font-weight — Only Regular and Bold weights get used, even if Light or Heavy/Black faces are installed.
white-space — pre-line is not supported prior to 1.9.1. Prior to 1.9, pre-wrap was only supported experimentally as -moz-pre-wrap.
visibility — collapse is unsupported prior to 1.8.
border-radius — Prior to 1.9.1, border curves are circular, not elliptical as specified by the current CSS3 draft. Short-cut definitions for border-radius read "tl tr br bl" instead of the W3C's "tr br bl tl". When the border style is dotted or dashed, curves are rendered as solid instead.
page-break-before; page-break-after — Only the always and auto values are supported.
WebKit property notes
font — The system font keywords that allow designers to tailor presentation to the user's operating system environment are unsupported.
font-weight — Only Regular and Bold weights get used, even if Light or Heavy/Black faces are installed.
page-break-before; page-break-after — Only the always and auto values are supported.
text-decoration — Optional property blink is unsupported.
white-space — pre-line and pre-wrap are unsupported.
visibility — collapse is unsupported prior to 522. Its implementation has the same effect as hidden and is therefore not compliant.
content — The none, open-quote, close-quote, no-open-quote, no-close-quote and normal values is unsupported.
font-size — The font-size property does not always accept the value 0, in "font-size: 0px" the text is still visible.
KHTML property notes
overflow — Values scroll and auto are unsupported.
page-break-before; page-break-after — Before 3.5 only the always and auto values were supported.
text-decoration — Optional property blink is not supported.
visibility — All properties are supported, but the implementation of collapse has the same effect as hidden and is therefore not compliant.
Presto property notes
counter-increment, counter-reset — Implemented the algorithm in REC CSS2.
background-position — Presto versions prior to Opera 8.0 implement the CSS2 syntax, not the proposed CSS2.1 expanded syntax.
font-weight — Incorrect rendering when value is 600. Renders the text in a compatibility mode for websites made for Trident.
visibility — collapse is unsupported in table columns. On rows, it has the same effect as hidden and is therefore not compliant.
cursor — cursor is ignored with dynamic pseudo-classes and custom cursors are unsupported.
content — The none value is unsupported.
font — inherit should not be allowed together with a font-size value. This should not be parsed, but it's currently done in Opera.
iCab property notes
display — run-in is not supported.
text-align — justify is not supported.
font-stretch — Simulated using letter-spacing property.
font-weight — Incorrect (bold) rendering when value is 500.
visibility — collapse only partial.
caption-side — top and bottom only which would comply with the proposed CSS2.1 elimination of the values: left and right.
empty-cells — Compresses hidden rows but does not hide them completely.
CSS1 introduced the ‘transparent’ value for the background-color property. CSS2 allowed border-color to also accept the ‘transparent’ value. The Open eBook(tm) Publication Structure 1.0.1 [OEB101] extended the ‘color’ property to also accept the ‘transparent’ keyword. CSS3 extends the color value to include the ‘transparent’ keyword to allow its use with all properties that accept a <color> value. This simplifies the definition of those properties in CSS3.
<angle> — The turn unit is unsupported.
Trident value and unit notes
rect() — Prior to 8.0, rect() was not supported with the correct syntax using commas.
auto — In quirks mode (IE5 emulation mode), auto does not work for margins, except table elements.
transparent — Using transparent in the color property will render the text as black.
transparent — Prior to 7.0, transparent is not supported on borders (shows as solid black) and is ignored on PNG images.
Gecko value and unit notes
<ch> — Prior to version 1.9.1, uses the width of the "M" glyph instead of the width of the "0" glyph.
transparent — Keyword is ignored when used with the outline-color property. Prior to version 2.2, it was also ignored when used with the color and text-shadow properties.
-moz- — All experimental selectors, properties and values are prefixed with "-moz-", e.g. ::-moz-selection instead of ::selection.
Trident general notes
-ms- — All experimental properties are prefixed with "-ms-", e.g. -ms-interpolation-mode instead of interpolation-mode.
WebKit general notes
-webkit- — All experimental selectors, properties and values are prefixed with "-webkit-", e.g. -webkit-box-shadow instead of box-shadow.
KHTML general notes
-khtml- — All experimental selectors, properties and values are prefixed with "-khtml-", e.g. -khtml-opacity instead of opacity.
Presto general notes
-xv- — All new selectors, properties and values introduced by CSS3 Speech Module are prefixed with "-xv-" (but not found in CSS2 aural style sheets), e.g. -xv-voice-rate instead of voice-rate.
-o- — All experimental properties are prefixed with "-o-", e.g. -o-transition-property instead of transition-property.
The DOM properties corresponding to vendor-specific experimental CSS properties are prefixed with the vendor-prefix, without any hyphens, and with first letter capitalised, e.g. element.style.MozBorderRadius corresponding to the -moz-border-radius property, or element.style.OTransform corresponding to the -o-transform property.