Comparison of layout engines (CSS)

From Wikipedia, the free encyclopedia

CSS

Cascading Style Sheets
Comparison of layout engines (CSS)
CSS framework
CSS Zen Garden
CSSTidy
Tableless web design

 This box: view  talk  edit 

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.

[edit] Explanation of the tables

[edit] Engine nomenclature

Rather than the names of web browsers, the names of the underlying engines are used. The browsers that use the various engines are listed below.

Layout Engine Used By
Trident Internet Explorer 4 to Internet Explorer 8
Tasman Internet Explorer 5 for Mac
Gecko All Mozilla software, including Firefox; Galeon; Flock; also Epiphany
WebKit Safari; iCab 4; Epiphany;
KHTML Konqueror
Presto Opera; Nintendo DS Browser; Internet Channel
iCab iCab 1-3
Prince XML Prince XML
Amaya Amaya

[edit] Values

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 when valid values are used.
No Indicates that this property is completely ignored.
Partial Indicates that the property is understood, but that not all values are supported. Supported values are implemented correctly.
Incorrect Indicates that the property is understood, but that it is not implemented correctly in all cases.
Experimental Indicates that the property is provided in experimental form under an alternative name, generally with only partial functionality.

[edit] CSS version support

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.

Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML
CSS1 6.0 0 1.0 85 Yes 7.0 Yes 1.0
CSS2.1 Mostly Partial Mostly Mostly Mostly Mostly Mostly Mostly
CSS3 Slight No Slight Slight Slight Partial Slight Partial

[edit] Grammar and rules

Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML
CSS2 !important Weight increasing 7.0 0 1.0 85 Yes 7.0 Yes Yes
/*Comment*/ Comments 3.0 0 1.0 85 Yes 7.0 Yes Yes
@import Import stylesheet 4.0 0 1.0 Yes Yes 7.0 Yes 2.1
@charset Character set 5.5  ? 1.0 0 No 7.0 Yes Yes
@media Media-specific rules 5.5 0.9 1.0 Yes Yes 7.0 3.0 5.1
@page For paged media 5.5 No No [1] No No 7.0 No 6.0
CSS3 @namespace Namespace declaration No No 1.0 Yes Yes 8.0 No 5.0
@font-face Define font 5.5 No No [2] 525 No No No 6.0

[edit] Trident grammar and rule notes

  1. !important — !important doesn't override rules defined later in the same declaration block prior to IE7.
  2. @import — Media type support is broken in all versions including IE7. For @import exampleurl examplemedia; IE requests the url exampleurl%20examplemedia and will include url() and/or quotes in the url, too, if present in the @import rule.
  3. @font-face — Only supports Embedded OpenType (.eot) font format, does not understand the format() identifier.

[edit] Tasman grammar and rule notes

  1. @font-face — Versions 5.16 and 5.17 will download fonts specified but not use them. 5.23 no longer downloads the font.

[edit] Presto grammar and rule notes

  1. @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.

