Toon posts:

[css] relative height vraagstuk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Naar aanleiding van een topic van dajando heb ik even een zeer eenvoudige pagina opgezet met de volgende source:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<title>CSS</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1" />
</head>

<body>

<div id="container">Middle align?</div>

</body>
</html>

en deze stylesheet:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
body {
    height: 100%;
    padding: 0px;
    margin: 0px;
    text-align: center;
    vertical-align: middle;
}

#container {
    background: #eee;
    width: 30%;
    border: 1px solid #666;
    height: 100%;
    margin: auto;
}

in de 3 grote browsers is dit het resultaat:

Afbeeldingslocatie: http://f00l.endoria.net/shit/css_prob1.gif

Zoals je ziet geven opera en msie hetzelfde resultaat; alleen mozilla neemt de height niet relative t.o.v. het parent element, zoals in de W3C CSS2 specs staat beschreven.

Met de volgende stylesheet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
body {
    height: 100%;
    padding: 0px;
    margin: 0px;
    text-align: center;
    vertical-align: middle;
}

#container {
    background: #eee;
    width: 30%;
    border: 1px solid #666;
    height: 60%;
    margin: auto;
}

is dit het resultaat:

Afbeeldingslocatie: http://f00l.endoria.net/shit/css_prob2.gif

Opera en msie geven weer hetzelfde resultaat, de div heeft een hoogte van 60% t.o.v. het containing element, nl. de body. Mozilla geeft nog steeds koppig dezelfde hoogte aan de div.
Wat ik echter bij deze stylesheet zou verwachten, is dat de div ook nog eens vertikaal gecentreerd zou zijn, wat bij geen van de browsers het geval is, en dat terwijl de body toch een vertical-align: middle; heeft meegekregen.

Mijn vraag: welke browser (if any) geeft de code weer zoals deze geïnterpreteerd zou moeten worden, en waarom gaan ze bij vertical-align allemaal de mist in?

2e vraag: zijn er workarounds voor? in die zin dat mozilla de eerste pagina weergeeft met een goede hoogte voor de div, en dat de drie browsers de div in het tweede voorbeeld ook vertikaal centreren?


Ik vraag hier dus niet naar javascript-oplossingen; die zijn mij bekend. Ik vraag mij gewoon af waarom dingen hier niet gaan zoals je zou verwachten :)

[ Voor 6% gewijzigd door Verwijderd op 18-12-2002 17:35 . Reden: regels tijdig afgebroken ]


Verwijderd

Waarom zouden ze vertikaal gecentreerd moeten zijn? Vanwege vertical-align? Dat werkt dus alleen op tabelcellen en inline-level elementen.

De oplossing is trouwens de hoogte van het html element op 100% zetten. Als je zo'n probleem wilt uitzoeken, geef dan je body een border, en zie het probleem.

Technisch gezien een afschuwelijke bug, als je de border en background-color niet erg consequent zijn.

Verwijderd

Topicstarter
Verwijderd schreef op 18 December 2002 @ 18:41:
Waarom zouden ze vertikaal gecentreerd moeten zijn? Vanwege vertical-align? Dat werkt dus alleen op tabelcellen en inline-level elementen.
woops |:( m'n huiswerk niet goed gedaan...

Ik zie het al ja. Ook mozilla geeft met html { height: 100%; } de hoogte van de div goed weer. Is er buiten scripting om nog een methode om verticaal centreren te bewerkstelligen? Als ik de body een padding-top en padding-bottom meegeef doet msie het zoals ik wil, maar opera en mozilla gaan over hun nek.

Verwijderd

Verwijderd schreef op 18 December 2002 @ 18:52:
Ik zie het al ja. Ook mozilla geeft met html { height: 100%; } de hoogte van de div goed weer. Is er buiten scripting om nog een methode om verticaal centreren te bewerkstelligen? Als ik de body een padding-top en padding-bottom meegeef doet msie het zoals ik wil, maar opera en mozilla gaan over hun nek.
Jahoor, bekijk deze oplossing van milov.nl eens.