Examples: different error handling

To demonstrate why you shouldn't have errors in your HTML source, here are some examples where browsers differ in how they display erroneous HTML, while they all look the same if your HTML is error-free.

Non-HTML tag names

If you use tags names that are not officially defined HTML, there are browsers that feel free to treat them the way they want.

<style> two:nth-of-type(2) {text-decoration:underline} </style>
..
<one>one</one>
<two>two</two>
<one>one</one>
<two>two</two>

Browser Result
Firefox 3.6 .. 54
SeaMonkey 2.1 .. 2.51
underlines the second <two>
Chrome 6 .. 58 underlines the second <two>
Internet Explorer 9 .. 11
Microsoft Edge 14
underlines the first <two>
Safari 5.1 underlines the second <two>
Opera 11 .. 12 underlines the second <two>
Konqueror 4 underlines the second <two>

Start/end tag mismatch

Reaction to mismatched tags varies greatly and depends on what the tags are.

Test 1: address, h5

Normal text
<address>address with h5 end tag</h5>
Normal text

Test 2: address, p

Normal text
<address>address with p end tag</p>
Normal text

Test 3: h4, h5

Normal text
<h4>h4 with h5 end tag</h5>
Normal text

Browser Result 1Result 2Result 3
Firefox 3.0 .. 3.6
SeaMonkey 2.0
Ignores end tag Ignores end tag Ends h4 as if end tag was ok
Firefox 4 .. 54
SeaMonkey 2.1 .. 2.51
Ignores end tag Inserts p in address Ends h4 as if end tag was ok
Chromium 5 .. 6
Midori 0.2
Ignores end tag Inserts p in address Ignores end tag
Chromium 10 .. 58
Midori 0.4
Safari 5
Ignores end tag Inserts p in address Ends h4 as if end tag was ok
Internet Explorer 7 .. 8 Inserts h5 in address Inserts p in address Ends h4 as if end tag was ok
Internet Explorer 9 .. 11
Microsoft Edge 14
Ignores end tag Inserts p in address Ends h4 as if end tag was ok
Opera 9 .. 12 Ignores end tag Inserts p in address Ends h4 as if end tag was ok
Konqueror 3 Ignores end tag Ignores end tag Ignores end tag
Konqueror 4 Ignores end tag Ends address; adds p Ignores end tag

Staggered tag mismatch: span partially in p, partially outside

<p>Before span <span>in span</p> after p</span> and after span.

(In this example, the p is red and the span is underlined, so you can see where each ends.)

Browser Result
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Span ends at </p>
Chromium 5 .. 58
Midori 0.2 .. 0.4
Safari 5
Span ends at </p>
Internet Explorer 7 .. 8 Span ends with </span>, paragraph break in span
Internet Explorer 9 .. 11
Microsoft Edge 14
Span ends at </p>
Opera 9 .. 10 Span ends with </span>, paragraph break in span
Opera 11 .. 12 Span ends at </p>
Konqueror 3 .. 4 Span ends at </p>

Text "</script>" in JavaScript

<p id="test">You should see only this line (with end tag).</p>
<script type="text/javascript"> <!--
var text = document.createTextNode('</script>');
document.getElementById('test').appendChild(text);
//-->
</script>

Browser Result
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Script ends halfway, rest of script is displayed in the window
Chromium 5 .. 6
Midori 0.2
Script runs in its entirety¹
Chromium 10 .. 58
Midori 0.4
Safari 5
Script ends halfway, rest of script is displayed in the window
Internet Explorer 7 .. 9 Script runs in its entirety¹
Internet Explorer 10 .. 11
Microsoft Edge 14
Script ends halfway, rest of script is displayed in the window
Opera 9 .. 11 Script runs in its entirety¹
Opera 12 Script ends halfway, rest of script is displayed in the window
Konqueror 3 .. 4 Script runs in its entirety¹
¹ If you remove the comment delimiters, the browser ends the script at </script> too.

Elements in places where they don't belong

<li> outside <ul>

<div> Before <li> a list item </li> and after </div>

<optgroup> outside <select>

<div> Before <optgroup> an opt group </optgroup> and after </div>

<rt> outside <ruby>