[edit] Selectors

Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML
Element selectors
CSS2 * Universal 7.0 0 1.0 85 Yes 7.0 3.0 Yes
E Element 4.0 0 1.0 85 Yes 7.0 Yes Yes
E.class Class 7.0 Incorrect 1.0 85 Yes 7.0 Yes Yes
E#id ID 4.0 0 1.0 85 Yes 7.0 Yes Yes
CSS3 ns|E Namespaced No No 1.0 No Yes 8.0 No  ?
Relationship selectors
CSS2 E F Descendant 4.0 0 1.0 85 Yes 7.0 Yes Yes
E > F Child 7.0 0 1.0 85 Yes 7.0 3.0 Yes
E + F Direct adjacent 7.0 0 1.0 85 Yes 7.0 3.0 Yes
CSS3 E ~ F Indirect adjacent 7.0 0.9 1.7 412 3.3.2 9.0 3.0  ?
Attribute selectors
CSS2 E[attr] Has 7.0 0.9 1.0 85 Yes 7.0 3.0 Yes
E[attr="value"] Equals 7.0 0.9 1.0 Yes Yes 7.0 3.0 Yes
E[attr~="value"] Contains (space-separated) 7.0 0.9 1.0 Yes Yes 7.0 3.0 Yes
E[attr|="value"] Contains (hyphen-separated) 7.0 0.9 1.0 Yes Yes 7.0 3.0 Yes
CSS3 E[attr^="value"] Begins with 7.0 No 1.0 Yes 3.4 8.02 3.0  ?
E[attr$="value"] Ends with 7.0 No 1.0 Yes 3.4 9.0 3.0  ?
E[attr*="value"] Contains substring 7.0 No 1.0 Yes 3.4 9.0 3.0  ?
E[ns|attr] Namespaced No No 1.0 No 3.4 9.0 No  ?
Pseudo-classes
CSS2 E:link Unvisited hyperlink 3.0 0 1.0 85 Yes 7.0 Yes 6.0
E:visited Visited hyperlink 3.0 0 1.0 85 Yes 7.0 Yes Yes
E:active Active Partial 0 1.0 85 Yes 7.0 Yes Yes
E:hover Mouseover 7.0 0.9 1.0 419.3 Yes 7.0 3.0 Yes
E:focus Focused 8.0 0 1.0 Yes Yes 7.0 Yes Yes
E:first-child First child 7.0 0 1.0 85 Yes 7.0 3.0 Yes
E:lang() Language 8.0 0 1.2 525 3.4 7.5 3.0 Yes
CSS3 E:root Root No 0.1 1.0 85 3.4 9.5a No  ?
E:first-of-type First child of type No 0.9 1.9.1 525 3.4 9.5a No  ?
E:last-child Last child No 0.9 1.0 Incorrect 3.4 9.5a No  ?
E:last-of-type Last child of type No 0.9 1.9.1 Incorrect 3.4 9.5a No  ?
E:only-child Only child No 0.9 1.8 Incorrect 3.4 9.5a No  ?
E:only-of-type Only child of type No 0.9 1.9.1 Incorrect 3.4 9.5a No  ?
E:nth-child Nth child No 0.9 1.9.1 No 3.4 9.5a No  ?
E:nth-last-child Nth last child No 0.9 1.9.1 No 3.4 9.5a No  ?
E:nth-of-type Nth child of type No 0.9 1.9.1 No 3.4 9.5a No  ?
E:nth-last-of-type Nth last child of type No 0.9 1.9.1 No 3.4 9.5a No  ?
E:target Target No 0.9 1.3 Partial 3.4 9.5a No  ?
E:empty Empty No 0.9 1.8 412 3.4 9.5a No  ?
E:not() Negation No 0.9 1.0 85 3.4 9.5a No  ?
E:enabled Enabled state No 0.9 1.8 525 3.4 9.0 No  ?
E:disabled Disabled state No 0.9 1.8 525 3.4 9.0 No  ?
E:checked Checked state No No 1.0 525 3.4 9.0 No  ?
E:indeterminate Indeterminate state No 0.9 No No No No No  ?
E:default Default No No 1.9 No No 9.0 No  ?
E:valid Valid No No 1.8 No No 9.0 No  ?
E:invalid Invalid No No 1.8 No No 9.0 No  ?
E:in-range In range No No 1.8 No No 9.0 No  ?
E:out-of-range Out of range No No 1.8 No No 9.0 No  ?
E:required Required No No No No No 9.0 No  ?
E:optional Optional No No No No No 9.0 No  ?
E:read-only Read-only No No Experimental No No 9.0 No  ?
E:read-write Read and write No No Experimental No No 9.0 No  ?
Pseudo-elements
CSS2 E:first-letter First letter 5.5 0 1.0 85 Yes 7.0 3.0 5.0
E:first-line First line 5.5 0 1.0 85 Yes 7.0 3.0 Partial
E:before Before 8.0 No 1.0 85 Yes 7.0 3.0 Yes
E:after After 8.0 No 1.0 85 Yes 7.0 3.0 Yes
CSS3 E::before Double colon notation No No 1.5 85 3.4 7.0 Yes  ?
E::after Double colon notation No No 1.5 85 3.4 7.0 Yes  ?
E::first-letter Double colon notation No 0.9 1.5 85 3.4 7.0 Yes  ?
E::first-line Double colon notation No 0.9 1.5 85 3.4 7.0 Yes  ?
E::selection Selection No 0.9 Experimental 412 3.4 No No  ?
E::value Double colon notation No No No No No No No  ?
E::choices Double colon notation No No No No No No No  ?
E::repeat-item Double colon notation No No No No No No No  ?
E::repeat-index Double colon notation No No No No No No No  ?
  Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML

