Mozilla Quirks Mode Behavior

This is an archived page. It's not actively maintained.

The following is a roughĀ  list of the differences that exist between Mozilla's standards mode and quirks mode behavior.

Miscellaneous & Style

  • All of the style rules in layout/style/res/quirk.css apply only in quirks mode:
    • Orphaned LI has an inside bullet (bugĀ 1049).
    • Add padding if the very first node in an LI is another UL or OL (bugĀ 98636).
    • Obsolete since Gecko 50 List bullets do not inherit the font size of the list (bugĀ 97351). Removed in Firefox 50 (bugĀ 648331).
    • Don't inherit font properties into tables except for font-family.
    • Make TABLE borders gray rather than using the foreground color.
    • Collapse top margin of BODY and TD and bottom margin of TD.
    • Collapse the bottom or top margins of empty elements (bugĀ 97361).
    • Support <PRE wrap>, <PRE cols>, <PRE width>.
    • Orphaned DD has generated content :before instead of margin (bugĀ 5119).
    • Indent nested DL elements (bugĀ 8749).
    • MAP acts like an inline, not a block.
    • Give floated IMG a 3px margin (bugĀ 58899).
    • Residual style tags' size info does not take precedence over heading tags' size (bugĀ 77352).
    • Use box-sizing:border-box for most INPUT types and TEXTAREA.
    • Give FORM a margin-bottom:1em (bugĀ 41806).
  • In quirks mode CSS class and id names are case insensitive. In standards mode they are case sensitive.Ā  (This also applies to getElementsByClassName.)
  • Stylesheets linked in the document with an advisory MIME type of text/css will still be treated as CSS even if the server gives a Content-Type header other than text/css.
  • The CSS parser accepts colors not beginning with #, except in shorthands.
  • The CSS parser interprets unitless numbers as px (except for line-height and any other properties where they have distinct meaning, and except in shorthands).
  • In quirks mode, the CSSĀ parser allows {} around the contents of style attributes (bugĀ 99554). This behavior is being removed in Firefox 27, for interoperability. (bugĀ 915053)
  • An empty string for the background attribute sets the background URL to empty only in quirks mode.
  • The topmargin, bottommargin, leftmargin, and rightmargin attributes on BODY are supported only in quirks mode (bugĀ 9258).
    Obsolete since Gecko 35 (Firefox 35.0 / Thunderbird 35.0 / SeaMonkey 2.32) (bugĀ 95530) This quirk is now HTML5 conform and has been adopted in standards mode.
  • The scrollLeft, scrollTop, scrollWidth, and scrollHeight properties are relative to BODY in quirks mode (instead of HTML)Ā  (bugĀ 211030).
  • HTML (1-7) and CSS (xx-small - xx-large) font sizes are calculated slightly differently (see bugĀ 18136).
  • The :hover and :active pseudo-classes will only be applied to links, and only if there is no other pseudo-class in the selector. To match other elements, the selector must include a tag name, id, class or attribute.
    Prior to Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), there was no class check, so the :hover pseudoclass was not applied to class selectors; for example, .someclass:hover did not work.
    Prior to Gecko 36, it also applied to images, and form controls but the quirk has been adapted to match the behavior of other browser (bugĀ 783213).
    Prior to Gecko 36, the quirk was also applied if another pseudo-class was used in the same selector, if a pseudo-element was used in the selector, or if it was part of a pseudo-class argument (bugĀ 783213).
  • Quirks mode has document.all support (undetected).
  • Images (IMG elements) without alt attributes sometimes display placeholder icons in quirks mode.
  • Obsolete since Gecko 2.0 HTML colors were parsed differently up to Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0) (bugĀ 121738).
  • In quirks mode, the URL fragment #top scrolls to the top of the page when there is no such anchor.
    Obsolete since Gecko 10.0 However, HTML5 requires this behavior, and starting in Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7), this also works in standards mode (bugĀ 80784, bugĀ 93077).

Block and Inline layout

  • [This quirk is present in almost standards mode.] Line height (not line-height) calculations are different to fix bugĀ 5821 and bugĀ 24186 (some other issues are described in bugĀ 22274).Ā  See almost standards mode for more details.
  • There are a bunch of quirks to get percentage heights on images, tables, objects, and applets (etc.?) to "work" (the way they did in Netscape Navigator 4), even though CSS says that percentage heights should behave like 'auto' heights when the parent element doesn't have a fixed height. See bugĀ 33443#c9. See also bugĀ 41656 and its duplicates. Some of these quirks may cause other effects (see bugĀ 54119).
  • In quirks mode, the FONT element changes the color of text decorations specified on ancestor elements.
    Proposed to apply in all modes: bugĀ 747517.
  • In quirks mode, text-decoration is propagated into floating and absolutely positioned elements.
  • (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) In quirks mode, text-decoration is notĀ  propagated into tables (bugĀ 572713).
  • maybe (Firefox 3) When computing the minimum intrinsic width of an inline flow directly in a table cell (no blocks in between), it is assumed that it is not possible to break before and after an image (when otherwise it would be).
  • Obsolete since Gecko 8.0 Prior to Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5) text-decoration in quirks mode had line thickness and position adjusted on descendant text to match the descendant.