<div> Before <rt> a ruby text </rt> and after </div>

Browser With li With optgroup With rt
Firefox 3
SeaMonkey 2.0
Block
bullet left of left edge
Text put in parent (unrecognised)
Firefox 10 .. 36
SeaMonkey 2.7 .. 2.33
Block
bullet left of left edge
Collapsed block
content not visible
(unrecognised until v36)
Superscripted
Chromium 5 .. 58
Midori 0.2 .. 0.4
Safari 5
Block. Has padding Block
content not visible
Inline
Internet Explorer 7 Semi-block (line break before, but not after)
Has padding
Text put in parent Text put in parent
Internet Explorer 8 .. 9 Block; bullet left of left edge Text put in parent Text put in parent
Internet Explorer 10 .. 11 Block; bullet left of left edge Block
content not visible
Inline
Microsoft Edge 14 Block; bullet left of left edge Inline, with a bold font Inline
Opera 9 .. 11 Block. Has padding. Text put in parent (unrecognised)
Opera 12 Block. Has padding. Inline (unrecognised)
Konqueror 4 Tags are discarded; text put in parent Tags are discarded; text put in parent Tags are discarded; text put in parent

3-digit color attribute in <font> element

<font color="#0D0">So this is #0D0</font>

Browser Result
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Shows color as if it was #00DD00
Chromium 5 .. 58
Midori 0.2 .. 0.4
Safari 5
Shows color as if it was #00DD00
Internet Explorer 7 .. 11 Ignores color declaration
Microsoft Edge 14 Shows color as if it was #00DD00
Opera 9 .. 11 Ignores color declaration
Opera 12 Shows color as if it was #00DD00
Konqueror 3 .. 4 Shows color as if it was #00DD00

Note: as <font> is not part of HTML5 or HTML 4.01 Strict, this test was done using HTML 4.01 Transitional.

Font color with rgb

<font color="rgb(0,99,0)">color = rgb(0,99,0)</font>

Browser Result
Firefox 3.0 .. 3.6
SeaMonkey 2.0
Ignores color
Firefox 4 .. 54
SeaMonkey 2.1 .. 2.51
Acts as if color = #B09900
Chromium 5 .. 10
Midori 0.2 .. 0.4
Safari 5
Interprets color as rgb(0,99,0)
Chromium 15 .. 58 Acts as if color = #B09900
Internet Explorer 7 .. 11
Microsoft Edge 14
Interprets color as rgb(0,99,0)
Opera 9 .. 11 Acts as if color = #00B000
Opera 12 Acts as if color = #B09900
Konqueror 3 .. 4 Interprets color as rgb(0,99,0)

Contradictory attributes and styles

When an element's attribute values differ from the CSS styles for the element, the CSS styles usually take preference over the attribute.
Usually, but not always.

<hr color="red" style="color:blue">

Browser Result
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
blue
Chromium 5 .. 58
Midori 0.2 .. 0.4
Safari 5
red
Internet Explorer 7 blue
Internet Explorer 8 .. 11
Microsoft Edge 14
red
Opera 9 .. 12 red
Konqueror 3 .. 4 red

Empty width attribute

<img src="pic.gif" alt="" width="">

BrowserResult
Internet Explorer 7 .. 10 Treats image as if width = "1"
All other browsers tested so far, including IE11 Ignores width, displays image normally

Bad link: error in type attribute

<link rel="stylesheet" href="error-19a-css.css" type="text/html">

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Doesn't use stylesheet
Chromium 6 .. 58
Midori 0.2 .. 0.4
Safari 5
Ignores type, shows style normally
Internet Explorer 7 .. 11
Microsoft Edge 14
Doesn't use stylesheet
Konqueror 3 .. 4 Ignores type, shows style normally
Opera 9 .. 12 Doesn't use stylesheet

Bad link 2: bad file type for the css

<link rel="stylesheet" href="error-19c-css.txt" type="text/css">

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Doesn't use stylesheet
Chromium 6 .. 58
Midori 0.2 .. 0.4
Safari 5
Doesn't use stylesheet
Internet Explorer 7 .. 8 Ignores type, shows style normally
Internet Explorer 9 .. 11
Microsoft Edge 14
Doesn't use stylesheet
Opera 9 .. 11 Ignores type, shows style normally
Opera 12 Doesn't use stylesheet
Konqueror 3 Ignores type, shows style normally
Konqueror 4 Doesn't use stylesheet