[edit] Trident selector notes

  1. :active:active is for anchor element only.
  2. :hover:hover is applied for all elements only in standards-compliant mode, not quirks mode [3]. Prior to 7.0, :hover is for anchor element only.
  3. .one.two — only .two class selector was taken into consideration before 7.0.
  4. * — Prior to 7.0 this was treated as a single or no element.

[edit] Tasman selector notes

  1. :hover — For anchor element only prior to 0.9.
  2. .one.two — only .two class selector is taken into consideration.

[edit] Gecko selector notes

  1. :*-of-type — See Bug 128585 on Bugzilla
  1. :nth-* — See Bug 75375 on Bugzilla

[edit] WebKit selector notes

  1. :lang() — Only detected when explicitly present on element being tested, attribute not inherited.
  2. :target — Style doesn't get applied when navigating using back and forward buttons.
  3. :last-child & :last-of-type — will match all siblings, or all siblings of the same type, respectively.
  4. :only-child & :only-of-type — identical behaviour to :first-child & :first-of-type.
  5. ::pseudo-element — Mistakenly also triggers on ::pseudo-class prior to version 416.0.

[edit] Properties

Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML
Box model
CSS2 margin 4.0 0 1.0 85 Yes 7.0 3.0 Yes
padding 4.0 0 1.0 85 Yes 7.0 3.0 Yes
width 4.0 0 1.0 85 Yes 7.0 3.0 Yes
height 4.0 0 1.0 85 Yes 7.0 3.0 Yes
float 5.0 0 1.0 85 Yes 7.0 3.0 Yes
clear 5.0 0 1.0 85 Yes 7.0 Yes Yes
display Partial Partial Partial 85 Yes 7.0 Partial Yes
min-width 7.0 0.9 1.0 416 Yes 7.0 3.0 5.0
max-width 7.0 0.9 1.0 416 Yes 7.0 3.0 5.0
min-height 7.0 0.9 1.7 416 3.3.2 7.0 3.0 5.0
max-height 7.0 0.9 1.7 416 3.3.2 7.0 3.0 5.0
clip 5.5 0.9 1.0 85 5.0 7.0 3.0 5.0
overflow 7.0 0 1.0 85 3.2 7.0 3.0 5.0
visibility 4.0 0.9 1.8 525 Partial Partial Partial 5.0
CSS3 overflow-x 7.0 No 1.8 525 3.5.6 9.5a No 5.0
overflow-y 7.0 No 1.8 525 3.5.6 9.5a No 5.0
Borders
CSS2 border 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-color 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-style Partial 0 1.0 85 Yes 7.0 3.0 3.0
border-width 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-top 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-top-width 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-right 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-right-width 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-bottom 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-bottom-width 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-left 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-left-width 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-top-color 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-top-style 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-right-color 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-right-style 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-bottom-color 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-bottom-style 5.5 0 1.0 85 Yes 7.0 3.0 3.0
border-left-color 4.0 0 1.0 85 Yes 7.0 3.0 3.0
border-left-style 5.5 0 1.0 85 Yes 7.0 3.0 3.0
CSS3 border-radius No No Experimental Experimental Experimental No No 6.0
border-break No No No No No No No  ?
border-image No No No Experimental No No No  ?
box-shadow No No No Experimental No No No  ?
Line Layout
CSS2 line-height 4.0 0 1.0 85 Yes 7.0 Yes 5.0
vertical-align 5.5 0 1.0 85 Yes 7.0 3.0 6.0
Positioning
CSS2 position 7.0 0 1.0 85 Yes 7.0 3.0 5.0
top Partial Partial 1.0 85 Yes 7.0 3.0 6.0
right Partial Partial 1.0 85 Yes 7.0 3.0 6.0
bottom Partial Partial 1.0 85 Yes 7.0 3.0 6.0
left Partial Partial 1.0 85 Yes 7.0 3.0 6.0
z-index Partial Partial 1.0 85 Yes 7.0 3.0 6.0
Generated and Replaced Content
CSS2 quotes No 0.9 1.8 No 3.4 7.0 3.0 5.0
content 8.0 No Partial 85 Yes 7.0 3.0 5.0
counter-increment 8.0 No 1.8 525 3.4 7.0 3.0 5.0
counter-reset 8.0 No 1.8 525 3.4 7.0 3.0 5.0
Lists
CSS2 list-style 4.0 0 1.0 85 Yes 7.0 3.0 6.0
list-style-image 4.0 0 1.0 85 Yes 7.0 3.0 6.0
list-style-position 4.0 0 1.0 85 Yes 7.0 3.0 6.0
list-style-type 8.0 0 1.0 85 3.4 8.0 3.0 6.0
Colors
CSS2 color 3.0 0 1.0 85 Yes 7.0 Yes 5.0
CSS3 color-profile No No No No No No No  ?
opacity No No 1.7 125 Experimental 9.0 No  ?
rendering-intent No No No No No No No  ?
Backgrounds
CSS2 background 4.0 0 1.0 85 Yes 7.0 Yes 6.0
background-attachment 7.0 0 1.0 85 Yes 7.0 Yes 5.0
background-color 4.0 0 1.0 85 Yes 7.0 3.0 3.1
background-image 4.0 0 1.0 85 Yes 7.0 Yes 6.0
background-position Partial 0 1.0 85 Yes 7.0 Yes 3.1
background-repeat 4.0 0 1.0 85 Yes 7.0 Yes 3.1
CSS3 background (multiple) No No No 312 3.5 No No  ?
background-clip No No Experimental Experimental Experimental No No  ?
background-origin No No Experimental Experimental Experimental No No  ?
background-break No No No No No No No  ?
background-size No No No Experimental Experimental 9.5 No  ?
Fonts
CSS2 font 4.0 0 1.0 85 Yes 7.0 Yes Yes
font-family 4.0 0 1.0 85 Yes 7.0 Yes Yes
font-size 3.0 0 1.0 85 Yes 7.0 Yes 3.1
font-style 4.0 0 1.0 85 Yes 7.0 Yes Yes
font-variant 4.0 0 1.0 125 Yes 7.0 3.0 Yes
font-weight Incorrect 0 Partial Partial Yes Incorrect Incorrect Yes
CSS3 font-size-adjust No No Partial No No No No  ?
font-stretch No No No No No No Incorrect  ?
font-effect No No No No No No No  ?
font-smooth No No No No No No No  ?
font-emphasize No No No No No No No  ?
Text
CSS2 text-align 4.0 0 1.0 85 Yes 7.0 Partial Yes
text-decoration 4.0 0 1.0 85 Yes 7.0 3.0 3.1
text-indent 3.0 0 1.0 85 Yes 7.0 Yes Yes
text-transform 4.0 0 1.0 85 Yes 7.0 Yes 6.0
letter-spacing 4.0 0 1.0 85 Yes 7.0 Yes 5.
word-spacing Partial Partial 1.0 85 Yes 7.0 Yes 5.0
white-space Partial Partial Partial 85 Yes Partial Yes 6.0
direction 5.0 0 1.0 85 Yes 7.2 No No
unicode-bidi 5.0 0 1.0 525 Yes 7.2 No No
CSS3 text-shadow No No No Partial 3.4 9.5a 3.0.3 No
text-overflow Partial No No Partial No Experimental No  ?
word-break Partial No No No No No No  ?
text-wrap No No No No No No No  ?
word-wrap 5.0 No No 85 No No No  ?
text-align-last Partial No No No No No No  ?
text-justify 5.5 No No No No No No 6.0
punctuation-trim No No No No No No No  ?
text-emphasis No No No No No No No  ?
text-outline No No No No No No No  ?
hanging-punctuation No No No No No No No  ?
Tables
CSS2 border-collapse Partial 0.9 1.0 125 Yes 7.0 3.0 5.1
border-spacing No 0.9 1.0 125 Yes 7.0 3.0 6.0
caption-side No 0.9 1.4 85 Yes 7.0 CSS2.1 5.0
empty-cells Partial 0.9 1.0 125 Yes 7.0 Incorrect 5.0
table-layout 5.0 0 1.0 85 Yes 7.0 3.0 6.0
User interface
CSS2 cursor 5.5 0 1.8 125 Yes 7.0 3.0 Yes
outline 8.0 0 1.8 125 Yes 7.0 3.0 Yes
outline-color 8.0 0 1.8 125 Yes 7.0 3.0 Yes
outline-style 8.0 0 1.8 125 Yes 7.0 3.0 Yes
outline-width 8.0 0 1.8 125 Yes 7.0 3.0 Yes
CSS3 outline-offset No No 1.8 125 No 9.5a No  ?
outline-radius No No Experimental No No No No  ?
box-sizing No 0 Experimental 525 3.3.2 7.0 No  ?
resize No No No 525 No No No  ?
appearance No No Experimental Experimental No No No  ?
icon No No No No No No No  ?
nav-index No No No No No 9.5 No No
nav-up No No No No No 9.5 No No
nav-right No No No No No 9.5 No No
nav-down No No No No No 9.5 No No
nav-left No No No No No 9.5 No No
Paged media
CSS2 orphans No No No 312 3.5 7.0 No 6.0
page-break-after 4.0 No Partial Partial 3.5 7.0 No 6.0
page-break-before 4.0 0 Partial Partial 3.5 7.0 No 6.0
page-break-inside No No No 312 3.5 7.0 No 6.0
widows No No No 312 3.5 7.0 No 6.0
CSS3 page No No No No No No No No
size No No No No No 7.0 No No
image-orientation No No No No No No No No
fit No No No No No No No No
fit-position No No No No No No No No
Speech
CSS3 voice-volume No No No No No 7.6 No No
voice-balance 7.6
speak 7.6
pause 7.6
pause-after 7.6
pause-before 7.6
rest No
rest-before No
rest-after No
cue 7.6
cue-after 7.6
cue-before 7.6
mark No
mark-before No
mark-after No
voice-family 7.6
voice-rate 7.6
voice-pitch 7.6
voice-pitch-range 7.6
voice-stress 7.6
voice-duration 7.6
phonemes 7.6
Media Queries
CSS3 width No No No 525 No 9.0 No  ?
height 525 9.0  ?
device-width 525 9.0  ?
device-height 525 9.0  ?
device-aspect-ratio 525 9.0  ?
color 525 9.0  ?
color-index 525 9.0  ?
monochrome 525 9.0  ?
resolution No 9.0  ?
scan No No  ?
grid No 9.0  ?
Ruby characters
CSS3 ruby-position 5.0 0 No No No No No No
ruby-align 5.0 0
ruby-overhang 5.0 0
ruby-span No No
Multi-column Layout
CSS3 column-break-before No No Experimental Experimental No No No 6.0
column-break-after Experimental Experimental 6.0
column-break-inside Experimental Experimental 6.0
column-count Experimental Experimental 6.0
column-gap Experimental Experimental  ?
column-rule No No  ?
columns Experimental Experimental  ?

