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 {{ Source("layout/style/quirk.css") }} apply only in quirks mode:
- Orphaned
LI
has aninside
bullet ({{ bug(1049) }}). - Add padding if the very first node in an
LI
is anotherUL
orOL
({{ bug(38832) }}). - List bullets do not inherit the font size of the list ({{ bug(97351) }}).
Proposed to remove: {{ bug(648331) }}. - Don't inhertit
font
properties into tables except forfont-family
. - Make
TABLE
borders gray rather than using the foreground color. - Collapse top margin of
BODY
andTD
and bottom margin ofTD
. - 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 ofmargin
({{ bug(5119) }}). - Indent nested
DL
elements ({{ bug(8749) }}). MAP
acts like aninline
, not ablock
.- Give floated
IMG
a 3pxmargin
({{ bug(58899) }}). - Residual style tags' size info does not take precedence over heading tags' size ({{ bug(77352) }}).
- Use
box-sizing:border-box
for mostINPUT
types andTEXTAREA
. - Give
FORM
amargin-bottom:1em
({{ bug(41806) }}).
- Orphaned
- In quirks mode CSS
class
andid
names are case insensitive. In standards mode they are case sensitive. (This also applies togetElementsByClassName
.) - Stylesheets linked in the document with an advisory mime type of
text/css
will still be treated as CSS even if the server gives aContent-Type
header other thantext/css
. - The CSS parser accepts colors not beginning with
#
, except in shorthands. - The CSS parser interprets unitless numbers as
px
(except forline-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
, andrightmargin
attributes onBODY
are supported only in quirks mode ({{ bug(9258) }}).
{{ obsolete_inline("35") }} {{ geckoRelease("35.0") }} ({{ bug(95530) }}) This quirk is now HTML5 conform and has been adopted in standards mode. - The
scrollLeft
,scrollTop
,scrollWidth
, andscrollHeight
properties are relative toBODY
in quirks mode (instead ofHTML
) ({{ Bug(211030) }}). - HTML (1-7) and CSS (
xx-small
-xx-large
) font sizes are calculated slightly differently (see {{ Bug(18136) }}). - The
:hover
and:active
pseudoclass will only be applied to links, images, and form controls. To match other elements, the selector must include a tag name, id, class or attribute.
Prior to Gecko 6.0 {{ geckoRelease("6.0") }}, there was no class check, so the:hover
pseudoclass was not applied to class selectors; for example,.someclass:hover
did not work. - Quirks mode has
document.all
support (undetected). - Images (
IMG
elements) withoutalt
attributes sometimes display placeholder icons in quirks mode. - {{ obsolete_inline("2.0") }} HTML colors were parsed differently up to Gecko 1.9.2 {{ geckoRelease("1.9.2") }} ({{ Bug(121738) }}).
- In quirks mode, the URL fragment
#top
scrolls to the top of the page when there is no such anchor.
{{ obsolete_inline("10.0") }} However, HTML5 requires this behavior, and starting in Gecko 10.0 {{ geckoRelease("10.0") }}, 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. - {{ gecko_minversion_inline("2.0") }} {{ geckoRelease("2.0") }} In quirks mode,
text-decoration
is not propagated into tables ({{ Bug(572713) }}). - maybe {{ gecko_minversion_inline("1.9") }} {{ geckoRelease("1.9") }} 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_inline("8.0") }} Prior to Gecko 8.0 {{ geckoRelease("8.0") }}
text-decoration
in quirks mode had line thickness and position adjusted on descendant text to match the descendant.
Tables
TD
,TH
,TR
,THEAD
,TBODY
, andTFOOT
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.]- The
empty-cells
property defaults tohide
in quirks mode butshow
(according to CSS2.1) in standards mode (see {{ Bug(33244) }}) (though the correct fix would be to specify it on the HTMLTABLE
element inquirk.css
). - 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"
androwspan="0"
are intentionally not handled as described in HTML4 ({{ bug(9879) }}). hspace
andvspace
are supported onTABLE
only in quirks mode ({{ bug(41893) }}).
Proposed to remove: {{ bug(725646) }}.- In quirks mode, when tables have a border style of
inset
oroutset
, 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 thenowrap
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 theheight
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. - {{ gecko_minversion_inline("16") }} {{ geckoRelease("16") }} 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_inline("1.9") }} {{ geckoRelease("1.9") }} In quirks mode table cells with a border have a minimum width of one pixel.
- {{ obsolete_inline("1.9") }} {{ geckoRelease("1.9") }} The basic table layout strategy ignores padding (on what) in quirks mode.
- {{ obsolete_inline("1.9") }} {{ geckoRelease("1.9") }} The basic table layout strategy handles widths differently in some way.
- {{ obsolete_inline("2.0") }} {{ geckoRelease("2.0") }} In quirks mode
absmiddle
(handled incorrectly?) andmiddle
(perhaps incorrectly as well?) are accepted as values ofalign
on table cells, andabsmiddle
,abscenter
, andmiddle
are supported on tables (treated the same ascenter
).
Removed in {{ Bug(559834) }} and {{ Bug(573322) }}, thoughmiddle
andabsmiddle
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_inline("13.0") }} {{ geckoRelease("13.0") }} This quirk has been adopted in standards mode now.
Frames
- In quirks mode
marginwidth
andmarginheight
on aFRAME
are propagated to the containedBODY
. - In a
FRAMESET
cols
/rows
specification0*
is treated as1*
(see {{ Bug(40383) }}). - {{ obsolete_inline("????") }} The
scrolling
attribute onFRAME
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_inline("2.0") }} {{ geckoRelease("2.0") }} This quirk is now HTML5 conform and has been adopted in standards mode.
Original Document Information
- Author(s): David Baron, Boris Zbarsky
See also
{{ languages( { "fr": "fr/Comportement_du_mode_quirks_de_Mozilla", "ja": "ja/Mozilla_Quirks_Mode_Behavior" } ) }}