Of the browsers that don't use the stylesheet, surprisingly they all do use it in quirks mode.

Bad link 3: encoding mismatch

<link rel="stylesheet" href="error-19d-css16.css" type="text/css">

If the HTML file is encoded as UTF-8, and the CSS file is UTF-16, and the link doesn't explicitly specify an encoding, this happens:

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Doesn't use stylesheet
Chromium 6 .. 58
Midori 0.2 .. 0.4
Safari 5
Doesn't use stylesheet
Internet Explorer 7 .. 11
Microsoft Edge 14
Doesn't use stylesheet
Opera 9 .. 12 Detects encoding, shows style normally
Konqueror 4 Doesn't use stylesheet

<img> without src

Trying to show an img without a scr attribute

<img style="width:30px; height:30px; background:lime"><br>
<img style="width:30px; height:30px; background:lime" alt="square">

Browser Without alt With alt
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
NothingKeeps background. Shows alt text
Chromium 5 .. 35
Midori 0.2 .. 0.4
Safari 5
Keeps size, background. Has borderKeeps size, background. Has border
Chromium 55 .. 58 Keeps size, background. Has borderKeeps size, background; shows partial alt text. Has border
Internet Explorer 7 .. 10 Keeps size, background. Has border and a broken image iconKeeps size, background. Has a broken image icon
Internet Explorer 11
Microsoft Edge 14
Keeps size, backgroundKeeps size, background; shows partial alt text.
Konqueror 3 .. 4 Keeps size, background. Has border and a broken image iconKeeps size, background. Has border and a broken image icon
Opera 9 .. 12 Keeps size, backgroundKeeps size, background; shows alt text. Has border

Font names without quotes

If you have a font name which happens to be a CSS keyword, or which contains characters that are not letters, you get inconsistencies when you omit the quotes around the name.

<div style="font:1.5em Caption">This is 1.5em Caption</div>
<div style="font:1.5em Default">This is 1.5em Default</div>
<div style="font:1.5em Inherit">This is 1.5em Inherit</div>
<div style="font:1.5em Initial">This is 1.5em Initial</div>
<div style="font:1.5em -moz-field">This is 1.5em -moz-field</div>
<div style="font:1.5em Courier 10 Pitch">This is 1.5em Courier 10 Pitch</div>

Which style rules are used and which are not, is evident by the larger text size: when the style is considered OK, the "1.5em" part is applied, even if a font with that name can't be found.
"Courier 10 Pitch" is a real font, by the way, and if you're wondering, no, it's not the spaces in the name that cause the problems.

Browserwith
Caption
with
Default
with
Inherit
with
Initial
with
-moz-field
with
Courier 10 Pitch
Firefox 3 .. 17
SeaMonkey 2.0 .. 2.17
UsedUsedIgnoredUsedUsedIgnored
Firefox 25 .. 54
SeaMonkey 2.22 .. 2.51
UsedIgnoredIgnoredIgnoredUsedIgnored
Chromium 6 .. 15
Midori 0.2
Safari 5
Konqueror 3 .. 4
UsedUsedUsedUsedUsedIgnored
Chromium 20
Midori 0.4
UsedUsedIgnoredIgnoredUsedIgnored
Chromium 25 .. 58 UsedIgnoredIgnoredIgnoredUsedIgnored
Internet Explorer 7 UsedUsedUsedUsedUsedUsed
Internet Explorer 8 UsedUsedUsedUsedIgnoredUsed
Internet Explorer 9 .. 11 IgnoredIgnoredIgnoredIgnoredIgnoredUsed
Microsoft Edge 14 IgnoredUsedUsedUsedUsedIgnored
Opera 9 UsedUsedUsedUsedUsedUsed
Opera 10 UsedUsedIgnoredUsedUsedUsed
Opera 11 .. 12 UsedUsedIgnoredUsedUsedIgnored

Other font names that consist of CSS keywords, such as Unset, are problematic too. So the bottom line is it's best to always use quotes.