[edit] Trident property notes

  1. overflowoverflow:visible is incorrectly supported prior to IE7.
  2. border-stylehidden is not supported. dotted is rendered as dashed prior to IE7.
  3. display — Only none, block, inline, table-header-group, and table-footer-group are supported prior to 7.0. In 5.5+, inline-block is supported on elements that are naturally inline.
  4. position — Prior to IE 7, fixed positioning was not supported, IE 7 supports it in standards-compliant mode only.
  5. background-attachment — Prior to IE 7, fixed was allowed on the body element only.
  6. opacity — isn't implemented. Trident is supporting a proprietary alternative (not understood by other layout engines) since v4.0. [4]
  7. background-position — Fixed positioning is not supported.
  8. font-weight — Incorrect rendering when value is 600 [5].
  9. text-decoration — Optional property blink is not supported.
  10. white-spacenowrap is supported in IE 5.5 and later. pre is supported in IE 6 and later in standards-compliant mode. pre-line and pre-wrap are not supported.
  11. list-style-typedecimal-leading-zero, lower-greek, lower-latin, upper-latin, upper-roman are not supported.
  12. writing-modewriting-mode is a unique attribute only recognized by Trident that, with value tb-rl, rotates text 90°.

[edit] Gecko property notes

  1. displayrun-in [6] is not supported. inline-table [7] and inline-block [8] are supported in Gecko 1.9a2+.
  2. quotes — Does not support nested quotes prior to 1.8 [9].
  3. content — Only works with :before and :after. Only support image <uri>. <counter> does not work prior to 1.8 [10].
  4. background-position — Gecko versions prior to 1.7 implement the CSS2 syntax, not the proposed CSS2.1 expanded syntax.
  5. font-size-adjust — Supported in Windows only[11]. This problem will be fixed in the future Gecko 1.9.
  6. font-weight — Only Regular and Bold weights get used, even if Light or Heavy/Black faces are installed.
  7. white-spacepre-line [12] is not supported. pre-wrap is only supported experimentally as -moz-pre-wrap[13].
  8. visibilitycollapse is not supported prior to 1.8.
  9. border-radius — border curves are circular, but the W3C specs [14] define them as elliptical. Dashed curves are not available. Short-cut definitions for border-radius read "tl tr br bl" instead of the W3C's "tr br bl tl". Interesting bugs: [15]
  10. page-break-before; page-break-after — Only the always and auto values are supported.

