vad har margin: auto att göra med placeringen egentligen!?
Det du råkade snubbla på är en så kallad "överspecificering" av tabellens bredd där webbläsaren försöker göra det bästa av situationen enligt regler i "standard".
Så här ligger det (mycket grovt ;) ) till:
Din tabell "second" är ett block som skall ligga i ett block som är "jättebrett".
Tabellen second:s bredd är:
marginal + border + width + border + marginal
Eftersom du till att börja med inte valt några värden på "margin:" för tabellen "second" är dessa värden alltså antagligen förinställda till någon eller några pixlar. (webbläsarens grundinställningar eller arv från något omgivande block - eller kanske "0" från body ? ).
Detta innebär att du får en tabell som har alla värden fasta, men där värdena sammanslagna inte räcker till för att fylla ut hela vidden av det omgivande blocket (tabellcellen td.first).
Enligt CSS2-specen (se http://www.w3.org/TR/REC-CSS2/visudet.html#q6) skall då webbläsaren automatiskt göra om någon av marginalerna (höger rekommenderas i specen för "västerländsk" text, vänster för "österländsk" - dvs höger-till-vänster text) till "auto" så att blocket (tabellen "second") kan fylla ut hela bredden på omgivande block (td.first)
Du får alltså en situation som är (ungefär)
fast värde + fast värde + fast värde + fast värde + "det som är kvar till omgivande blocks kant"
som skapas av webbläsaren som följer specen.
auto-värdet är värdet "lagom fördelning av vad som är kvar" enligt samma avsnitt i specen.
Iom att du ställer in "margin:auto" på "second" så blir *alla* marginaler auto, och då säger specen att "det som är kvar" skall fördelas lika mellan de mått som är "auto", dvs du får:
kod]"Auto" + fast värde + fast värde + fast värde+ "auto"
vilket webbläsaren gör om till:
"det som är över genom 2" + fast värde + fast värde + fast värde + "det som är över genom 2"
vilket innebär att paketet "border + width + border" hamnar i mitten på sidan...
MSIE har (som många upptäckt) en del hyss för sig när det gäller förinställda värden för td som påverkar arv av vissa CSS-värden... Speciellt när man kör den i "Quirks" mode, vilket du gör iom valet av DOCTYPE...
Det är möjligt att det är något sådant som gör att det (felaktigt ;) ) funkar i MSIE utan att man behöver göra speciellt mycket, medans man måste vara medveten om att man måste lägga på margin:auto i NN/Moz ;)
Standarder är skoj - när man kommit in en bit i dem :e