Comparison Of Layout Engines (css) Article Index for
Comparison Of
Website Links For
Comparison
 

Information About

Comparison Of Layout Engines (css)




The following tables compare CSS compatibility and support for a number of Layout Engine s. 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.

Version number, if possible, is provided for feature that is fully supported (based on CSS2.1, unless it is a CSS3 feature). Proprietary extensions are not included.


NB: Engine Nomenclature

Trident is the layout engine used in Internet Explorer . Tasman is used in Internet Explorer For Mac , Gecko in all Mozilla software, WebCore provides the HTML layout engine for Mac OS X , KHTML for KDE , Presto for Opera and ICab is a browser for Apple Macintosh .


GENERAL OVERVIEW



GRAMMAR AND RULES



Trident grammar and rule notes

# @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, WebCore and iCab download all media stylesheets immediately, Opera only downloads handheld, print, projection and screen media. 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.


SELECTORS



Trident selector notes

# :hover — Prior to 7.0 Beta 2 Preview, :hover is for anchor element only.


Tasman selector notes

# :hover — For anchor element only.


WebCore selector notes

# :hover — Fails to trigger when over table rows which are outside a table cell's boundary or when over empty table cells. Fails to trigger when :link:hover or :visited:hover are used. (CSS2, :hover is not longer mutually exclusive with :link and :visited.)
# :target — Style doesn't get applied when navigating using back and forward buttons.
# :last-child — will trigger for every child element which matches the node selector chain prior to ':last-child'.
# :only-child — behaves the same as :first‐child.
# ::''pseudo-element'' — Mistakenly also triggers on ::''pseudo-class'' on builds up to version 412.0 (subsequently fixed).


Presto selector notes

# preview — supported in Opera 9.0 Preview 1.


PROPERTIES



Trident property notes

# border-styledotted is rendered as dashed.
# display — Only none, block, inline, table-header-group, and table-footer-group are supported.
# position — Prior to 7.0 Beta 2, fixed positioning is not supported.
# background-attachment — Prior to 7.0 Beta 2, fixed is for body element only.
# background-position — Fixed positioning is not supported.
# font-weight — Incorrect rendering when font-weight is 600 {Link without Title} .
# text-decorationblink is not supported.


Gecko property notes

# displayrun-in inline-table [https://bugzilla.mozilla.org/show_bug.cgi?id=18217 , and inline-block [https://bugzilla.mozilla.org/show_bug.cgi?id=9458] are not supported.
# quotes — Does not support nested quotes prior to 1.8 {Link without Title} .
# content — Only works with :before and :after. Only support image . does not work prior to 1.8 {Link without Title} .
# background-position — Problem handling a combination of keyword value and pixel or percentage value. {Link without Title}
# font-size-adjust — Supported in Windows only {Link without Title} .
# white-spacepre-line is not supported. pre-wrap is only supported experimentally as -moz-pre-wrap;.
# visibilitycollapse is not supported prior to 1.8.
# border-radius — border curves are circular, but the W3C specs 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: [https://bugzilla.mozilla.org/show_bug.cgi?id=24998 [https://bugzilla.mozilla.org/show_bug.cgi?id=13944


WebCore property notes

# cursor — Custom cursors are not supported.
# font — The system fonts are not supported.
# font-variant — All supported from version 85 except small-caps, which was added in version 125.
# page-break-before; page-break-after — Only the always and auto values are supported.
# text-decoration — Optional property blink is not supported.
# white-spacepre-line and pre-wrap are not supported.
# text-shadow — Multiple shadows are not supported.
# visibility — All supported except for collapse.


KHTML property notes

# khtml_overflow — Values scroll and auto are unsupported.
# page-break-before; page-break-after — Before 3.5 only the always and auto values was supported.
# text-decoration — Optional property blink is not supported.
# visibility — All supported except for collapse.


Presto property notes

# list-style-type — The CSS2 values are not supported prior to 8.0.
# counter-increment, counter-reset — Implemented the algorithm in REC CSS2.
# background-position — Problem handling a combination of keyword value and pixel or percentage value. {Link without Title}
# font-weight — Incorrect rendering when font-weight is 600 {Link without Title} .
# white-spacepre-line is not supported.
# visibility — All supported except for collapse.


iCab property notes

# displayrun-in is not supported.
# text-alignjustify is not supported.
# visibilitycollapse only partial.
# caption-sidetop and bottom only.
# empty-cells — Compresses hidden rows but does not hide them completely.


CSS2 aural style sheets notes

# The aural style sheets introduced in CSS2 are deprecated in CSS2.1 {Link without Title} . The only know software that supports CSS2 Aural is -based speech browser. The popular screen-reader JAWS does not respect Aural CSS instructions. The CSS3 Speech module reuses some, but not all, of the properties.


VALUES AND UNITS



Trident value and unit notes

# auto — Does not work for margins.


Presto value and unit notes

# 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.
# emQuantization error for values greater than 20.47em {Link without Title} .
# %Floating Point numbers are treated as integers when used in percentages.


KHTML value and unit notes

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


GENERAL NOTES


Gecko general notes

# -moz- — All experimental (and proprietary) selectors, properties and values are prefixed with "-moz-", e.g. ::-moz-selection instead of ::selection {Link without Title} .


WebCore general notes

# -apple- — All proprietary selectors, properties and values are prefixed with "-apple-", e.g. -apple-aqua.


KHTML general notes

# -khtml- — All experimental (and proprietary) selectors, properties and values are prefixed with "-khtml-", e.g. -khtml-arabic-indic.


Presto general notes

# -o- — All proprietary selectors, properties and values are prefixed with "-o-", e.g. -o-replace.
# -wap- — All proprietary selectors, properties and values for Wireless CSS are prefixed with "-wap-", e.g. -wap-accesskey.
# -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-interpret-as instead of interpret-as.


REFERENCES



SEE ALSO



EXTERNAL LINKS