Missing space before a # in CSS

There is a border around <span style="border:1em outset#777">this span</span>.

If you forget the space in the shorthand property, the results vary.

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Shows border
Chromium 5 .. 58
Midori 0.2 .. 0.4
Safari 5
Konqueror 3 .. 4
Shows border
Internet Explorer 9 .. 11 Does not show border
Microsoft Edge 14 Shows border
Opera 9 .. 12 Shows border

Missing parenthesis in CSS function

If you forget the closing parenthesis in a css function such as rgb(...), the results vary.

<p style="background-image:url(pic.png">
Missing parenthesis in url
</p>
<p style="background-color:rgb(240,160,80">
Missing parenthesis in rgb
</p>

BrowserResult with urlResult with rgb
Firefox 3.0 .. 3.6
SeaMonkey 2.0
IgnoredIgnored
Firefox 10 .. 54
SeaMonkey 2.7 .. 2.51
Pretends all is finePretends all is fine
Chromium 15 .. 20 IgnoredIgnored
Chromium 55 .. 58 Pretends all is finePretends all is fine
Internet Explorer 7 IgnoredIgnored
Internet Explorer 8 IgnoredPretends all is fine
Internet Explorer 9 Pretends all is fineIgnored
Internet Explorer 11
Microsoft Edge 14
Pretends all is finePretends all is fine
Opera 10 .. 12 IgnoredPretends all is fine
Safari 5 IgnoredIgnored
Konqueror 4 IgnoredIgnored

Note that this is one area where the rules are clear: if there's an error like that, the style should be ignored. In other words, many browsers used to handle this correctly in the past, but don't any more!

Using ASCII characters with the Symbol font

The Symbol font is meant for displaying several Greek and mathematical symbols. However, there are right ways and wrong ways to use it. Long ago, the right way was to set this as your display font and write ASCII letters. So if you wanted "Η γρηγορη καφε αλεπου πηδαει πανω απο ενα τεμπελης σκυλι.", you wrote something like

<div style="font-family:'Symbol'">
H grhgorh kafe alepou phdaei panw apo ena tempelhV skuli.
</div>

These days, if you try that, it will come out as

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Shows ASCII text
Chromium 6 .. 56 (Linux)
Midori 0.2 .. 0.4
Shows ASCII text
Chrome 5 .. 58 (Windows)
Safari 5
Shows Greek
Internet Explorer 7 .. 11 Shows Greek
Microsoft Edge 14 Shows ASCII text
Opera 9 (Linux) Shows ASCII text
Opera 11 .. 12 (Linux) blank
Opera 10 .. 12 (Windows) Shows ASCII text
Konqueror 3 Shows ASCII text
Konqueror 4 Shows Greek

Note that this is one of the few instances where I found differences between Linux and Windows. Maybe we shouldn't be using Symbol at all any more.

Markup in the title

The title of the page is supposed to be plain text, that is, it can't contain markup.

<title>Error test 32: <i>Markup</i> in the title</title>

(Live example)

The results are remarkably similar across browsers, however they differ between operating systems: in Windows, all browsers display "<i>Markup</i> in the title". Some versions of Linux do interpret the markup and display "Markup in the title" in the titlebar, while other versions have "<i>Markup</i> in the title" like in Windows. They all have "<i>Markup</i> in the title" in the tab.

Bad value for align attribute

<table>
<caption align="none">This is the caption</caption>
<tr><td>and this is the content.</td></tr>
</table>

BrowserResult
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
Ignores the bad value
Chromium 6 .. 58
Midori 0.2 .. 0.4
Safari 5
Ignores the bad value
Internet Explorer 7 .. 11
Microsoft Edge 14
Ignores the bad value
Opera 9 .. 12 Takes the opportunity to put the caption below the table
Konqueror 4 Ignores the bad value

Note: as align is deprecated, this test was done using HTML 4.01 Transitional.

Dashes in comment

Note that the definition of how comments are parsed is different for HTML5 than it was for SGML-based HTML, in the old days. So be careful with them: what is an error today, like <!-- comment -- >, was perfectly acceptable in SGML. And reversely, <!-- comment-- --> is OK to modern browsers now, but was treated as an incomplete comment before. To play it safe, play by the rules: don't use two dashes in a row and don't have spaces before the closing >.