[edit] WebKit property notes

  1. box-shadow — The system font keywords are not supported that allow designers to tailor presentation to the user’s operating system environment.
  2. font — The system font keywords are not supported that allow designers to tailor presentation to the user’s operating system environment.
  3. font-weight — Only Regular and Bold weights get used, even if Light or Heavy/Black faces are installed.
  4. page-break-before; page-break-after — Only the always and auto values are supported.
  5. text-decoration — Optional property blink is not supported.
  6. white-spacepre-line and pre-wrap from the proposed CSS2.1 draft are not supported.
  7. text-shadow — Multiple shadows are not supported.
  8. visibilitycollapse is not supported prior to 522.

[edit] KHTML property notes

  1. overflow — Values scroll and auto are unsupported.
  2. page-break-before; page-break-after — Before 3.5 only the always and auto values were supported.
  3. text-decoration — Optional property blink is not supported.
  4. visibility — All supported except for collapse.

[edit] Presto property notes

  1. list-style-type — The CSS2 values are not supported prior to 8.0.
  2. counter-increment, counter-reset — Implemented the algorithm in REC CSS2.
  3. background-position — Presto versions prior to 8.0 implement the CSS2 syntax, not the proposed CSS2.1 expanded syntax.
  4. font-weight — Incorrect rendering when value is 600 [16].
  5. white-spacepre-line is not supported prior to Opera 9.5.
  6. visibilitycollapse is unsupported until 9.5, in which collapse is only unsupported in table columns.