Tables

  • TD, TH, TR, THEAD, TBODY, and TFOOT elements have the document background (and color?) applied to them (when the document background is specified in certain ways?) (see also bugĀ 70831). [This may have been an accurate description when written in June 2001, but no longer appears accurate. Should look into TableQuirkColorRule, re-describe, and figure out when it changed.]
  • Obsolete since Gecko 37 The empty-cells property defaulted to hide in quirks mode but show (according to CSS2.1) in standards mode (see bugĀ 33244) (though the correct fix would be to specify it on the HTML TABLE element in quirk.css). This quirk has been removed in Firefox 37 and empty-cells also defaults to show in quirks mode (bugĀ 1020400).
  • In quirks mode floated tables never move to the next "line" if they don't fit next to other floats, they just keep widening the page (see bugĀ 43086).Ā  To correspond, their width is computed as though only the remaining available space is the containing block width (bugĀ 99461).
  • In quirks mode colspan="0" and rowspan="0" are intentionally not handled as described in HTML4 (bugĀ 9879).
  • hspace and vspace are supported on TABLE only in quirks mode (bugĀ 41893).
    Proposed to remove: bugĀ 725646.
  • In quirks mode, when tables have a border style of inset or outset, the border color is based on the background color of the table or of the nearest ancestor with non-transparent background. [This may have been an accurate description when written in June 2001, but it no longer appears correct. I don't follow the code in nsCSSRenderingBorders well enough to tell, though.]
  • In quirks mode a fixed width specified on a table cell resets the nowrap attribute. If the nowrap attribute is present the cell width will never be smaller than the specified fixed width (bugĀ 277232).
  • In quirks mode, tables with no rows/rowgroups have zero height even when a height is specified (bugĀ 241161).
  • Something about the overhanging border (i.e., the half of the border that's outside the border-box) in border-collapse tables differs between quirks mode and standards mode. [See nsTableFrame::GetDeflationForBackground and figure out what really differs, and when it started differing.]
  • Gecko had bugĀ 248239, where table cells acted as they hadĀ box-sizing:border-boxĀ applied for the purpose of the height property. This is fixed in Gecko 16 (Firefox 16) for standards mode but remains in quirks mode for compatibility with quirks mode behavior of other browsers.
  • (Firefox 16 / Thunderbird 16 / SeaMonkey 2.13) Since this version bugĀ 338554 is fixed and (-moz-)box-sizing applies to table cells in standards mode, but quirks mode keeps the old behavior.
  • Obsolete since Gecko 1.9 (Firefox 3) In quirks mode table cells with a border have a minimum width of one pixel.
  • Obsolete since Gecko 1.9 (Firefox 3) The basic table layout strategy ignores padding (on what) in quirks mode.
  • Obsolete since Gecko 1.9 (Firefox 3) The basic table layout strategy handles widths differently in some way.
  • Obsolete since Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) In quirks mode absmiddle (handled incorrectly?) and middle (perhaps incorrectly as well?) are accepted as values of align on table cells, and absmiddle, abscenter, and middle are supported on tables (treated the same as center).
    Removed in bugĀ 559834 and bugĀ 573322, though middle and absmiddle in table cells work in all modes now.
  • In quirks mode, percentage values are supported on the cellspacing attribute, but treated as pixels (bugĀ 106336).
    Obsolete since Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10) This quirk has been adopted in standards mode now.

Frames

  • In quirks mode marginwidth and marginheight on a FRAME are propagated to the contained BODY.
  • In a FRAMESET cols/rows specification 0* is treated as 1* (see bugĀ 40383).
  • Obsolete The scrolling attribute on FRAME is handled differently.

HTML Parser

  • In quirks mode, we parsed HTML comments in a non-SGML way compatible with other browsers instead of treating "--" as the comment start and end delimiter.
    Obsolete since Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) This quirk is now HTML5 conform and has been adopted in standards mode.

Original Document Information

  • Author(s): David Baron, Boris Zbarsky

See also