Spartanicus said:
1) Floats are not part of the flow, this is something many people do not
fathom and is a common cause of confusion. This is especially an issue
when floating is used inappropriately (overlapping content, scrollbar
not appearing when it should, vertical displacement etc.).
You missed the single problem with the float "hack" that would affect the
example under question: The phone number would be linearised before the
email.
There would be no overlaping content, no missing scrollbars. Are you sure
you are not confusing float with absolute positioning.
2) UAs are riddled with float bugs.
Which do not trigger in this exemple. On the other hand the most widely used
browser does not support CSS tables. Also, the OP probablyl does not support
CSS tables. Why introduce heaps of CSS, including CSS hacks tofeed IE
something different (which that page you presented does not explain) and
other stuf that may just confuese him?
For that matter why does your example replace CSS tables with a float "hack"
for IE? Why not replace the CSS table with an HTML table which IE
understands perfectly, without any float problems, including the linearizing
problem? You like CSS tables but you dislike HTML tables so much you would
use float, which you state is a "hack"? Really now
Apparently you've not bothered to look at the document, it feeds a
proper method to CSS compliant UAs and a hack to IE.
And just where does the document explain this. It shows it certainly but it
does not explain it? I see a float: left but the OP would probably not
understand the significance of this, and the body> stuff that follows. In
fact that itself is a hack, the standard "hide CSS from IE" hack. You are
using a hack to use a, your term, hack
Another point, your page quite clearly states that "Opera 6 fails to render
this correctly". You provide a solution that you *know* breaks with a
certain browser?
Oh dear, you appear to have missed the rather important distinction
between CSS and HTML tables.
Oh dear indeed. I think you should go over to the CSS spec and read again
chapter 17, the table chapter.
Some random quotes from that chapter:
<quote>
The preceding example shows how CSS works with HTML 4.0 elements; in HTML
4.0, the semantics of the various table elements (TABLE, CAPTION, THEAD,
TBODY, TFOOT, COL, COLGROUP, TH, and TD) are well-defined. In other document
languages (such as XML applications), there may not be pre-defined table
elements. Therefore, CSS2 allows authors to "map" document language elements
to table elements via the 'display' property. For example, the following
rule makes the FOO element act like an HTML TABLE element and the BAR
element act like a CAPTION element:
</quote>
CSS tables allow an author to reproduce HTML tables.
<quote>
The CSS table model is based on the HTML 4.0 table mode
</quote>
Pretty much sums it up. CSS tables, being based on the HTML table model,
probably *are* HTML tables. That is there is nothing different between <span
style="display: table-cell"> and <td>, just as there is nothing different
between <span style="font-size: 2em; font-weight: bolder; display: block;
margin: .67em 0;"> and <h1>.
<quote>
Thus, the table model consists of tables, captions, rows, row groups,
columns, column groups, and cells.
</quote>
Now we know what the table model is and:
<quote>
The CSS model does not require that the document language include elements
that correspond to each of these components. For document languages (such as
XML applications) that do not have pre-defined table elements, authors must
map document language elements to table elements; this is done with the
'display' property. The following 'display' values assign table semantics to
an arbitrary element:
</quote>
OK, if we, in our XML application, do not have the predefined <table>, <tr>,
<td> etc elements we build them with CSS. That is I, in my XML application,
actually build a <td> element that is behaves exactly the same as the HTML
<td> element. Conversly because our language, (X)HTML, *does* have these
elements so we don't have to build them with CSS.
Throughout the rest of the chapter there are many examples. The CSS
exampless show how to build the above <td> etc elements.
The (X)HTML examples exclusivly use <table> etc. They do not use something
like <li> and li {display: table-cell}. They use <table> because the
language that *this* CSS is acting on is HTML.
I restate my prior assertion: CSS tables *are* HTML tables. There is no
difference between the two.
I would dismiss your whole page and replace it with a simple HTML table.