[edit] iCab property notes

  1. displayrun-in is not supported.
  2. text-alignjustify is not supported.
  3. font-stretch — Simulated using letter-spacing property.
  4. font-weight — Incorrect (bold) rendering when value is 500.
  5. visibilitycollapse only partial.
  6. caption-sidetop and bottom only which would comply with the proposed CSS2.1 elimination of the values: left and right.
  7. empty-cells — Compresses hidden rows but does not hide them completely.

[edit] Values and units

Trident Tasman Gecko WebKit KHTML Presto iCab Prince XML
Numbers CSS2 <number> A floating-point number 3.0 0 1.0 85 Yes 7.0 Yes 6.0
<length> <number> followed by units 3.0 0 1.0 85 Yes 7.0 Yes 6.0
<percentage> <number> followed by % 3.0 0 1.0 Incorrect Yes 7.0 Yes 6.0
<integer> An integer 3.0 0 1.0 85 Yes 7.0 Yes Yes
CSS3 <angle> <number> angle-unit No No No Yes Yes No No No
<time> <number> time-unit Yes Yes
<frequency> <number> frequency-unit Yes Yes
Strings CSS2 <string> String 3.0 0 1.0 85 Yes 7.0 Yes Yes
\code Unicode escapes 6.0 0.9 1.0 85 Yes 7.0 Yes Yes
Shapes CSS2 rect() A rectangle 5.5 0 1.0 85 Yes 7.0 Yes Yes
Functions CSS2 url() Uniform Resource Identifier 3.0 0 1.0 85 Yes 7.0 Yes Yes
counter() No No Yes ? ? Yes ? Yes
attr() Attribute identifier No No 1.0 Yes Yes 7.0 Yes Yes
CSS3 calc() No No No  ?  ?  ?  ?  ?
Colors CSS2 color names 16 predefined web colors 3.0 0 1.0 85 Yes 7.0 Yes Yes
#rrggbb or #rgb Hexadecimal notation 3.0 0 1.0 85 Yes 7.0 Yes Yes
rgb(r,g,b) RGB notation 4.0 0 1.0 85 Yes 7.0 Yes Yes
system colors 28 predefined system colors [17] 3.0 0 1.0 85 Yes 7.0 Yes Yes
transparent Full transparency 7.0 0 1.0 85 Yes 7.0 Yes Yes
CSS3 rgba(r,g,b,a) RGBA notation No No 1.9 525 Incorrect No No 6.0
hsl(h,s,l) HSL notation No No Yes 525 3.5.5 9.5 No No
hsla(h,s,l,a) HSLA notation No No 1.9 525 3.5.5 No No No
Keywords CSS2 auto Automatically calculated 6.0 0 1.0 85 Yes 7.0 Yes Yes
inherit Inherited from the parents No  ? 1.0 85 Yes 7.0 Yes Yes
CSS3 initial No No Experimental No No No No No
Units CSS2 px Pixel 3.0 0 1.0 85 Yes 7.0 Yes Yes
pt Point 3.0 0 1.0 85 Yes 7.0 Yes Yes
pc Pica 3.0 0 1.0 85 Yes 7.0 Yes Yes
cm Centimetre 3.0 0 1.0 85 Yes 7.0 Yes Yes
mm Millimetre 3.0 0 1.0 85 Yes 7.0 Yes Yes
in inch 3.0 0 1.0 85 Yes 7.0 Yes Yes
em em 3.0 0 1.0 85 Yes 7.0 Yes Yes
ex ex 3.0 0 1.0 85 Yes 7.0 Yes Yes
% Percentage 3.0 0 1.0 85 Yes 7.0 Yes Yes
CSS3 deg Degree No No No Yes Yes No No No
grad Grad Yes Yes
rad Radian Yes Yes
ms Millisecond Yes Yes
s Second Yes Yes
Hz Hertz Yes Yes
kHz Kilohertz Yes Yes
turn turn No No
gd Cells in the layout-grid No No
rem the font size of the root element No No
vw the viewport's width No No
vh the viewport's height No No
vm the viewport's height or width, whichever is smaller of the two No No
ch the width of the "0" (ZERO, U+0030) glyph found in the font for the font size used to render. Incorrect No No

