vertical-align funkar enligt CSS2 bara på två typer av element:
Dels "inline-taggar" (som t.ex. span) där den anger hur innehållet skall justeras i höjd gentemot gentemot typsnittets baslinje eller "inline-blockets" kanter,
och dels i "table cells" - och det är antagligen därifrån många av oss vant sig vid dess beteende i "block-liknande" omgivningar ;)
... och stödet för "display:table-cell", som annars skulle kunna vara ett bra alternativ eftersom det enligt specen skall få din div att bete sig som en tabellcell (inklusive vertikalcentreringsmöjligheterna), är inte är helt hundraprocentigt (ursäkta ordvitsen) infört det heller i alla dagens webbläsare....
Men det är klart - beroende på vad du vill kunna göra (och om du kan uppskatta innehållets totalhöjd eller ej) kan du kanske ha användning för genvägen med "negativ toppmarginal"?
En variant som jag haft liggandes oanvänd så jag vet inte om det fungerar i IE7.
Men som du kan se så är det nästan en helt egen kodning för IE...
Om någon vill testa... så är hel fil med.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test textcentrering</title>
<style type="text/css">
/* för alla utom IE */
#nonie {width:350px; height:400px;
background:#eee; border:1px solid #777;
text-align:center; display:
table-cell; vertical-align:middle;
}
div.holder p {margin:0 auto; }
</style>
<!--[if IE]>
<style type="text/css">
/* vertical align for IE */
#baraiekant {width:0; height:100%; display:inline-block; vertical-align:middle;}
#baraie {text-align:center; width:100%; display:inline-block; vertical-align:middle;}
</style>
<![endif]-->
</head>
<body>
<div id="nonie">
<span id="baraiekant"></span>
<span id="baraie"><p>Text i mitten...<br>halloj!</p></span>
</div>
</body>
</html>
260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849