However, the browsers don't all play by the rules; both the modern ones that are HTML5-aware and the old ones that only know about SGML differ in what they consider correct or not.

<ol>
<li>too few dashes: before <!--> and after <br title=--> </li>
<li>too many dashes: before <!-- -- --> and after <br title=--> </li>
<li>too many spaces: before <!-- -- > and after <br title=--> </li>
<li>nested comments: before <!-- <!-- --> --> and after <br title=--> </li>
</ol>

The browser will display "before and after" if it sees a complete comment. If it doesn't, it only displays "before", because the text "and after" will be part of the comment.
Note that the <br title=--> is an error recovery device in case the comment was incomplete: this will end it. Otherwise it's just a line break with a title.
The fourth example is supposed to end at the first --> according to the rules, displaying the following --> on the screen.

BrowserResult 1Result 2Result 3Result 4
Firefox 3.0 .. 3.6
SeaMonkey 2.0
incompleteincompletecompleteEnds too late¹
Firefox 10 .. 54
SeaMonkey 2.7 .. 2.51
completecompleteincompleteEnds properly
Chromium 6
Midori 0.2
incompletecompleteincompleteEnds properly
Chromium 15 .. 58
Midori 0.4
Safari 5
completecompleteincompleteEnds properly
Internet Explorer 7 .. 11
Microsoft Edge 14
completecompleteincompleteEnds properly
Opera 9 incompletecompleteincompleteEnds properly
Opera 10 .. 11 incompletecompletecompleteEnds properly
Opera 12 completecompleteincompleteEnds properly
Konqueror 4 incompletecompleteincompleteEnds properly

¹ Only in Standards mode though; in Quirks mode; acts just like the other browsers.

Wrong parameter order in font shorthand

The parameters in the font style are supposed to be in this order: font-style font-variant font-weight font-size/line-height font-family. See the W3C Fonts page. Most of them are optional, so you can leave them out if you want, but you cannot put them out of order. A font style with parameters in the wrong places is an error and will be ignored.

That is, it will be ignored in theory. In practice, browsers differ in what they consider errors and what they don't.

<ol style="font-size:13px; font-style:normal; font-family:serif>
<li style="font:18px normal monospace">18px normal monospace</li>
<li style="font:18px normal 'Arial'">18px normal 'Arial'</li>
<li style="font:italic 18px 700 'Arial'">italic 18px 700 'Arial'</li>
<li style="font:18px italic 'Arial'">18px italic 'Arial'</li>
</ol>

BrowserResult 1Result 2Result 3Result 4
Firefox 3.0 uses sizeignoredignoreduses size and family
Firefox 3.5 .. 54
SeaMonkey 2.0 .. 2.51
uses size;
default family
ignoredignoredignored
Chromium 6 .. 31
Midori 0.2
Safari 5
Vivaldi TP3
uses size;
default family
uses size and familyignoreduses size and family
Chromium 55 .. 58 uses size;
default family
ignoredignoredignored
Internet Explorer 7 uses sizeuses sizeuses sizeuses size
Internet Explorer 8 uses sizeuses sizeignoreduses size
Internet Explorer 9 .. 11 uses size;
default family
uses size;
default family
ignoreduses size;
default family
Microsoft Edge 14 uses size;
default family
ignoredignoredignored
Opera 9 ignoredignoreduses size, weight and familyignored
Opera 10 .. 12 uses sizeignoreduses size, weight and familyignored
Konqueror 4 uses sizeuses size and familyignoreduses size and family

Unofficial colour names

<div style="color:Copper">Copper</div>
<div style="color:LightSlateBlue">LightSlateBlue</div>

BrowserResult 1Result 2
Firefox 3 .. 54
SeaMonkey 2.0 .. 2.51
--
Chromium 6 .. 36
Midori
Safari 5
Vivaldi TP3
-
Chromium 55 .. 58
Midori
Safari 5
Vivaldi TP3
-
Internet Explorer 8 .. 11
Microsoft Edge 14
--
Opera 9 .. 12
Konqueror 4 --

More <col>s than columns