[edit] Trident value and unit notes

  1. auto — In IE5 bug emulation mode (quirks mode) does not work for margins, except table elements.
  2. transparent — In IE6, transparency is not supported on borders (shows as solid black) and is ignored on PNG images. Thus, version 7.0 is the first version that supports transparency in its entirety.

[edit] Gecko value and unit notes

  1. <ch> — Uses the width of the "M" glyph instead of the width of the "0" glyph.[18]

[edit] WebKit value and unit notes

  1. <percentage> — Only uses the integer component of <number>.

[edit] KHTML value and unit notes

  1. rgba() — Because opacity is not supported, the opacity value of rgba() is ignored.

[edit] Presto value and unit notes

  1. attr() — As all URI attribute values are resolved to full URI, the value could be wrong if attr() is used on an attribute that contains relative URI.
  2. <number>Quantization error for values greater than 20.47 [19] (not limited to em, try any non pixel units).

[edit] General notes

[edit] Gecko general notes

  1. -moz- — All experimental selectors, properties and values are prefixed with "-moz-", e.g. ::-moz-selection instead of ::selection [20].

[edit] WebKit general notes

  1. -webkit- — All experimental selectors, properties and values are prefixed with "-webkit-", e.g. -webkit-box-shadow instead of box-shadow.

[edit] KHTML general notes

  1. -khtml- — All experimental selectors, properties and values are prefixed with "-khtml-", e.g. -khtml-opacity instead of opacity.

[edit] Presto general notes

  1. -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.

[edit] References

[edit] External links

  • WebDevout — mostly covers Windows browsers. Extensive bug testing.
  • QuirksMode — comprehensive but lacks latest versions.
  • Westciv — abridged form of their retail guide.
  • MacEdition — covers many Mac browsers, including rare and discontinued ones.
  • Jesset — simple table without bug details, includes WebTV.
  • Motohiko — covers Firefox only. [Japanese]

[edit] Other links