If a table has a number of columns defined with <col>, but there are fewer columns in the body of the table, there is a mismatch.

<table>
<col span="6" width="70">
<tr><td>one</td><td>two</td><td>three</td></tr>
</table>

BrowserResult
Firefox 3.6 .. 54
SeaMonkey 2.0 .. 2.51
table is six columns wide
Chromium 6 .. 58
Midori 0.4
Safari 5
Vivaldi TP3
table is three columns wide
Internet Explorer 7 .. 11
Microsoft Edge 14
table is three columns wide
Opera 9 .. 12 table is three columns wide
Konqueror 4 table is three columns wide

<col>s after the table content

Column definitions in tables should always go before the first table row. If you forget that...

<table>
<tr><td>one</td><td>two</td><td>three</td></tr>
<col span="3" width="100">
</table>

BrowserResult
Firefox 3.6 .. 54
SeaMonkey 2.1 .. 2.51
Columns are the specified 100px wide
Chromium 6 .. 20
Midore 0.4
Safari 5
Columns have their default widths, ignoring the col definition
Chromium 37 .. 58
Vivaldi TP3
Columns are the specified 100px wide
Internet Explorer 7 Columns have their default widths, ignoring the col definition
Internet Explorer 8 .. 11
Microsoft Edge 14
Columns are the specified 100px wide
Opera 9 .. 12 Columns have their default widths, ignoring the col definition
Konqueror 4 Columns have their default widths, ignoring the col definition

Attributes with bad values

Browsers usually ignore bad attribute values altogether. But apparently not always!

<table border="1">
<tr>
<td valign="botto" height="60">This is a bad td</td>
</tr>
</table>

BrowserResult
Firefox 10 .. 54
SeaMonkey 2.7 .. 2.51
Ignored; aligned to middle as normal
Chromium 6 .. 58 Ignored; aligned to middle as normal
Internet Explorer 8 .. 11
Microsoft Edge 14
td is now aligned to top
Safari 5 Ignored; aligned to middle as normal
Opera 9 .. 11 td is now aligned to top
Opera 12 Ignored; aligned to middle as normal
Konqueror 4 Ignored; aligned to middle as normal

Borders assigned to tr

You shouldn't assign a border property to a tr. It won't have any effect. That is, if you're lucky.
In some circumstances, some browsers will protest by throwing the table out of alignment.

<table style="border:1px solid red" dir="rtl">
<tr style="border:5px solid blue">
<td style="border:1px solid green">Test</td>
</tr>
</table>

BrowserResult
Firefox 3.0 .. 40
SeaMonkey 1.9 .. 2.35
Ignored; no effect
Firefox 41 .. 54
SeaMonkey 2.38 .. 2.51
The td is drawn 10 pixels to the right (2× the width of the tr border)
Chromium 6 .. 58 Ignored; no effect
Internet Explorer 7 .. 11
Microsoft Edge 14
Ignored; no effect
Safari 5 Ignored; no effect
Opera 9 .. 12 Ignored; no effect
Konqueror 4 Ignored; no effect

Backgrounds assigned to tr

Basically the same as above. Table rows don't have backgrounds of themselves, so if you assign a background to a row, it's up to the browsers to decide what to do with it.
Naturally, this may result in some differences.

<table style="width:200px; height:100px">
<tr style="background:url(bkgnd.png)">
<td>One</td><td>Two</td>
</tr>
</table>

BrowserResult
Firefox 3.0 .. 54
SeaMonkey 2.0 .. 2.51
Cells are windows on the tr, showing different parts of the background image
Chromium 15 .. 56 Acts as if cells inherit the style, all showing the same part of the background image
Chromium 58 Cells are windows on the tr, showing different parts of the background image
Internet Explorer 7 Acts as if cells inherit the style, all showing the same part of the background image
Internet Explorer 8 .. 11
Microsoft Edge 14
Cells are windows on the tr, showing different parts of the background image
Safari 5 Acts as if cells inherit the style, all showing the same part of the background image
Opera 10 - 12 Cells are windows on the tr, showing different parts of the background image
Konqueror 4 Cells are windows on the tr (using a different viewport than the other browsers though)

Sources: various. Some is the result of my own research, some I found all over the web.